aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated')
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/generated3valued.vql_deactivated32522
1 files changed, 32522 insertions, 0 deletions
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
index 88497c64..f02c64b0 100644
--- 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
@@ -31731,3 +31731,32525 @@ pattern refineRelation_value_attribute_EStringToStringMapEntry(
31731 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); 31731 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31732 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to); 31732 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
31733} 31733}
31734import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
31735import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
31736import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
31737
31738//////////
31739// 0. Util
31740//////////
31741private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
31742 PartialInterpretation.problem(interpretation,problem);
31743}
31744
31745/////////////////////////
31746// 0.1 Existence
31747/////////////////////////
31748private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31749 find interpretation(problem,interpretation);
31750 LogicProblem.elements(problem,element);
31751} or {
31752 find interpretation(problem,interpretation);
31753 PartialInterpretation.newElements(interpretation,element);
31754}
31755
31756private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31757 find mustExist(problem,interpretation,element);
31758} or {
31759 find interpretation(problem,interpretation);
31760 neg find elementCloseWorld(element);
31761 PartialInterpretation.openWorldElements(interpretation,element);
31762}
31763
31764private pattern elementCloseWorld(element:DefinedElement) {
31765 PartialInterpretation.openWorldElements(i,element);
31766 PartialInterpretation.maxNewElements(i,0);
31767} or {
31768 Scope.targetTypeInterpretation(scope,interpretation);
31769 PartialTypeInterpratation.elements(interpretation,element);
31770 Scope.maxNewElements(scope,0);
31771}
31772
31773////////////////////////
31774// 0.2 Equivalence
31775////////////////////////
31776pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
31777 find mayExist(problem,interpretation,a);
31778 find mayExist(problem,interpretation,b);
31779 a == b;
31780}
31781
31782////////////////////////
31783// 0.3 Required Patterns by TypeIndexer
31784////////////////////////
31785private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
31786 find interpretation(problem,interpretation);
31787 LogicProblem.types(problem,type);
31788 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
31789 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31790}
31791
31792private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
31793 find interpretation(problem,interpretation);
31794 LogicProblem.types(problem,type);
31795 TypeDefinition.elements(type,element);
31796} or {
31797 find interpretation(problem,interpretation);
31798 find typeInterpretation(problem,interpretation,type,typeInterpretation);
31799 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
31800}
31801
31802private pattern isPrimitive(element: PrimitiveElement) {
31803 PrimitiveElement(element);
31804}
31805
31806//////////
31807// 1. Problem-Specific Base Indexers
31808//////////
31809// 1.1 Type Indexers
31810//////////
31811// 1.1.1 primitive Type Indexers
31812//////////
31813
31814//////////
31815// 1.1.2 domain-specific Type Indexers
31816//////////
31817/**
31818 * An element must be an instance of type "FunctionalElement class".
31819 */
31820private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31821 Type.name(type,"FunctionalElement class");
31822 find directInstanceOf(problem,interpretation,element,type);
31823}
31824private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31825 find interpretation(problem,interpretation);
31826 PartialInterpretation.scopes(interpretation,scope);
31827 Scope.targetTypeInterpretation(scope,typeInterpretation);
31828 Scope.maxNewElements(scope,0);
31829 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31830 Type.name(type,"FunctionalElement class");
31831}
31832
31833/**
31834 * An element may be an instance of type "FunctionalElement class".
31835 */
31836private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31837{
31838 find interpretation(problem,interpretation);
31839 PartialInterpretation.newElements(interpretation,element);
31840 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31841 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31842 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31843 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31844 neg find mustInstanceOfFunction_class(problem,interpretation,element);
31845 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31846 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
31847 neg find isPrimitive(element);
31848} or {
31849 find interpretation(problem,interpretation);
31850 PartialInterpretation.openWorldElements(interpretation,element);
31851 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31852 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31853 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31854 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31855 neg find mustInstanceOfFunction_class(problem,interpretation,element);
31856 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31857 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
31858 neg find isPrimitive(element);
31859} or
31860{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
31861/**
31862 * An element must be an instance of type "FunctionalArchitectureModel class".
31863 */
31864private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31865 Type.name(type,"FunctionalArchitectureModel class");
31866 find directInstanceOf(problem,interpretation,element,type);
31867}
31868private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31869 find interpretation(problem,interpretation);
31870 PartialInterpretation.scopes(interpretation,scope);
31871 Scope.targetTypeInterpretation(scope,typeInterpretation);
31872 Scope.maxNewElements(scope,0);
31873 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31874 Type.name(type,"FunctionalArchitectureModel class");
31875}
31876
31877/**
31878 * An element may be an instance of type "FunctionalArchitectureModel class".
31879 */
31880private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31881{
31882 find interpretation(problem,interpretation);
31883 PartialInterpretation.newElements(interpretation,element);
31884 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31885 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31886 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31887 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31888 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
31889 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31890 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
31891 neg find isPrimitive(element);
31892} or {
31893 find interpretation(problem,interpretation);
31894 PartialInterpretation.openWorldElements(interpretation,element);
31895 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31896 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31897 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31898 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31899 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
31900 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31901 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
31902 neg find isPrimitive(element);
31903} or
31904{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
31905/**
31906 * An element must be an instance of type "Function class".
31907 */
31908private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31909 Type.name(type,"Function class");
31910 find directInstanceOf(problem,interpretation,element,type);
31911}
31912private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31913 find interpretation(problem,interpretation);
31914 PartialInterpretation.scopes(interpretation,scope);
31915 Scope.targetTypeInterpretation(scope,typeInterpretation);
31916 Scope.maxNewElements(scope,0);
31917 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31918 Type.name(type,"Function class");
31919}
31920
31921/**
31922 * An element may be an instance of type "Function class".
31923 */
31924private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31925{
31926 find interpretation(problem,interpretation);
31927 PartialInterpretation.newElements(interpretation,element);
31928 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31929 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31930 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31931 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31932 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31933 neg find scopeDisallowsNewFunction_class(problem, interpretation);
31934 neg find isPrimitive(element);
31935} or {
31936 find interpretation(problem,interpretation);
31937 PartialInterpretation.openWorldElements(interpretation,element);
31938 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31939 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31940 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
31941 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31942 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31943 neg find scopeDisallowsNewFunction_class(problem, interpretation);
31944 neg find isPrimitive(element);
31945} or
31946{ find mustInstanceOfFunction_class(problem,interpretation,element); }
31947/**
31948 * An element must be an instance of type "FAMTerminator class".
31949 */
31950private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31951 Type.name(type,"FAMTerminator class");
31952 find directInstanceOf(problem,interpretation,element,type);
31953}
31954private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31955 find interpretation(problem,interpretation);
31956 PartialInterpretation.scopes(interpretation,scope);
31957 Scope.targetTypeInterpretation(scope,typeInterpretation);
31958 Scope.maxNewElements(scope,0);
31959 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
31960 Type.name(type,"FAMTerminator class");
31961}
31962
31963/**
31964 * An element may be an instance of type "FAMTerminator class".
31965 */
31966private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
31967{
31968 find interpretation(problem,interpretation);
31969 PartialInterpretation.newElements(interpretation,element);
31970 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31971 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31972 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31973 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31974 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31975 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
31976 neg find isPrimitive(element);
31977} or {
31978 find interpretation(problem,interpretation);
31979 PartialInterpretation.openWorldElements(interpretation,element);
31980 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
31981 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
31982 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
31983 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
31984 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
31985 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
31986 neg find isPrimitive(element);
31987} or
31988{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
31989/**
31990 * An element must be an instance of type "InformationLink class".
31991 */
31992private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
31993 Type.name(type,"InformationLink class");
31994 find directInstanceOf(problem,interpretation,element,type);
31995}
31996private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
31997 find interpretation(problem,interpretation);
31998 PartialInterpretation.scopes(interpretation,scope);
31999 Scope.targetTypeInterpretation(scope,typeInterpretation);
32000 Scope.maxNewElements(scope,0);
32001 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32002 Type.name(type,"InformationLink class");
32003}
32004
32005/**
32006 * An element may be an instance of type "InformationLink class".
32007 */
32008private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32009{
32010 find interpretation(problem,interpretation);
32011 PartialInterpretation.newElements(interpretation,element);
32012 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32013 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32014 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32015 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32016 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32017 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
32018 neg find isPrimitive(element);
32019} or {
32020 find interpretation(problem,interpretation);
32021 PartialInterpretation.openWorldElements(interpretation,element);
32022 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32023 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32024 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32025 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32026 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32027 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
32028 neg find isPrimitive(element);
32029} or
32030{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
32031/**
32032 * An element must be an instance of type "FunctionalInterface class".
32033 */
32034private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32035 Type.name(type,"FunctionalInterface class");
32036 find directInstanceOf(problem,interpretation,element,type);
32037}
32038private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32039 find interpretation(problem,interpretation);
32040 PartialInterpretation.scopes(interpretation,scope);
32041 Scope.targetTypeInterpretation(scope,typeInterpretation);
32042 Scope.maxNewElements(scope,0);
32043 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32044 Type.name(type,"FunctionalInterface class");
32045}
32046
32047/**
32048 * An element may be an instance of type "FunctionalInterface class".
32049 */
32050private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32051{
32052 find interpretation(problem,interpretation);
32053 PartialInterpretation.newElements(interpretation,element);
32054 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32055 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32056 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32057 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32058 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32059 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
32060 neg find isPrimitive(element);
32061} or {
32062 find interpretation(problem,interpretation);
32063 PartialInterpretation.openWorldElements(interpretation,element);
32064 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32065 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32066 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32067 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32068 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32069 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
32070 neg find isPrimitive(element);
32071} or
32072{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
32073/**
32074 * An element must be an instance of type "FunctionalInput class".
32075 */
32076private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32077 Type.name(type,"FunctionalInput class");
32078 find directInstanceOf(problem,interpretation,element,type);
32079}
32080private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32081 find interpretation(problem,interpretation);
32082 PartialInterpretation.scopes(interpretation,scope);
32083 Scope.targetTypeInterpretation(scope,typeInterpretation);
32084 Scope.maxNewElements(scope,0);
32085 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32086 Type.name(type,"FunctionalInput class");
32087}
32088
32089/**
32090 * An element may be an instance of type "FunctionalInput class".
32091 */
32092private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32093{
32094 find interpretation(problem,interpretation);
32095 PartialInterpretation.newElements(interpretation,element);
32096 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32097 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32098 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32099 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32100 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32101 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32102 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
32103 neg find isPrimitive(element);
32104} or {
32105 find interpretation(problem,interpretation);
32106 PartialInterpretation.openWorldElements(interpretation,element);
32107 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32108 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32109 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32110 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32111 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32112 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32113 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
32114 neg find isPrimitive(element);
32115} or
32116{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
32117/**
32118 * An element must be an instance of type "FunctionalOutput class".
32119 */
32120private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32121 Type.name(type,"FunctionalOutput class");
32122 find directInstanceOf(problem,interpretation,element,type);
32123}
32124private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32125 find interpretation(problem,interpretation);
32126 PartialInterpretation.scopes(interpretation,scope);
32127 Scope.targetTypeInterpretation(scope,typeInterpretation);
32128 Scope.maxNewElements(scope,0);
32129 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32130 Type.name(type,"FunctionalOutput class");
32131}
32132
32133/**
32134 * An element may be an instance of type "FunctionalOutput class".
32135 */
32136private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32137{
32138 find interpretation(problem,interpretation);
32139 PartialInterpretation.newElements(interpretation,element);
32140 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32141 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32142 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32143 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32144 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32145 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32146 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
32147 neg find isPrimitive(element);
32148} or {
32149 find interpretation(problem,interpretation);
32150 PartialInterpretation.openWorldElements(interpretation,element);
32151 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32152 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32153 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32154 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32155 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32156 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32157 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
32158 neg find isPrimitive(element);
32159} or
32160{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
32161/**
32162 * An element must be an instance of type "FunctionalData class".
32163 */
32164private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32165 Type.name(type,"FunctionalData class");
32166 find directInstanceOf(problem,interpretation,element,type);
32167}
32168private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
32169 find interpretation(problem,interpretation);
32170 PartialInterpretation.scopes(interpretation,scope);
32171 Scope.targetTypeInterpretation(scope,typeInterpretation);
32172 Scope.maxNewElements(scope,0);
32173 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32174 Type.name(type,"FunctionalData class");
32175}
32176
32177/**
32178 * An element may be an instance of type "FunctionalData class".
32179 */
32180private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32181{
32182 find interpretation(problem,interpretation);
32183 PartialInterpretation.newElements(interpretation,element);
32184 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32185 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32186 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32187 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32188 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32189 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32190 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32191 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
32192 neg find isPrimitive(element);
32193} or {
32194 find interpretation(problem,interpretation);
32195 PartialInterpretation.openWorldElements(interpretation,element);
32196 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32197 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32198 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32199 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
32200 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32201 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
32202 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
32203 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
32204 neg find isPrimitive(element);
32205} or
32206{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
32207/**
32208 * An element must be an instance of type "FunctionType enum".
32209 */
32210private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32211 Type.name(type,"FunctionType enum");
32212 find directInstanceOf(problem,interpretation,element,type);
32213}
32214private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
32215 find interpretation(problem,interpretation);
32216 PartialInterpretation.scopes(interpretation,scope);
32217 Scope.targetTypeInterpretation(scope,typeInterpretation);
32218 Scope.maxNewElements(scope,0);
32219 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32220 Type.name(type,"FunctionType enum");
32221}
32222
32223/**
32224 * An element may be an instance of type "FunctionType enum".
32225 */
32226private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32227{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
32228/**
32229 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
32230 */
32231private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32232 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
32233 find directInstanceOf(problem,interpretation,element,type);
32234}
32235private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
32236 find interpretation(problem,interpretation);
32237 PartialInterpretation.scopes(interpretation,scope);
32238 Scope.targetTypeInterpretation(scope,typeInterpretation);
32239 Scope.maxNewElements(scope,0);
32240 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32241 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
32242}
32243
32244/**
32245 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
32246 */
32247private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32248{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
32249/**
32250 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
32251 */
32252private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
32253 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
32254 find directInstanceOf(problem,interpretation,element,type);
32255}
32256private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
32257 find interpretation(problem,interpretation);
32258 PartialInterpretation.scopes(interpretation,scope);
32259 Scope.targetTypeInterpretation(scope,typeInterpretation);
32260 Scope.maxNewElements(scope,0);
32261 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
32262 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
32263}
32264
32265/**
32266 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
32267 */
32268private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
32269{
32270 find interpretation(problem,interpretation);
32271 PartialInterpretation.newElements(interpretation,element);
32272 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32273 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32274 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32275 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32276 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32277 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
32278 neg find isPrimitive(element);
32279} or {
32280 find interpretation(problem,interpretation);
32281 PartialInterpretation.openWorldElements(interpretation,element);
32282 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
32283 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
32284 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
32285 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
32286 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
32287 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
32288 neg find isPrimitive(element);
32289} or
32290{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
32291
32292//////////
32293// 1.2 Relation Declaration Indexers
32294//////////
32295/**
32296 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
32297 */
32298private pattern mustInRelationinterface_reference_FunctionalElement(
32299 problem:LogicProblem, interpretation:PartialInterpretation,
32300 source: DefinedElement, target:DefinedElement)
32301{
32302 find interpretation(problem,interpretation);
32303 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32304 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
32305 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32306 BinaryElementRelationLink.param1(link,source);
32307 BinaryElementRelationLink.param2(link,target);
32308}
32309/**
32310 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
32311 */
32312private pattern mayInRelationinterface_reference_FunctionalElement(
32313 problem:LogicProblem, interpretation:PartialInterpretation,
32314 source: DefinedElement, target:DefinedElement)
32315{
32316 find interpretation(problem,interpretation);
32317 // The two endpoint of the link have to exist
32318 find mayExist(problem, interpretation, source);
32319 find mayExist(problem, interpretation, target);
32320 // Type consistency
32321 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
32322 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
32323 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32324 // the upper bound of the multiplicity should be considered.
32325 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
32326 check(numberOfExistingReferences < 1);
32327 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32328 // the upper bound of the opposite reference multiplicity should be considered.
32329 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
32330 check(numberOfExistingOppositeReferences < 1);
32331 // The reference is containment, then a new reference cannot be create if:
32332 // 1. Multiple parents
32333 neg find mustContains4(problem,interpretation,_,target);
32334 // 2. Circle in the containment hierarchy
32335 neg find mustTransitiveContains(source,target);
32336} or {
32337 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
32338}
32339/**
32340 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
32341 */
32342private pattern mustInRelationmodel_reference_FunctionalElement(
32343 problem:LogicProblem, interpretation:PartialInterpretation,
32344 source: DefinedElement, target:DefinedElement)
32345{
32346 find interpretation(problem,interpretation);
32347 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32348 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
32349 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32350 BinaryElementRelationLink.param1(link,source);
32351 BinaryElementRelationLink.param2(link,target);
32352}
32353/**
32354 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
32355 */
32356private pattern mayInRelationmodel_reference_FunctionalElement(
32357 problem:LogicProblem, interpretation:PartialInterpretation,
32358 source: DefinedElement, target:DefinedElement)
32359{
32360 find interpretation(problem,interpretation);
32361 // The two endpoint of the link have to exist
32362 find mayExist(problem, interpretation, source);
32363 find mayExist(problem, interpretation, target);
32364 // Type consistency
32365 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
32366 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
32367 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32368 // the upper bound of the multiplicity should be considered.
32369 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
32370 check(numberOfExistingReferences < 1);
32371} or {
32372 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
32373}
32374/**
32375 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
32376 */
32377private pattern mustInRelationparent_reference_FunctionalElement(
32378 problem:LogicProblem, interpretation:PartialInterpretation,
32379 source: DefinedElement, target:DefinedElement)
32380{
32381 find interpretation(problem,interpretation);
32382 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32383 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
32384 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32385 BinaryElementRelationLink.param1(link,source);
32386 BinaryElementRelationLink.param2(link,target);
32387}
32388/**
32389 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
32390 */
32391private pattern mayInRelationparent_reference_FunctionalElement(
32392 problem:LogicProblem, interpretation:PartialInterpretation,
32393 source: DefinedElement, target:DefinedElement)
32394{
32395 find interpretation(problem,interpretation);
32396 // The two endpoint of the link have to exist
32397 find mayExist(problem, interpretation, source);
32398 find mayExist(problem, interpretation, target);
32399 // Type consistency
32400 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
32401 find mayInstanceOfFunction_class(problem,interpretation,target);
32402 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32403 // the upper bound of the multiplicity should be considered.
32404 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
32405 check(numberOfExistingReferences < 1);
32406 // The eOpposite of the reference is containment, then a referene cannot be created if
32407 // 1. Multiple parents
32408 neg find mustContains4(problem,interpretation,source,_);
32409 // 2. Circle in the containment hierarchy
32410 neg find mustTransitiveContains(source,target);
32411} or {
32412 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
32413}
32414/**
32415 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
32416 */
32417private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
32418 problem:LogicProblem, interpretation:PartialInterpretation,
32419 source: DefinedElement, target:DefinedElement)
32420{
32421 find interpretation(problem,interpretation);
32422 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32423 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
32424 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32425 BinaryElementRelationLink.param1(link,source);
32426 BinaryElementRelationLink.param2(link,target);
32427}
32428/**
32429 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
32430 */
32431private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
32432 problem:LogicProblem, interpretation:PartialInterpretation,
32433 source: DefinedElement, target:DefinedElement)
32434{
32435 find interpretation(problem,interpretation);
32436 // The two endpoint of the link have to exist
32437 find mayExist(problem, interpretation, source);
32438 find mayExist(problem, interpretation, target);
32439 // Type consistency
32440 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
32441 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
32442 // The reference is containment, then a new reference cannot be create if:
32443 // 1. Multiple parents
32444 neg find mustContains4(problem,interpretation,_,target);
32445 // 2. Circle in the containment hierarchy
32446 neg find mustTransitiveContains(source,target);
32447} or {
32448 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
32449}
32450/**
32451 * Matcher for detecting tuples t where []subElements reference Function(source,target)
32452 */
32453private pattern mustInRelationsubElements_reference_Function(
32454 problem:LogicProblem, interpretation:PartialInterpretation,
32455 source: DefinedElement, target:DefinedElement)
32456{
32457 find interpretation(problem,interpretation);
32458 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32459 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
32460 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32461 BinaryElementRelationLink.param1(link,source);
32462 BinaryElementRelationLink.param2(link,target);
32463}
32464/**
32465 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
32466 */
32467private pattern mayInRelationsubElements_reference_Function(
32468 problem:LogicProblem, interpretation:PartialInterpretation,
32469 source: DefinedElement, target:DefinedElement)
32470{
32471 find interpretation(problem,interpretation);
32472 // The two endpoint of the link have to exist
32473 find mayExist(problem, interpretation, source);
32474 find mayExist(problem, interpretation, target);
32475 // Type consistency
32476 find mayInstanceOfFunction_class(problem,interpretation,source);
32477 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
32478 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32479 // the upper bound of the opposite reference multiplicity should be considered.
32480 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
32481 check(numberOfExistingOppositeReferences < 1);
32482 // The reference is containment, then a new reference cannot be create if:
32483 // 1. Multiple parents
32484 neg find mustContains4(problem,interpretation,_,target);
32485 // 2. Circle in the containment hierarchy
32486 neg find mustTransitiveContains(source,target);
32487} or {
32488 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
32489}
32490/**
32491 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
32492 */
32493private pattern mustInRelationdata_reference_FAMTerminator(
32494 problem:LogicProblem, interpretation:PartialInterpretation,
32495 source: DefinedElement, target:DefinedElement)
32496{
32497 find interpretation(problem,interpretation);
32498 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32499 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
32500 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32501 BinaryElementRelationLink.param1(link,source);
32502 BinaryElementRelationLink.param2(link,target);
32503}
32504/**
32505 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
32506 */
32507private pattern mayInRelationdata_reference_FAMTerminator(
32508 problem:LogicProblem, interpretation:PartialInterpretation,
32509 source: DefinedElement, target:DefinedElement)
32510{
32511 find interpretation(problem,interpretation);
32512 // The two endpoint of the link have to exist
32513 find mayExist(problem, interpretation, source);
32514 find mayExist(problem, interpretation, target);
32515 // Type consistency
32516 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
32517 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
32518 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32519 // the upper bound of the multiplicity should be considered.
32520 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
32521 check(numberOfExistingReferences < 1);
32522 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32523 // the upper bound of the opposite reference multiplicity should be considered.
32524 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
32525 check(numberOfExistingOppositeReferences < 1);
32526 // The eOpposite of the reference is containment, then a referene cannot be created if
32527 // 1. Multiple parents
32528 neg find mustContains4(problem,interpretation,source,_);
32529 // 2. Circle in the containment hierarchy
32530 neg find mustTransitiveContains(source,target);
32531} or {
32532 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
32533}
32534/**
32535 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
32536 */
32537private pattern mustInRelationfrom_reference_InformationLink(
32538 problem:LogicProblem, interpretation:PartialInterpretation,
32539 source: DefinedElement, target:DefinedElement)
32540{
32541 find interpretation(problem,interpretation);
32542 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32543 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
32544 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32545 BinaryElementRelationLink.param1(link,source);
32546 BinaryElementRelationLink.param2(link,target);
32547}
32548/**
32549 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
32550 */
32551private pattern mayInRelationfrom_reference_InformationLink(
32552 problem:LogicProblem, interpretation:PartialInterpretation,
32553 source: DefinedElement, target:DefinedElement)
32554{
32555 find interpretation(problem,interpretation);
32556 // The two endpoint of the link have to exist
32557 find mayExist(problem, interpretation, source);
32558 find mayExist(problem, interpretation, target);
32559 // Type consistency
32560 find mayInstanceOfInformationLink_class(problem,interpretation,source);
32561 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
32562 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32563 // the upper bound of the multiplicity should be considered.
32564 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
32565 check(numberOfExistingReferences < 1);
32566 // The eOpposite of the reference is containment, then a referene cannot be created if
32567 // 1. Multiple parents
32568 neg find mustContains4(problem,interpretation,source,_);
32569 // 2. Circle in the containment hierarchy
32570 neg find mustTransitiveContains(source,target);
32571} or {
32572 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
32573}
32574/**
32575 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
32576 */
32577private pattern mustInRelationto_reference_InformationLink(
32578 problem:LogicProblem, interpretation:PartialInterpretation,
32579 source: DefinedElement, target:DefinedElement)
32580{
32581 find interpretation(problem,interpretation);
32582 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32583 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
32584 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32585 BinaryElementRelationLink.param1(link,source);
32586 BinaryElementRelationLink.param2(link,target);
32587}
32588/**
32589 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
32590 */
32591private pattern mayInRelationto_reference_InformationLink(
32592 problem:LogicProblem, interpretation:PartialInterpretation,
32593 source: DefinedElement, target:DefinedElement)
32594{
32595 find interpretation(problem,interpretation);
32596 // The two endpoint of the link have to exist
32597 find mayExist(problem, interpretation, source);
32598 find mayExist(problem, interpretation, target);
32599 // Type consistency
32600 find mayInstanceOfInformationLink_class(problem,interpretation,source);
32601 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
32602 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32603 // the upper bound of the multiplicity should be considered.
32604 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
32605 check(numberOfExistingReferences < 1);
32606} or {
32607 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
32608}
32609/**
32610 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
32611 */
32612private pattern mustInRelationdata_reference_FunctionalInterface(
32613 problem:LogicProblem, interpretation:PartialInterpretation,
32614 source: DefinedElement, target:DefinedElement)
32615{
32616 find interpretation(problem,interpretation);
32617 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32618 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
32619 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32620 BinaryElementRelationLink.param1(link,source);
32621 BinaryElementRelationLink.param2(link,target);
32622}
32623/**
32624 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
32625 */
32626private pattern mayInRelationdata_reference_FunctionalInterface(
32627 problem:LogicProblem, interpretation:PartialInterpretation,
32628 source: DefinedElement, target:DefinedElement)
32629{
32630 find interpretation(problem,interpretation);
32631 // The two endpoint of the link have to exist
32632 find mayExist(problem, interpretation, source);
32633 find mayExist(problem, interpretation, target);
32634 // Type consistency
32635 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
32636 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
32637 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32638 // the upper bound of the opposite reference multiplicity should be considered.
32639 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
32640 check(numberOfExistingOppositeReferences < 1);
32641 // The reference is containment, then a new reference cannot be create if:
32642 // 1. Multiple parents
32643 neg find mustContains4(problem,interpretation,_,target);
32644 // 2. Circle in the containment hierarchy
32645 neg find mustTransitiveContains(source,target);
32646} or {
32647 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
32648}
32649/**
32650 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
32651 */
32652private pattern mustInRelationelement_reference_FunctionalInterface(
32653 problem:LogicProblem, interpretation:PartialInterpretation,
32654 source: DefinedElement, target:DefinedElement)
32655{
32656 find interpretation(problem,interpretation);
32657 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32658 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
32659 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32660 BinaryElementRelationLink.param1(link,source);
32661 BinaryElementRelationLink.param2(link,target);
32662}
32663/**
32664 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
32665 */
32666private pattern mayInRelationelement_reference_FunctionalInterface(
32667 problem:LogicProblem, interpretation:PartialInterpretation,
32668 source: DefinedElement, target:DefinedElement)
32669{
32670 find interpretation(problem,interpretation);
32671 // The two endpoint of the link have to exist
32672 find mayExist(problem, interpretation, source);
32673 find mayExist(problem, interpretation, target);
32674 // Type consistency
32675 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
32676 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
32677 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32678 // the upper bound of the multiplicity should be considered.
32679 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
32680 check(numberOfExistingReferences < 1);
32681 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32682 // the upper bound of the opposite reference multiplicity should be considered.
32683 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
32684 check(numberOfExistingOppositeReferences < 1);
32685 // The eOpposite of the reference is containment, then a referene cannot be created if
32686 // 1. Multiple parents
32687 neg find mustContains4(problem,interpretation,source,_);
32688 // 2. Circle in the containment hierarchy
32689 neg find mustTransitiveContains(source,target);
32690} or {
32691 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
32692}
32693/**
32694 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
32695 */
32696private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
32697 problem:LogicProblem, interpretation:PartialInterpretation,
32698 source: DefinedElement, target:DefinedElement)
32699{
32700 find interpretation(problem,interpretation);
32701 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32702 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
32703 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32704 BinaryElementRelationLink.param1(link,source);
32705 BinaryElementRelationLink.param2(link,target);
32706}
32707/**
32708 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
32709 */
32710private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
32711 problem:LogicProblem, interpretation:PartialInterpretation,
32712 source: DefinedElement, target:DefinedElement)
32713{
32714 find interpretation(problem,interpretation);
32715 // The two endpoint of the link have to exist
32716 find mayExist(problem, interpretation, source);
32717 find mayExist(problem, interpretation, target);
32718 // Type consistency
32719 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
32720 find mayInstanceOfInformationLink_class(problem,interpretation,target);
32721 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32722 // the upper bound of the opposite reference multiplicity should be considered.
32723 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
32724 check(numberOfExistingOppositeReferences < 1);
32725} or {
32726 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
32727}
32728/**
32729 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
32730 */
32731private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
32732 problem:LogicProblem, interpretation:PartialInterpretation,
32733 source: DefinedElement, target:DefinedElement)
32734{
32735 find interpretation(problem,interpretation);
32736 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32737 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
32738 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32739 BinaryElementRelationLink.param1(link,source);
32740 BinaryElementRelationLink.param2(link,target);
32741}
32742/**
32743 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
32744 */
32745private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
32746 problem:LogicProblem, interpretation:PartialInterpretation,
32747 source: DefinedElement, target:DefinedElement)
32748{
32749 find interpretation(problem,interpretation);
32750 // The two endpoint of the link have to exist
32751 find mayExist(problem, interpretation, source);
32752 find mayExist(problem, interpretation, target);
32753 // Type consistency
32754 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
32755 find mayInstanceOfInformationLink_class(problem,interpretation,target);
32756 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32757 // the upper bound of the opposite reference multiplicity should be considered.
32758 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
32759 check(numberOfExistingOppositeReferences < 1);
32760 // The reference is containment, then a new reference cannot be create if:
32761 // 1. Multiple parents
32762 neg find mustContains4(problem,interpretation,_,target);
32763 // 2. Circle in the containment hierarchy
32764 neg find mustTransitiveContains(source,target);
32765} or {
32766 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
32767}
32768/**
32769 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
32770 */
32771private pattern mustInRelationterminator_reference_FunctionalData(
32772 problem:LogicProblem, interpretation:PartialInterpretation,
32773 source: DefinedElement, target:DefinedElement)
32774{
32775 find interpretation(problem,interpretation);
32776 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32777 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
32778 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32779 BinaryElementRelationLink.param1(link,source);
32780 BinaryElementRelationLink.param2(link,target);
32781}
32782/**
32783 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
32784 */
32785private pattern mayInRelationterminator_reference_FunctionalData(
32786 problem:LogicProblem, interpretation:PartialInterpretation,
32787 source: DefinedElement, target:DefinedElement)
32788{
32789 find interpretation(problem,interpretation);
32790 // The two endpoint of the link have to exist
32791 find mayExist(problem, interpretation, source);
32792 find mayExist(problem, interpretation, target);
32793 // Type consistency
32794 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
32795 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
32796 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32797 // the upper bound of the multiplicity should be considered.
32798 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
32799 check(numberOfExistingReferences < 1);
32800 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
32801 // the upper bound of the opposite reference multiplicity should be considered.
32802 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
32803 check(numberOfExistingOppositeReferences < 1);
32804 // The reference is containment, then a new reference cannot be create if:
32805 // 1. Multiple parents
32806 neg find mustContains4(problem,interpretation,_,target);
32807 // 2. Circle in the containment hierarchy
32808 neg find mustTransitiveContains(source,target);
32809} or {
32810 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
32811}
32812/**
32813 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
32814 */
32815private pattern mustInRelationinterface_reference_FunctionalData(
32816 problem:LogicProblem, interpretation:PartialInterpretation,
32817 source: DefinedElement, target:DefinedElement)
32818{
32819 find interpretation(problem,interpretation);
32820 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32821 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
32822 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32823 BinaryElementRelationLink.param1(link,source);
32824 BinaryElementRelationLink.param2(link,target);
32825}
32826/**
32827 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
32828 */
32829private pattern mayInRelationinterface_reference_FunctionalData(
32830 problem:LogicProblem, interpretation:PartialInterpretation,
32831 source: DefinedElement, target:DefinedElement)
32832{
32833 find interpretation(problem,interpretation);
32834 // The two endpoint of the link have to exist
32835 find mayExist(problem, interpretation, source);
32836 find mayExist(problem, interpretation, target);
32837 // Type consistency
32838 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
32839 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
32840 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32841 // the upper bound of the multiplicity should be considered.
32842 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
32843 check(numberOfExistingReferences < 1);
32844 // The eOpposite of the reference is containment, then a referene cannot be created if
32845 // 1. Multiple parents
32846 neg find mustContains4(problem,interpretation,source,_);
32847 // 2. Circle in the containment hierarchy
32848 neg find mustTransitiveContains(source,target);
32849} or {
32850 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
32851}
32852/**
32853 * Matcher for detecting tuples t where []type attribute Function(source,target)
32854 */
32855private pattern mustInRelationtype_attribute_Function(
32856 problem:LogicProblem, interpretation:PartialInterpretation,
32857 source: DefinedElement, target:DefinedElement)
32858{
32859 find interpretation(problem,interpretation);
32860 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32861 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
32862 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
32863 BinaryElementRelationLink.param1(link,source);
32864 BinaryElementRelationLink.param2(link,target);
32865}
32866/**
32867 * Matcher for detecting tuples t where <>type attribute Function(source,target)
32868 */
32869private pattern mayInRelationtype_attribute_Function(
32870 problem:LogicProblem, interpretation:PartialInterpretation,
32871 source: DefinedElement, target:DefinedElement)
32872{
32873 find interpretation(problem,interpretation);
32874 // The two endpoint of the link have to exist
32875 find mayExist(problem, interpretation, source);
32876 find mayExist(problem, interpretation, target);
32877 // Type consistency
32878 find mayInstanceOfFunction_class(problem,interpretation,source);
32879 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
32880 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
32881 // the upper bound of the multiplicity should be considered.
32882 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
32883 check(numberOfExistingReferences < 1);
32884} or {
32885 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
32886}
32887
32888//////////
32889// 1.3 Relation Definition Indexers
32890//////////
32891
32892//////////
32893// 1.4 Containment Indexer
32894//////////
32895private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
32896 find mustContains4(_,_,source,target);
32897}
32898
32899private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
32900 source: DefinedElement, target: DefinedElement)
32901 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
32902
32903 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
32904
32905 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
32906
32907 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
32908
32909 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
32910
32911 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
32912
32913private pattern mustTransitiveContains(source,target) {
32914 find mustContains2+(source,target);
32915}
32916
32917//////////
32918// 2. Invalidation Indexers
32919//////////
32920// 2.1 Invalidated by WF Queries
32921//////////
32922
32923//////////
32924// 3. Unfinishedness Indexers
32925//////////
32926// 3.1 Unfinishedness Measured by Multiplicity
32927//////////
32928pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
32929 find interpretation(problem,interpretation);
32930 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32931 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
32932 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
32933 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
32934 check(numberOfExistingReferences < 1);
32935 missingMultiplicity == eval(1-numberOfExistingReferences);
32936}
32937pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
32938 find interpretation(problem,interpretation);
32939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
32941 find mustInstanceOfInformationLink_class(problem,interpretation,object);
32942 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
32943 check(numberOfExistingReferences < 1);
32944 missingMultiplicity == eval(1-numberOfExistingReferences);
32945}
32946pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
32947 find interpretation(problem,interpretation);
32948 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
32949 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
32950 find mustInstanceOfFunction_class(problem,interpretation,object);
32951 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
32952 check(numberOfExistingReferences < 1);
32953 missingMultiplicity == eval(1-numberOfExistingReferences);
32954}
32955
32956//////////
32957// 3.2 Unfinishedness Measured by WF Queries
32958//////////
32959
32960//////////
32961// 4. Refinement Indexers
32962//////////
32963// 4.1 Object constructors
32964//////////
32965private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
32966{
32967 find interpretation(problem,interpretation);
32968 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
32969 find mustExist(problem, interpretation, root);
32970}or{
32971 find interpretation(problem,interpretation);
32972 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
32973 find mustExist(problem, interpretation, root);
32974}or{
32975 find interpretation(problem,interpretation);
32976 find mustInstanceOfFunction_class(problem,interpretation,root);
32977 find mustExist(problem, interpretation, root);
32978}or{
32979 find interpretation(problem,interpretation);
32980 find mustInstanceOfInformationLink_class(problem,interpretation,root);
32981 find mustExist(problem, interpretation, root);
32982}or{
32983 find interpretation(problem,interpretation);
32984 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
32985 find mustExist(problem, interpretation, root);
32986}or{
32987 find interpretation(problem,interpretation);
32988 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
32989 find mustExist(problem, interpretation, root);
32990}or{
32991 find interpretation(problem,interpretation);
32992 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
32993 find mustExist(problem, interpretation, root);
32994}or{
32995 find interpretation(problem,interpretation);
32996 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
32997 find mustExist(problem, interpretation, root);
32998}or{
32999 find interpretation(problem,interpretation);
33000 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
33001 find mustExist(problem, interpretation, root);
33002}or{
33003 find interpretation(problem,interpretation);
33004 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
33005 find mustExist(problem, interpretation, root);
33006}or{
33007 find interpretation(problem,interpretation);
33008 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
33009 find mustExist(problem, interpretation, root);
33010}
33011pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
33012 problem:LogicProblem, interpretation:PartialInterpretation,
33013 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33014 container:DefinedElement)
33015{
33016 find interpretation(problem,interpretation);
33017 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33018 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
33019 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33020 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
33021 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33022 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
33023 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
33024 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
33025 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
33026 find mustExist(problem, interpretation, container);
33027 neg find mustExist(problem, interpretation, newObject);
33028}
33029pattern createObject_FunctionalInterface_class(
33030 problem:LogicProblem, interpretation:PartialInterpretation,
33031 typeInterpretation:PartialComplexTypeInterpretation)
33032{
33033 find interpretation(problem,interpretation);
33034 neg find hasElementInContainment(problem,interpretation);
33035 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33036 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
33037 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
33038 find mayExist(problem, interpretation, newObject);
33039 neg find mustExist(problem, interpretation, newObject);
33040}
33041pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
33042 problem:LogicProblem, interpretation:PartialInterpretation,
33043 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33044 container:DefinedElement)
33045{
33046 find interpretation(problem,interpretation);
33047 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33048 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
33049 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33050 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
33051 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33052 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
33053 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
33054 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
33055 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
33056 find mustExist(problem, interpretation, container);
33057 neg find mustExist(problem, interpretation, newObject);
33058}
33059pattern createObject_InformationLink_class(
33060 problem:LogicProblem, interpretation:PartialInterpretation,
33061 typeInterpretation:PartialComplexTypeInterpretation)
33062{
33063 find interpretation(problem,interpretation);
33064 neg find hasElementInContainment(problem,interpretation);
33065 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33066 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
33067 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
33068 find mayExist(problem, interpretation, newObject);
33069 neg find mustExist(problem, interpretation, newObject);
33070}
33071pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
33072 problem:LogicProblem, interpretation:PartialInterpretation,
33073 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33074 container:DefinedElement)
33075{
33076 find interpretation(problem,interpretation);
33077 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33078 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
33079 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33080 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
33081 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33082 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
33083 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
33084 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
33085 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
33086 find mustExist(problem, interpretation, container);
33087 neg find mustExist(problem, interpretation, newObject);
33088}
33089pattern createObject_FAMTerminator_class(
33090 problem:LogicProblem, interpretation:PartialInterpretation,
33091 typeInterpretation:PartialComplexTypeInterpretation)
33092{
33093 find interpretation(problem,interpretation);
33094 neg find hasElementInContainment(problem,interpretation);
33095 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33096 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
33097 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
33098 find mayExist(problem, interpretation, newObject);
33099 neg find mustExist(problem, interpretation, newObject);
33100}
33101pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
33102 problem:LogicProblem, interpretation:PartialInterpretation,
33103 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33104 container:DefinedElement)
33105{
33106 find interpretation(problem,interpretation);
33107 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33108 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
33109 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33110 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
33111 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33112 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
33113 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
33114 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
33115 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
33116 find mustExist(problem, interpretation, container);
33117 neg find mustExist(problem, interpretation, newObject);
33118}
33119pattern createObject_FunctionalInput_class(
33120 problem:LogicProblem, interpretation:PartialInterpretation,
33121 typeInterpretation:PartialComplexTypeInterpretation)
33122{
33123 find interpretation(problem,interpretation);
33124 neg find hasElementInContainment(problem,interpretation);
33125 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33126 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
33127 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
33128 find mayExist(problem, interpretation, newObject);
33129 neg find mustExist(problem, interpretation, newObject);
33130}
33131pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
33132 problem:LogicProblem, interpretation:PartialInterpretation,
33133 typeInterpretation:PartialComplexTypeInterpretation)
33134{
33135 find interpretation(problem,interpretation);
33136 neg find hasElementInContainment(problem,interpretation);
33137 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33138 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
33139 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
33140 find mayExist(problem, interpretation, newObject);
33141 neg find mustExist(problem, interpretation, newObject);
33142}
33143pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
33144 problem:LogicProblem, interpretation:PartialInterpretation,
33145 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33146 container:DefinedElement)
33147{
33148 find interpretation(problem,interpretation);
33149 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33150 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
33151 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33152 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
33153 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
33154 find mayInstanceOfFunction_class(problem,interpretation,newObject);
33155 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
33156 find mustExist(problem, interpretation, container);
33157 neg find mustExist(problem, interpretation, newObject);
33158}
33159pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
33160 problem:LogicProblem, interpretation:PartialInterpretation,
33161 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33162 container:DefinedElement)
33163{
33164 find interpretation(problem,interpretation);
33165 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33166 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
33167 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33168 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
33169 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33170 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
33171 find mustInstanceOfFunction_class(problem,interpretation,container);
33172 find mayInstanceOfFunction_class(problem,interpretation,newObject);
33173 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
33174 find mustExist(problem, interpretation, container);
33175 neg find mustExist(problem, interpretation, newObject);
33176}
33177pattern createObject_Function_class(
33178 problem:LogicProblem, interpretation:PartialInterpretation,
33179 typeInterpretation:PartialComplexTypeInterpretation)
33180{
33181 find interpretation(problem,interpretation);
33182 neg find hasElementInContainment(problem,interpretation);
33183 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33184 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
33185 find mayInstanceOfFunction_class(problem,interpretation,newObject);
33186 find mayExist(problem, interpretation, newObject);
33187 neg find mustExist(problem, interpretation, newObject);
33188}
33189pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
33190 problem:LogicProblem, interpretation:PartialInterpretation,
33191 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
33192 container:DefinedElement)
33193{
33194 find interpretation(problem,interpretation);
33195 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33196 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
33197 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
33198 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
33199 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
33200 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
33201 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
33202 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
33203 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
33204 find mustExist(problem, interpretation, container);
33205 neg find mustExist(problem, interpretation, newObject);
33206}
33207pattern createObject_FunctionalOutput_class(
33208 problem:LogicProblem, interpretation:PartialInterpretation,
33209 typeInterpretation:PartialComplexTypeInterpretation)
33210{
33211 find interpretation(problem,interpretation);
33212 neg find hasElementInContainment(problem,interpretation);
33213 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33214 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
33215 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
33216 find mayExist(problem, interpretation, newObject);
33217 neg find mustExist(problem, interpretation, newObject);
33218}
33219
33220//////////
33221// 4.2 Type refinement
33222//////////
33223pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33224 find interpretation(problem,interpretation);
33225 PartialInterpretation.newElements(interpretation,element);
33226 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
33227 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33228 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33229 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33230 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33231 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33232 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33233}
33234pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33235 find interpretation(problem,interpretation);
33236 PartialInterpretation.newElements(interpretation,element);
33237 find mayInstanceOfInformationLink_class(problem,interpretation,element);
33238 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33239 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33240 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33241 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33242 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33243 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33244}
33245pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33246 find interpretation(problem,interpretation);
33247 PartialInterpretation.newElements(interpretation,element);
33248 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
33249 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33250 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33251 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33252 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33253 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33254 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33255}
33256pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33257 find interpretation(problem,interpretation);
33258 PartialInterpretation.newElements(interpretation,element);
33259 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
33260 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33261 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33262 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33263 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33264 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33265 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33266 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33267}
33268pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33269 find interpretation(problem,interpretation);
33270 PartialInterpretation.newElements(interpretation,element);
33271 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33272 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33273 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33274 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33275 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33276 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33277 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33278}
33279pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33280 find interpretation(problem,interpretation);
33281 PartialInterpretation.newElements(interpretation,element);
33282 find mayInstanceOfFunction_class(problem,interpretation,element);
33283 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33284 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33285 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33286 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33287 neg find mustInstanceOfFunction_class(problem,interpretation,element);
33288 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33289}
33290pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
33291 find interpretation(problem,interpretation);
33292 PartialInterpretation.newElements(interpretation,element);
33293 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
33294 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33295 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33296 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33297 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33298 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33299 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33300 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33301}
33302
33303//////////
33304// 4.3 Relation refinement
33305//////////
33306pattern refineRelation_model_reference_FunctionalElement(
33307 problem:LogicProblem, interpretation:PartialInterpretation,
33308 relationIterpretation:PartialRelationInterpretation,
33309 from: DefinedElement, to: DefinedElement)
33310{
33311 find interpretation(problem,interpretation);
33312 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33313 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
33314 find mustExist(problem, interpretation, from);
33315 find mustExist(problem, interpretation, to);
33316 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
33317 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
33318 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
33319 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
33320}
33321pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
33322 problem:LogicProblem, interpretation:PartialInterpretation,
33323 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
33324 from: DefinedElement, to: DefinedElement)
33325{
33326 find interpretation(problem,interpretation);
33327 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33328 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
33329 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
33330 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
33331 find mustExist(problem, interpretation, from);
33332 find mustExist(problem, interpretation, to);
33333 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
33334 find mustInstanceOfInformationLink_class(problem,interpretation,to);
33335 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
33336 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
33337}
33338pattern refineRelation_type_attribute_Function(
33339 problem:LogicProblem, interpretation:PartialInterpretation,
33340 relationIterpretation:PartialRelationInterpretation,
33341 from: DefinedElement, to: DefinedElement)
33342{
33343 find interpretation(problem,interpretation);
33344 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33345 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
33346 find mustExist(problem, interpretation, from);
33347 find mustExist(problem, interpretation, to);
33348 find mustInstanceOfFunction_class(problem,interpretation,from);
33349 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
33350 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
33351 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
33352}
33353import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
33354import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
33355import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
33356
33357//////////
33358// 0. Util
33359//////////
33360private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
33361 PartialInterpretation.problem(interpretation,problem);
33362}
33363
33364/////////////////////////
33365// 0.1 Existence
33366/////////////////////////
33367private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33368 find interpretation(problem,interpretation);
33369 LogicProblem.elements(problem,element);
33370} or {
33371 find interpretation(problem,interpretation);
33372 PartialInterpretation.newElements(interpretation,element);
33373}
33374
33375private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33376 find mustExist(problem,interpretation,element);
33377} or {
33378 find interpretation(problem,interpretation);
33379 neg find elementCloseWorld(element);
33380 PartialInterpretation.openWorldElements(interpretation,element);
33381}
33382
33383private pattern elementCloseWorld(element:DefinedElement) {
33384 PartialInterpretation.openWorldElements(i,element);
33385 PartialInterpretation.maxNewElements(i,0);
33386} or {
33387 Scope.targetTypeInterpretation(scope,interpretation);
33388 PartialTypeInterpratation.elements(interpretation,element);
33389 Scope.maxNewElements(scope,0);
33390}
33391
33392////////////////////////
33393// 0.2 Equivalence
33394////////////////////////
33395pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
33396 find mayExist(problem,interpretation,a);
33397 find mayExist(problem,interpretation,b);
33398 a == b;
33399}
33400
33401////////////////////////
33402// 0.3 Required Patterns by TypeIndexer
33403////////////////////////
33404private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
33405 find interpretation(problem,interpretation);
33406 LogicProblem.types(problem,type);
33407 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
33408 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33409}
33410
33411private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
33412 find interpretation(problem,interpretation);
33413 LogicProblem.types(problem,type);
33414 TypeDefinition.elements(type,element);
33415} or {
33416 find interpretation(problem,interpretation);
33417 find typeInterpretation(problem,interpretation,type,typeInterpretation);
33418 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
33419}
33420
33421private pattern isPrimitive(element: PrimitiveElement) {
33422 PrimitiveElement(element);
33423}
33424
33425//////////
33426// 1. Problem-Specific Base Indexers
33427//////////
33428// 1.1 Type Indexers
33429//////////
33430// 1.1.1 primitive Type Indexers
33431//////////
33432
33433//////////
33434// 1.1.2 domain-specific Type Indexers
33435//////////
33436/**
33437 * An element must be an instance of type "FunctionalElement class".
33438 */
33439private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33440 Type.name(type,"FunctionalElement class");
33441 find directInstanceOf(problem,interpretation,element,type);
33442}
33443private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33444 find interpretation(problem,interpretation);
33445 PartialInterpretation.scopes(interpretation,scope);
33446 Scope.targetTypeInterpretation(scope,typeInterpretation);
33447 Scope.maxNewElements(scope,0);
33448 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33449 Type.name(type,"FunctionalElement class");
33450}
33451
33452/**
33453 * An element may be an instance of type "FunctionalElement class".
33454 */
33455private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33456{
33457 find interpretation(problem,interpretation);
33458 PartialInterpretation.newElements(interpretation,element);
33459 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33460 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33461 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33462 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33463 neg find mustInstanceOfFunction_class(problem,interpretation,element);
33464 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33465 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
33466 neg find isPrimitive(element);
33467} or {
33468 find interpretation(problem,interpretation);
33469 PartialInterpretation.openWorldElements(interpretation,element);
33470 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33471 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33472 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33473 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33474 neg find mustInstanceOfFunction_class(problem,interpretation,element);
33475 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33476 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
33477 neg find isPrimitive(element);
33478} or
33479{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
33480/**
33481 * An element must be an instance of type "FunctionalArchitectureModel class".
33482 */
33483private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33484 Type.name(type,"FunctionalArchitectureModel class");
33485 find directInstanceOf(problem,interpretation,element,type);
33486}
33487private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33488 find interpretation(problem,interpretation);
33489 PartialInterpretation.scopes(interpretation,scope);
33490 Scope.targetTypeInterpretation(scope,typeInterpretation);
33491 Scope.maxNewElements(scope,0);
33492 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33493 Type.name(type,"FunctionalArchitectureModel class");
33494}
33495
33496/**
33497 * An element may be an instance of type "FunctionalArchitectureModel class".
33498 */
33499private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33500{
33501 find interpretation(problem,interpretation);
33502 PartialInterpretation.newElements(interpretation,element);
33503 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33504 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33505 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33506 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33507 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33508 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33509 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
33510 neg find isPrimitive(element);
33511} or {
33512 find interpretation(problem,interpretation);
33513 PartialInterpretation.openWorldElements(interpretation,element);
33514 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33515 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33516 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
33517 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33518 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33519 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33520 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
33521 neg find isPrimitive(element);
33522} or
33523{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
33524/**
33525 * An element must be an instance of type "Function class".
33526 */
33527private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33528 Type.name(type,"Function class");
33529 find directInstanceOf(problem,interpretation,element,type);
33530}
33531private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33532 find interpretation(problem,interpretation);
33533 PartialInterpretation.scopes(interpretation,scope);
33534 Scope.targetTypeInterpretation(scope,typeInterpretation);
33535 Scope.maxNewElements(scope,0);
33536 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33537 Type.name(type,"Function class");
33538}
33539
33540/**
33541 * An element may be an instance of type "Function class".
33542 */
33543private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33544{
33545 find interpretation(problem,interpretation);
33546 PartialInterpretation.newElements(interpretation,element);
33547 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33548 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33549 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33550 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33551 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33552 neg find scopeDisallowsNewFunction_class(problem, interpretation);
33553 neg find isPrimitive(element);
33554} or {
33555 find interpretation(problem,interpretation);
33556 PartialInterpretation.openWorldElements(interpretation,element);
33557 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33558 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33559 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33560 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33561 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33562 neg find scopeDisallowsNewFunction_class(problem, interpretation);
33563 neg find isPrimitive(element);
33564} or
33565{ find mustInstanceOfFunction_class(problem,interpretation,element); }
33566/**
33567 * An element must be an instance of type "FAMTerminator class".
33568 */
33569private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33570 Type.name(type,"FAMTerminator class");
33571 find directInstanceOf(problem,interpretation,element,type);
33572}
33573private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33574 find interpretation(problem,interpretation);
33575 PartialInterpretation.scopes(interpretation,scope);
33576 Scope.targetTypeInterpretation(scope,typeInterpretation);
33577 Scope.maxNewElements(scope,0);
33578 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33579 Type.name(type,"FAMTerminator class");
33580}
33581
33582/**
33583 * An element may be an instance of type "FAMTerminator class".
33584 */
33585private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33586{
33587 find interpretation(problem,interpretation);
33588 PartialInterpretation.newElements(interpretation,element);
33589 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33590 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33591 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33592 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33593 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33594 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
33595 neg find isPrimitive(element);
33596} or {
33597 find interpretation(problem,interpretation);
33598 PartialInterpretation.openWorldElements(interpretation,element);
33599 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33600 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33601 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33602 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33603 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33604 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
33605 neg find isPrimitive(element);
33606} or
33607{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
33608/**
33609 * An element must be an instance of type "InformationLink class".
33610 */
33611private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33612 Type.name(type,"InformationLink class");
33613 find directInstanceOf(problem,interpretation,element,type);
33614}
33615private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33616 find interpretation(problem,interpretation);
33617 PartialInterpretation.scopes(interpretation,scope);
33618 Scope.targetTypeInterpretation(scope,typeInterpretation);
33619 Scope.maxNewElements(scope,0);
33620 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33621 Type.name(type,"InformationLink class");
33622}
33623
33624/**
33625 * An element may be an instance of type "InformationLink class".
33626 */
33627private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33628{
33629 find interpretation(problem,interpretation);
33630 PartialInterpretation.newElements(interpretation,element);
33631 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33632 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33633 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33634 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33635 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33636 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
33637 neg find isPrimitive(element);
33638} or {
33639 find interpretation(problem,interpretation);
33640 PartialInterpretation.openWorldElements(interpretation,element);
33641 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33642 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33643 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33644 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33645 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33646 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
33647 neg find isPrimitive(element);
33648} or
33649{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
33650/**
33651 * An element must be an instance of type "FunctionalInterface class".
33652 */
33653private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33654 Type.name(type,"FunctionalInterface class");
33655 find directInstanceOf(problem,interpretation,element,type);
33656}
33657private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33658 find interpretation(problem,interpretation);
33659 PartialInterpretation.scopes(interpretation,scope);
33660 Scope.targetTypeInterpretation(scope,typeInterpretation);
33661 Scope.maxNewElements(scope,0);
33662 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33663 Type.name(type,"FunctionalInterface class");
33664}
33665
33666/**
33667 * An element may be an instance of type "FunctionalInterface class".
33668 */
33669private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33670{
33671 find interpretation(problem,interpretation);
33672 PartialInterpretation.newElements(interpretation,element);
33673 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33674 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33675 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33676 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33677 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33678 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
33679 neg find isPrimitive(element);
33680} or {
33681 find interpretation(problem,interpretation);
33682 PartialInterpretation.openWorldElements(interpretation,element);
33683 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33684 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33685 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33686 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33687 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33688 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
33689 neg find isPrimitive(element);
33690} or
33691{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
33692/**
33693 * An element must be an instance of type "FunctionalInput class".
33694 */
33695private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33696 Type.name(type,"FunctionalInput class");
33697 find directInstanceOf(problem,interpretation,element,type);
33698}
33699private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33700 find interpretation(problem,interpretation);
33701 PartialInterpretation.scopes(interpretation,scope);
33702 Scope.targetTypeInterpretation(scope,typeInterpretation);
33703 Scope.maxNewElements(scope,0);
33704 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33705 Type.name(type,"FunctionalInput class");
33706}
33707
33708/**
33709 * An element may be an instance of type "FunctionalInput class".
33710 */
33711private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33712{
33713 find interpretation(problem,interpretation);
33714 PartialInterpretation.newElements(interpretation,element);
33715 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33716 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33717 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33718 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33719 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33720 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33721 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
33722 neg find isPrimitive(element);
33723} or {
33724 find interpretation(problem,interpretation);
33725 PartialInterpretation.openWorldElements(interpretation,element);
33726 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33727 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33728 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33729 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33730 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33731 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33732 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
33733 neg find isPrimitive(element);
33734} or
33735{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
33736/**
33737 * An element must be an instance of type "FunctionalOutput class".
33738 */
33739private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33740 Type.name(type,"FunctionalOutput class");
33741 find directInstanceOf(problem,interpretation,element,type);
33742}
33743private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33744 find interpretation(problem,interpretation);
33745 PartialInterpretation.scopes(interpretation,scope);
33746 Scope.targetTypeInterpretation(scope,typeInterpretation);
33747 Scope.maxNewElements(scope,0);
33748 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33749 Type.name(type,"FunctionalOutput class");
33750}
33751
33752/**
33753 * An element may be an instance of type "FunctionalOutput class".
33754 */
33755private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33756{
33757 find interpretation(problem,interpretation);
33758 PartialInterpretation.newElements(interpretation,element);
33759 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33760 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33761 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33762 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33763 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33764 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33765 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
33766 neg find isPrimitive(element);
33767} or {
33768 find interpretation(problem,interpretation);
33769 PartialInterpretation.openWorldElements(interpretation,element);
33770 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33771 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33772 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33773 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33774 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33775 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33776 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
33777 neg find isPrimitive(element);
33778} or
33779{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
33780/**
33781 * An element must be an instance of type "FunctionalData class".
33782 */
33783private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33784 Type.name(type,"FunctionalData class");
33785 find directInstanceOf(problem,interpretation,element,type);
33786}
33787private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
33788 find interpretation(problem,interpretation);
33789 PartialInterpretation.scopes(interpretation,scope);
33790 Scope.targetTypeInterpretation(scope,typeInterpretation);
33791 Scope.maxNewElements(scope,0);
33792 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33793 Type.name(type,"FunctionalData class");
33794}
33795
33796/**
33797 * An element may be an instance of type "FunctionalData class".
33798 */
33799private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33800{
33801 find interpretation(problem,interpretation);
33802 PartialInterpretation.newElements(interpretation,element);
33803 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33804 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33805 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33806 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33807 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33808 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33809 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33810 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
33811 neg find isPrimitive(element);
33812} or {
33813 find interpretation(problem,interpretation);
33814 PartialInterpretation.openWorldElements(interpretation,element);
33815 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33816 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
33817 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
33818 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33819 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33820 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
33821 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33822 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
33823 neg find isPrimitive(element);
33824} or
33825{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
33826/**
33827 * An element must be an instance of type "FunctionType enum".
33828 */
33829private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33830 Type.name(type,"FunctionType enum");
33831 find directInstanceOf(problem,interpretation,element,type);
33832}
33833private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
33834 find interpretation(problem,interpretation);
33835 PartialInterpretation.scopes(interpretation,scope);
33836 Scope.targetTypeInterpretation(scope,typeInterpretation);
33837 Scope.maxNewElements(scope,0);
33838 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33839 Type.name(type,"FunctionType enum");
33840}
33841
33842/**
33843 * An element may be an instance of type "FunctionType enum".
33844 */
33845private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33846{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
33847/**
33848 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
33849 */
33850private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33851 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
33852 find directInstanceOf(problem,interpretation,element,type);
33853}
33854private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
33855 find interpretation(problem,interpretation);
33856 PartialInterpretation.scopes(interpretation,scope);
33857 Scope.targetTypeInterpretation(scope,typeInterpretation);
33858 Scope.maxNewElements(scope,0);
33859 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33860 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
33861}
33862
33863/**
33864 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
33865 */
33866private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33867{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
33868/**
33869 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
33870 */
33871private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
33872 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
33873 find directInstanceOf(problem,interpretation,element,type);
33874}
33875private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
33876 find interpretation(problem,interpretation);
33877 PartialInterpretation.scopes(interpretation,scope);
33878 Scope.targetTypeInterpretation(scope,typeInterpretation);
33879 Scope.maxNewElements(scope,0);
33880 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
33881 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
33882}
33883
33884/**
33885 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
33886 */
33887private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
33888{
33889 find interpretation(problem,interpretation);
33890 PartialInterpretation.newElements(interpretation,element);
33891 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33892 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33893 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33894 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33895 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33896 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
33897 neg find isPrimitive(element);
33898} or {
33899 find interpretation(problem,interpretation);
33900 PartialInterpretation.openWorldElements(interpretation,element);
33901 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
33902 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
33903 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
33904 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
33905 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
33906 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
33907 neg find isPrimitive(element);
33908} or
33909{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
33910
33911//////////
33912// 1.2 Relation Declaration Indexers
33913//////////
33914/**
33915 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
33916 */
33917private pattern mustInRelationinterface_reference_FunctionalElement(
33918 problem:LogicProblem, interpretation:PartialInterpretation,
33919 source: DefinedElement, target:DefinedElement)
33920{
33921 find interpretation(problem,interpretation);
33922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
33924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
33925 BinaryElementRelationLink.param1(link,source);
33926 BinaryElementRelationLink.param2(link,target);
33927}
33928/**
33929 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
33930 */
33931private pattern mayInRelationinterface_reference_FunctionalElement(
33932 problem:LogicProblem, interpretation:PartialInterpretation,
33933 source: DefinedElement, target:DefinedElement)
33934{
33935 find interpretation(problem,interpretation);
33936 // The two endpoint of the link have to exist
33937 find mayExist(problem, interpretation, source);
33938 find mayExist(problem, interpretation, target);
33939 // Type consistency
33940 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
33941 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
33942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
33943 // the upper bound of the multiplicity should be considered.
33944 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
33945 check(numberOfExistingReferences < 1);
33946 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
33947 // the upper bound of the opposite reference multiplicity should be considered.
33948 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
33949 check(numberOfExistingOppositeReferences < 1);
33950 // The reference is containment, then a new reference cannot be create if:
33951 // 1. Multiple parents
33952 neg find mustContains4(problem,interpretation,_,target);
33953 // 2. Circle in the containment hierarchy
33954 neg find mustTransitiveContains(source,target);
33955} or {
33956 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
33957}
33958/**
33959 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
33960 */
33961private pattern mustInRelationmodel_reference_FunctionalElement(
33962 problem:LogicProblem, interpretation:PartialInterpretation,
33963 source: DefinedElement, target:DefinedElement)
33964{
33965 find interpretation(problem,interpretation);
33966 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
33967 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
33968 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
33969 BinaryElementRelationLink.param1(link,source);
33970 BinaryElementRelationLink.param2(link,target);
33971}
33972/**
33973 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
33974 */
33975private pattern mayInRelationmodel_reference_FunctionalElement(
33976 problem:LogicProblem, interpretation:PartialInterpretation,
33977 source: DefinedElement, target:DefinedElement)
33978{
33979 find interpretation(problem,interpretation);
33980 // The two endpoint of the link have to exist
33981 find mayExist(problem, interpretation, source);
33982 find mayExist(problem, interpretation, target);
33983 // Type consistency
33984 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
33985 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
33986 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
33987 // the upper bound of the multiplicity should be considered.
33988 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
33989 check(numberOfExistingReferences < 1);
33990} or {
33991 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
33992}
33993/**
33994 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
33995 */
33996private pattern mustInRelationparent_reference_FunctionalElement(
33997 problem:LogicProblem, interpretation:PartialInterpretation,
33998 source: DefinedElement, target:DefinedElement)
33999{
34000 find interpretation(problem,interpretation);
34001 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34002 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
34003 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34004 BinaryElementRelationLink.param1(link,source);
34005 BinaryElementRelationLink.param2(link,target);
34006}
34007/**
34008 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
34009 */
34010private pattern mayInRelationparent_reference_FunctionalElement(
34011 problem:LogicProblem, interpretation:PartialInterpretation,
34012 source: DefinedElement, target:DefinedElement)
34013{
34014 find interpretation(problem,interpretation);
34015 // The two endpoint of the link have to exist
34016 find mayExist(problem, interpretation, source);
34017 find mayExist(problem, interpretation, target);
34018 // Type consistency
34019 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
34020 find mayInstanceOfFunction_class(problem,interpretation,target);
34021 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34022 // the upper bound of the multiplicity should be considered.
34023 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
34024 check(numberOfExistingReferences < 1);
34025 // The eOpposite of the reference is containment, then a referene cannot be created if
34026 // 1. Multiple parents
34027 neg find mustContains4(problem,interpretation,source,_);
34028 // 2. Circle in the containment hierarchy
34029 neg find mustTransitiveContains(source,target);
34030} or {
34031 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
34032}
34033/**
34034 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
34035 */
34036private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
34037 problem:LogicProblem, interpretation:PartialInterpretation,
34038 source: DefinedElement, target:DefinedElement)
34039{
34040 find interpretation(problem,interpretation);
34041 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34042 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
34043 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34044 BinaryElementRelationLink.param1(link,source);
34045 BinaryElementRelationLink.param2(link,target);
34046}
34047/**
34048 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
34049 */
34050private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
34051 problem:LogicProblem, interpretation:PartialInterpretation,
34052 source: DefinedElement, target:DefinedElement)
34053{
34054 find interpretation(problem,interpretation);
34055 // The two endpoint of the link have to exist
34056 find mayExist(problem, interpretation, source);
34057 find mayExist(problem, interpretation, target);
34058 // Type consistency
34059 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
34060 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
34061 // The reference is containment, then a new reference cannot be create if:
34062 // 1. Multiple parents
34063 neg find mustContains4(problem,interpretation,_,target);
34064 // 2. Circle in the containment hierarchy
34065 neg find mustTransitiveContains(source,target);
34066} or {
34067 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
34068}
34069/**
34070 * Matcher for detecting tuples t where []subElements reference Function(source,target)
34071 */
34072private pattern mustInRelationsubElements_reference_Function(
34073 problem:LogicProblem, interpretation:PartialInterpretation,
34074 source: DefinedElement, target:DefinedElement)
34075{
34076 find interpretation(problem,interpretation);
34077 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34078 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
34079 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34080 BinaryElementRelationLink.param1(link,source);
34081 BinaryElementRelationLink.param2(link,target);
34082}
34083/**
34084 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
34085 */
34086private pattern mayInRelationsubElements_reference_Function(
34087 problem:LogicProblem, interpretation:PartialInterpretation,
34088 source: DefinedElement, target:DefinedElement)
34089{
34090 find interpretation(problem,interpretation);
34091 // The two endpoint of the link have to exist
34092 find mayExist(problem, interpretation, source);
34093 find mayExist(problem, interpretation, target);
34094 // Type consistency
34095 find mayInstanceOfFunction_class(problem,interpretation,source);
34096 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
34097 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34098 // the upper bound of the opposite reference multiplicity should be considered.
34099 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
34100 check(numberOfExistingOppositeReferences < 1);
34101 // The reference is containment, then a new reference cannot be create if:
34102 // 1. Multiple parents
34103 neg find mustContains4(problem,interpretation,_,target);
34104 // 2. Circle in the containment hierarchy
34105 neg find mustTransitiveContains(source,target);
34106} or {
34107 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
34108}
34109/**
34110 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
34111 */
34112private pattern mustInRelationdata_reference_FAMTerminator(
34113 problem:LogicProblem, interpretation:PartialInterpretation,
34114 source: DefinedElement, target:DefinedElement)
34115{
34116 find interpretation(problem,interpretation);
34117 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34118 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
34119 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34120 BinaryElementRelationLink.param1(link,source);
34121 BinaryElementRelationLink.param2(link,target);
34122}
34123/**
34124 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
34125 */
34126private pattern mayInRelationdata_reference_FAMTerminator(
34127 problem:LogicProblem, interpretation:PartialInterpretation,
34128 source: DefinedElement, target:DefinedElement)
34129{
34130 find interpretation(problem,interpretation);
34131 // The two endpoint of the link have to exist
34132 find mayExist(problem, interpretation, source);
34133 find mayExist(problem, interpretation, target);
34134 // Type consistency
34135 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
34136 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
34137 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34138 // the upper bound of the multiplicity should be considered.
34139 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
34140 check(numberOfExistingReferences < 1);
34141 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34142 // the upper bound of the opposite reference multiplicity should be considered.
34143 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
34144 check(numberOfExistingOppositeReferences < 1);
34145 // The eOpposite of the reference is containment, then a referene cannot be created if
34146 // 1. Multiple parents
34147 neg find mustContains4(problem,interpretation,source,_);
34148 // 2. Circle in the containment hierarchy
34149 neg find mustTransitiveContains(source,target);
34150} or {
34151 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
34152}
34153/**
34154 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
34155 */
34156private pattern mustInRelationfrom_reference_InformationLink(
34157 problem:LogicProblem, interpretation:PartialInterpretation,
34158 source: DefinedElement, target:DefinedElement)
34159{
34160 find interpretation(problem,interpretation);
34161 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34162 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
34163 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34164 BinaryElementRelationLink.param1(link,source);
34165 BinaryElementRelationLink.param2(link,target);
34166}
34167/**
34168 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
34169 */
34170private pattern mayInRelationfrom_reference_InformationLink(
34171 problem:LogicProblem, interpretation:PartialInterpretation,
34172 source: DefinedElement, target:DefinedElement)
34173{
34174 find interpretation(problem,interpretation);
34175 // The two endpoint of the link have to exist
34176 find mayExist(problem, interpretation, source);
34177 find mayExist(problem, interpretation, target);
34178 // Type consistency
34179 find mayInstanceOfInformationLink_class(problem,interpretation,source);
34180 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
34181 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34182 // the upper bound of the multiplicity should be considered.
34183 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
34184 check(numberOfExistingReferences < 1);
34185 // The eOpposite of the reference is containment, then a referene cannot be created if
34186 // 1. Multiple parents
34187 neg find mustContains4(problem,interpretation,source,_);
34188 // 2. Circle in the containment hierarchy
34189 neg find mustTransitiveContains(source,target);
34190} or {
34191 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
34192}
34193/**
34194 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
34195 */
34196private pattern mustInRelationto_reference_InformationLink(
34197 problem:LogicProblem, interpretation:PartialInterpretation,
34198 source: DefinedElement, target:DefinedElement)
34199{
34200 find interpretation(problem,interpretation);
34201 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34202 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
34203 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34204 BinaryElementRelationLink.param1(link,source);
34205 BinaryElementRelationLink.param2(link,target);
34206}
34207/**
34208 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
34209 */
34210private pattern mayInRelationto_reference_InformationLink(
34211 problem:LogicProblem, interpretation:PartialInterpretation,
34212 source: DefinedElement, target:DefinedElement)
34213{
34214 find interpretation(problem,interpretation);
34215 // The two endpoint of the link have to exist
34216 find mayExist(problem, interpretation, source);
34217 find mayExist(problem, interpretation, target);
34218 // Type consistency
34219 find mayInstanceOfInformationLink_class(problem,interpretation,source);
34220 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
34221 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34222 // the upper bound of the multiplicity should be considered.
34223 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
34224 check(numberOfExistingReferences < 1);
34225} or {
34226 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
34227}
34228/**
34229 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
34230 */
34231private pattern mustInRelationdata_reference_FunctionalInterface(
34232 problem:LogicProblem, interpretation:PartialInterpretation,
34233 source: DefinedElement, target:DefinedElement)
34234{
34235 find interpretation(problem,interpretation);
34236 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34237 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
34238 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34239 BinaryElementRelationLink.param1(link,source);
34240 BinaryElementRelationLink.param2(link,target);
34241}
34242/**
34243 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
34244 */
34245private pattern mayInRelationdata_reference_FunctionalInterface(
34246 problem:LogicProblem, interpretation:PartialInterpretation,
34247 source: DefinedElement, target:DefinedElement)
34248{
34249 find interpretation(problem,interpretation);
34250 // The two endpoint of the link have to exist
34251 find mayExist(problem, interpretation, source);
34252 find mayExist(problem, interpretation, target);
34253 // Type consistency
34254 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
34255 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
34256 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34257 // the upper bound of the opposite reference multiplicity should be considered.
34258 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
34259 check(numberOfExistingOppositeReferences < 1);
34260 // The reference is containment, then a new reference cannot be create if:
34261 // 1. Multiple parents
34262 neg find mustContains4(problem,interpretation,_,target);
34263 // 2. Circle in the containment hierarchy
34264 neg find mustTransitiveContains(source,target);
34265} or {
34266 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
34267}
34268/**
34269 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
34270 */
34271private pattern mustInRelationelement_reference_FunctionalInterface(
34272 problem:LogicProblem, interpretation:PartialInterpretation,
34273 source: DefinedElement, target:DefinedElement)
34274{
34275 find interpretation(problem,interpretation);
34276 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34277 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
34278 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34279 BinaryElementRelationLink.param1(link,source);
34280 BinaryElementRelationLink.param2(link,target);
34281}
34282/**
34283 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
34284 */
34285private pattern mayInRelationelement_reference_FunctionalInterface(
34286 problem:LogicProblem, interpretation:PartialInterpretation,
34287 source: DefinedElement, target:DefinedElement)
34288{
34289 find interpretation(problem,interpretation);
34290 // The two endpoint of the link have to exist
34291 find mayExist(problem, interpretation, source);
34292 find mayExist(problem, interpretation, target);
34293 // Type consistency
34294 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
34295 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
34296 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34297 // the upper bound of the multiplicity should be considered.
34298 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
34299 check(numberOfExistingReferences < 1);
34300 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34301 // the upper bound of the opposite reference multiplicity should be considered.
34302 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
34303 check(numberOfExistingOppositeReferences < 1);
34304 // The eOpposite of the reference is containment, then a referene cannot be created if
34305 // 1. Multiple parents
34306 neg find mustContains4(problem,interpretation,source,_);
34307 // 2. Circle in the containment hierarchy
34308 neg find mustTransitiveContains(source,target);
34309} or {
34310 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
34311}
34312/**
34313 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
34314 */
34315private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
34316 problem:LogicProblem, interpretation:PartialInterpretation,
34317 source: DefinedElement, target:DefinedElement)
34318{
34319 find interpretation(problem,interpretation);
34320 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34321 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
34322 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34323 BinaryElementRelationLink.param1(link,source);
34324 BinaryElementRelationLink.param2(link,target);
34325}
34326/**
34327 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
34328 */
34329private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
34330 problem:LogicProblem, interpretation:PartialInterpretation,
34331 source: DefinedElement, target:DefinedElement)
34332{
34333 find interpretation(problem,interpretation);
34334 // The two endpoint of the link have to exist
34335 find mayExist(problem, interpretation, source);
34336 find mayExist(problem, interpretation, target);
34337 // Type consistency
34338 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
34339 find mayInstanceOfInformationLink_class(problem,interpretation,target);
34340 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34341 // the upper bound of the opposite reference multiplicity should be considered.
34342 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
34343 check(numberOfExistingOppositeReferences < 1);
34344} or {
34345 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
34346}
34347/**
34348 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
34349 */
34350private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
34351 problem:LogicProblem, interpretation:PartialInterpretation,
34352 source: DefinedElement, target:DefinedElement)
34353{
34354 find interpretation(problem,interpretation);
34355 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34356 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
34357 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34358 BinaryElementRelationLink.param1(link,source);
34359 BinaryElementRelationLink.param2(link,target);
34360}
34361/**
34362 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
34363 */
34364private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
34365 problem:LogicProblem, interpretation:PartialInterpretation,
34366 source: DefinedElement, target:DefinedElement)
34367{
34368 find interpretation(problem,interpretation);
34369 // The two endpoint of the link have to exist
34370 find mayExist(problem, interpretation, source);
34371 find mayExist(problem, interpretation, target);
34372 // Type consistency
34373 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
34374 find mayInstanceOfInformationLink_class(problem,interpretation,target);
34375 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34376 // the upper bound of the opposite reference multiplicity should be considered.
34377 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
34378 check(numberOfExistingOppositeReferences < 1);
34379 // The reference is containment, then a new reference cannot be create if:
34380 // 1. Multiple parents
34381 neg find mustContains4(problem,interpretation,_,target);
34382 // 2. Circle in the containment hierarchy
34383 neg find mustTransitiveContains(source,target);
34384} or {
34385 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
34386}
34387/**
34388 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
34389 */
34390private pattern mustInRelationterminator_reference_FunctionalData(
34391 problem:LogicProblem, interpretation:PartialInterpretation,
34392 source: DefinedElement, target:DefinedElement)
34393{
34394 find interpretation(problem,interpretation);
34395 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34396 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
34397 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34398 BinaryElementRelationLink.param1(link,source);
34399 BinaryElementRelationLink.param2(link,target);
34400}
34401/**
34402 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
34403 */
34404private pattern mayInRelationterminator_reference_FunctionalData(
34405 problem:LogicProblem, interpretation:PartialInterpretation,
34406 source: DefinedElement, target:DefinedElement)
34407{
34408 find interpretation(problem,interpretation);
34409 // The two endpoint of the link have to exist
34410 find mayExist(problem, interpretation, source);
34411 find mayExist(problem, interpretation, target);
34412 // Type consistency
34413 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
34414 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
34415 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34416 // the upper bound of the multiplicity should be considered.
34417 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
34418 check(numberOfExistingReferences < 1);
34419 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
34420 // the upper bound of the opposite reference multiplicity should be considered.
34421 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
34422 check(numberOfExistingOppositeReferences < 1);
34423 // The reference is containment, then a new reference cannot be create if:
34424 // 1. Multiple parents
34425 neg find mustContains4(problem,interpretation,_,target);
34426 // 2. Circle in the containment hierarchy
34427 neg find mustTransitiveContains(source,target);
34428} or {
34429 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
34430}
34431/**
34432 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
34433 */
34434private pattern mustInRelationinterface_reference_FunctionalData(
34435 problem:LogicProblem, interpretation:PartialInterpretation,
34436 source: DefinedElement, target:DefinedElement)
34437{
34438 find interpretation(problem,interpretation);
34439 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34440 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
34441 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34442 BinaryElementRelationLink.param1(link,source);
34443 BinaryElementRelationLink.param2(link,target);
34444}
34445/**
34446 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
34447 */
34448private pattern mayInRelationinterface_reference_FunctionalData(
34449 problem:LogicProblem, interpretation:PartialInterpretation,
34450 source: DefinedElement, target:DefinedElement)
34451{
34452 find interpretation(problem,interpretation);
34453 // The two endpoint of the link have to exist
34454 find mayExist(problem, interpretation, source);
34455 find mayExist(problem, interpretation, target);
34456 // Type consistency
34457 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
34458 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
34459 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34460 // the upper bound of the multiplicity should be considered.
34461 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
34462 check(numberOfExistingReferences < 1);
34463 // The eOpposite of the reference is containment, then a referene cannot be created if
34464 // 1. Multiple parents
34465 neg find mustContains4(problem,interpretation,source,_);
34466 // 2. Circle in the containment hierarchy
34467 neg find mustTransitiveContains(source,target);
34468} or {
34469 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
34470}
34471/**
34472 * Matcher for detecting tuples t where []type attribute Function(source,target)
34473 */
34474private pattern mustInRelationtype_attribute_Function(
34475 problem:LogicProblem, interpretation:PartialInterpretation,
34476 source: DefinedElement, target:DefinedElement)
34477{
34478 find interpretation(problem,interpretation);
34479 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34480 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
34481 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
34482 BinaryElementRelationLink.param1(link,source);
34483 BinaryElementRelationLink.param2(link,target);
34484}
34485/**
34486 * Matcher for detecting tuples t where <>type attribute Function(source,target)
34487 */
34488private pattern mayInRelationtype_attribute_Function(
34489 problem:LogicProblem, interpretation:PartialInterpretation,
34490 source: DefinedElement, target:DefinedElement)
34491{
34492 find interpretation(problem,interpretation);
34493 // The two endpoint of the link have to exist
34494 find mayExist(problem, interpretation, source);
34495 find mayExist(problem, interpretation, target);
34496 // Type consistency
34497 find mayInstanceOfFunction_class(problem,interpretation,source);
34498 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
34499 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
34500 // the upper bound of the multiplicity should be considered.
34501 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
34502 check(numberOfExistingReferences < 1);
34503} or {
34504 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
34505}
34506
34507//////////
34508// 1.3 Relation Definition Indexers
34509//////////
34510
34511//////////
34512// 1.4 Containment Indexer
34513//////////
34514private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
34515 find mustContains4(_,_,source,target);
34516}
34517
34518private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
34519 source: DefinedElement, target: DefinedElement)
34520 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
34521
34522 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
34523
34524 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
34525
34526 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
34527
34528 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
34529
34530 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
34531
34532private pattern mustTransitiveContains(source,target) {
34533 find mustContains2+(source,target);
34534}
34535
34536//////////
34537// 2. Invalidation Indexers
34538//////////
34539// 2.1 Invalidated by WF Queries
34540//////////
34541
34542//////////
34543// 3. Unfinishedness Indexers
34544//////////
34545// 3.1 Unfinishedness Measured by Multiplicity
34546//////////
34547pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
34548 find interpretation(problem,interpretation);
34549 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34550 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
34551 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
34552 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
34553 check(numberOfExistingReferences < 1);
34554 missingMultiplicity == eval(1-numberOfExistingReferences);
34555}
34556pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
34557 find interpretation(problem,interpretation);
34558 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34559 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
34560 find mustInstanceOfInformationLink_class(problem,interpretation,object);
34561 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
34562 check(numberOfExistingReferences < 1);
34563 missingMultiplicity == eval(1-numberOfExistingReferences);
34564}
34565pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
34566 find interpretation(problem,interpretation);
34567 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34568 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
34569 find mustInstanceOfFunction_class(problem,interpretation,object);
34570 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
34571 check(numberOfExistingReferences < 1);
34572 missingMultiplicity == eval(1-numberOfExistingReferences);
34573}
34574
34575//////////
34576// 3.2 Unfinishedness Measured by WF Queries
34577//////////
34578
34579//////////
34580// 4. Refinement Indexers
34581//////////
34582// 4.1 Object constructors
34583//////////
34584private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
34585{
34586 find interpretation(problem,interpretation);
34587 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
34588 find mustExist(problem, interpretation, root);
34589}or{
34590 find interpretation(problem,interpretation);
34591 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
34592 find mustExist(problem, interpretation, root);
34593}or{
34594 find interpretation(problem,interpretation);
34595 find mustInstanceOfFunction_class(problem,interpretation,root);
34596 find mustExist(problem, interpretation, root);
34597}or{
34598 find interpretation(problem,interpretation);
34599 find mustInstanceOfInformationLink_class(problem,interpretation,root);
34600 find mustExist(problem, interpretation, root);
34601}or{
34602 find interpretation(problem,interpretation);
34603 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
34604 find mustExist(problem, interpretation, root);
34605}or{
34606 find interpretation(problem,interpretation);
34607 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
34608 find mustExist(problem, interpretation, root);
34609}or{
34610 find interpretation(problem,interpretation);
34611 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
34612 find mustExist(problem, interpretation, root);
34613}or{
34614 find interpretation(problem,interpretation);
34615 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
34616 find mustExist(problem, interpretation, root);
34617}or{
34618 find interpretation(problem,interpretation);
34619 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
34620 find mustExist(problem, interpretation, root);
34621}or{
34622 find interpretation(problem,interpretation);
34623 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
34624 find mustExist(problem, interpretation, root);
34625}or{
34626 find interpretation(problem,interpretation);
34627 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
34628 find mustExist(problem, interpretation, root);
34629}
34630pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
34631 problem:LogicProblem, interpretation:PartialInterpretation,
34632 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34633 container:DefinedElement)
34634{
34635 find interpretation(problem,interpretation);
34636 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34637 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
34638 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34639 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
34640 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34641 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
34642 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
34643 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
34644 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
34645 find mustExist(problem, interpretation, container);
34646 neg find mustExist(problem, interpretation, newObject);
34647}
34648pattern createObject_FunctionalInterface_class(
34649 problem:LogicProblem, interpretation:PartialInterpretation,
34650 typeInterpretation:PartialComplexTypeInterpretation)
34651{
34652 find interpretation(problem,interpretation);
34653 neg find hasElementInContainment(problem,interpretation);
34654 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34655 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
34656 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
34657 find mayExist(problem, interpretation, newObject);
34658 neg find mustExist(problem, interpretation, newObject);
34659}
34660pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
34661 problem:LogicProblem, interpretation:PartialInterpretation,
34662 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34663 container:DefinedElement)
34664{
34665 find interpretation(problem,interpretation);
34666 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34667 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
34668 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34669 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
34670 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34671 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
34672 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
34673 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
34674 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
34675 find mustExist(problem, interpretation, container);
34676 neg find mustExist(problem, interpretation, newObject);
34677}
34678pattern createObject_FunctionalOutput_class(
34679 problem:LogicProblem, interpretation:PartialInterpretation,
34680 typeInterpretation:PartialComplexTypeInterpretation)
34681{
34682 find interpretation(problem,interpretation);
34683 neg find hasElementInContainment(problem,interpretation);
34684 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34685 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
34686 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
34687 find mayExist(problem, interpretation, newObject);
34688 neg find mustExist(problem, interpretation, newObject);
34689}
34690pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
34691 problem:LogicProblem, interpretation:PartialInterpretation,
34692 typeInterpretation:PartialComplexTypeInterpretation)
34693{
34694 find interpretation(problem,interpretation);
34695 neg find hasElementInContainment(problem,interpretation);
34696 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34697 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
34698 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
34699 find mayExist(problem, interpretation, newObject);
34700 neg find mustExist(problem, interpretation, newObject);
34701}
34702pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
34703 problem:LogicProblem, interpretation:PartialInterpretation,
34704 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34705 container:DefinedElement)
34706{
34707 find interpretation(problem,interpretation);
34708 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34709 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
34710 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34711 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
34712 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34713 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
34714 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
34715 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
34716 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
34717 find mustExist(problem, interpretation, container);
34718 neg find mustExist(problem, interpretation, newObject);
34719}
34720pattern createObject_InformationLink_class(
34721 problem:LogicProblem, interpretation:PartialInterpretation,
34722 typeInterpretation:PartialComplexTypeInterpretation)
34723{
34724 find interpretation(problem,interpretation);
34725 neg find hasElementInContainment(problem,interpretation);
34726 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34727 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
34728 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
34729 find mayExist(problem, interpretation, newObject);
34730 neg find mustExist(problem, interpretation, newObject);
34731}
34732pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
34733 problem:LogicProblem, interpretation:PartialInterpretation,
34734 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34735 container:DefinedElement)
34736{
34737 find interpretation(problem,interpretation);
34738 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34739 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
34740 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34741 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
34742 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
34743 find mayInstanceOfFunction_class(problem,interpretation,newObject);
34744 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
34745 find mustExist(problem, interpretation, container);
34746 neg find mustExist(problem, interpretation, newObject);
34747}
34748pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
34749 problem:LogicProblem, interpretation:PartialInterpretation,
34750 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34751 container:DefinedElement)
34752{
34753 find interpretation(problem,interpretation);
34754 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34755 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
34756 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34757 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
34758 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34759 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
34760 find mustInstanceOfFunction_class(problem,interpretation,container);
34761 find mayInstanceOfFunction_class(problem,interpretation,newObject);
34762 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
34763 find mustExist(problem, interpretation, container);
34764 neg find mustExist(problem, interpretation, newObject);
34765}
34766pattern createObject_Function_class(
34767 problem:LogicProblem, interpretation:PartialInterpretation,
34768 typeInterpretation:PartialComplexTypeInterpretation)
34769{
34770 find interpretation(problem,interpretation);
34771 neg find hasElementInContainment(problem,interpretation);
34772 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34773 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
34774 find mayInstanceOfFunction_class(problem,interpretation,newObject);
34775 find mayExist(problem, interpretation, newObject);
34776 neg find mustExist(problem, interpretation, newObject);
34777}
34778pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
34779 problem:LogicProblem, interpretation:PartialInterpretation,
34780 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34781 container:DefinedElement)
34782{
34783 find interpretation(problem,interpretation);
34784 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34785 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
34786 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34787 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
34788 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34789 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
34790 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
34791 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
34792 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
34793 find mustExist(problem, interpretation, container);
34794 neg find mustExist(problem, interpretation, newObject);
34795}
34796pattern createObject_FunctionalInput_class(
34797 problem:LogicProblem, interpretation:PartialInterpretation,
34798 typeInterpretation:PartialComplexTypeInterpretation)
34799{
34800 find interpretation(problem,interpretation);
34801 neg find hasElementInContainment(problem,interpretation);
34802 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34803 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
34804 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
34805 find mayExist(problem, interpretation, newObject);
34806 neg find mustExist(problem, interpretation, newObject);
34807}
34808pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
34809 problem:LogicProblem, interpretation:PartialInterpretation,
34810 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
34811 container:DefinedElement)
34812{
34813 find interpretation(problem,interpretation);
34814 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34815 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
34816 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
34817 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
34818 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
34819 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
34820 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
34821 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
34822 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
34823 find mustExist(problem, interpretation, container);
34824 neg find mustExist(problem, interpretation, newObject);
34825}
34826pattern createObject_FAMTerminator_class(
34827 problem:LogicProblem, interpretation:PartialInterpretation,
34828 typeInterpretation:PartialComplexTypeInterpretation)
34829{
34830 find interpretation(problem,interpretation);
34831 neg find hasElementInContainment(problem,interpretation);
34832 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
34833 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
34834 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
34835 find mayExist(problem, interpretation, newObject);
34836 neg find mustExist(problem, interpretation, newObject);
34837}
34838
34839//////////
34840// 4.2 Type refinement
34841//////////
34842pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34843 find interpretation(problem,interpretation);
34844 PartialInterpretation.newElements(interpretation,element);
34845 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
34846 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34847 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34848 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34849 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34850 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34851 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34852}
34853pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34854 find interpretation(problem,interpretation);
34855 PartialInterpretation.newElements(interpretation,element);
34856 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
34857 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34858 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34859 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
34860 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34861 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34862 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
34863 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34864}
34865pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34866 find interpretation(problem,interpretation);
34867 PartialInterpretation.newElements(interpretation,element);
34868 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
34869 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34870 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34871 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
34872 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34873 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34874 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34875}
34876pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34877 find interpretation(problem,interpretation);
34878 PartialInterpretation.newElements(interpretation,element);
34879 find mayInstanceOfInformationLink_class(problem,interpretation,element);
34880 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34881 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34882 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34883 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34884 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34885 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34886}
34887pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34888 find interpretation(problem,interpretation);
34889 PartialInterpretation.newElements(interpretation,element);
34890 find mayInstanceOfFunction_class(problem,interpretation,element);
34891 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34892 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34893 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34894 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34895 neg find mustInstanceOfFunction_class(problem,interpretation,element);
34896 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34897}
34898pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34899 find interpretation(problem,interpretation);
34900 PartialInterpretation.newElements(interpretation,element);
34901 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
34902 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34903 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34904 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
34905 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34906 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34907 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
34908 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34909}
34910pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
34911 find interpretation(problem,interpretation);
34912 PartialInterpretation.newElements(interpretation,element);
34913 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
34914 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
34915 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
34916 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
34917 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
34918 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
34919 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
34920}
34921
34922//////////
34923// 4.3 Relation refinement
34924//////////
34925pattern refineRelation_model_reference_FunctionalElement(
34926 problem:LogicProblem, interpretation:PartialInterpretation,
34927 relationIterpretation:PartialRelationInterpretation,
34928 from: DefinedElement, to: DefinedElement)
34929{
34930 find interpretation(problem,interpretation);
34931 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34932 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
34933 find mustExist(problem, interpretation, from);
34934 find mustExist(problem, interpretation, to);
34935 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
34936 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
34937 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
34938 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
34939}
34940pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
34941 problem:LogicProblem, interpretation:PartialInterpretation,
34942 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
34943 from: DefinedElement, to: DefinedElement)
34944{
34945 find interpretation(problem,interpretation);
34946 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34947 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
34948 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
34949 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
34950 find mustExist(problem, interpretation, from);
34951 find mustExist(problem, interpretation, to);
34952 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
34953 find mustInstanceOfInformationLink_class(problem,interpretation,to);
34954 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
34955 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
34956}
34957pattern refineRelation_type_attribute_Function(
34958 problem:LogicProblem, interpretation:PartialInterpretation,
34959 relationIterpretation:PartialRelationInterpretation,
34960 from: DefinedElement, to: DefinedElement)
34961{
34962 find interpretation(problem,interpretation);
34963 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
34964 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
34965 find mustExist(problem, interpretation, from);
34966 find mustExist(problem, interpretation, to);
34967 find mustInstanceOfFunction_class(problem,interpretation,from);
34968 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
34969 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
34970 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
34971}
34972import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
34973import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
34974import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
34975
34976//////////
34977// 0. Util
34978//////////
34979private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
34980 PartialInterpretation.problem(interpretation,problem);
34981}
34982
34983/////////////////////////
34984// 0.1 Existence
34985/////////////////////////
34986private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
34987 find interpretation(problem,interpretation);
34988 LogicProblem.elements(problem,element);
34989} or {
34990 find interpretation(problem,interpretation);
34991 PartialInterpretation.newElements(interpretation,element);
34992}
34993
34994private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
34995 find mustExist(problem,interpretation,element);
34996} or {
34997 find interpretation(problem,interpretation);
34998 neg find elementCloseWorld(element);
34999 PartialInterpretation.openWorldElements(interpretation,element);
35000}
35001
35002private pattern elementCloseWorld(element:DefinedElement) {
35003 PartialInterpretation.openWorldElements(i,element);
35004 PartialInterpretation.maxNewElements(i,0);
35005} or {
35006 Scope.targetTypeInterpretation(scope,interpretation);
35007 PartialTypeInterpratation.elements(interpretation,element);
35008 Scope.maxNewElements(scope,0);
35009}
35010
35011////////////////////////
35012// 0.2 Equivalence
35013////////////////////////
35014pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
35015 find mayExist(problem,interpretation,a);
35016 find mayExist(problem,interpretation,b);
35017 a == b;
35018}
35019
35020////////////////////////
35021// 0.3 Required Patterns by TypeIndexer
35022////////////////////////
35023private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
35024 find interpretation(problem,interpretation);
35025 LogicProblem.types(problem,type);
35026 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
35027 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35028}
35029
35030private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
35031 find interpretation(problem,interpretation);
35032 LogicProblem.types(problem,type);
35033 TypeDefinition.elements(type,element);
35034} or {
35035 find interpretation(problem,interpretation);
35036 find typeInterpretation(problem,interpretation,type,typeInterpretation);
35037 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
35038}
35039
35040private pattern isPrimitive(element: PrimitiveElement) {
35041 PrimitiveElement(element);
35042}
35043
35044//////////
35045// 1. Problem-Specific Base Indexers
35046//////////
35047// 1.1 Type Indexers
35048//////////
35049// 1.1.1 primitive Type Indexers
35050//////////
35051
35052//////////
35053// 1.1.2 domain-specific Type Indexers
35054//////////
35055/**
35056 * An element must be an instance of type "EAttribute class".
35057 */
35058private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35059 Type.name(type,"EAttribute class");
35060 find directInstanceOf(problem,interpretation,element,type);
35061}
35062private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35063 find interpretation(problem,interpretation);
35064 PartialInterpretation.scopes(interpretation,scope);
35065 Scope.targetTypeInterpretation(scope,typeInterpretation);
35066 Scope.maxNewElements(scope,0);
35067 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35068 Type.name(type,"EAttribute class");
35069}
35070
35071/**
35072 * An element may be an instance of type "EAttribute class".
35073 */
35074private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35075{
35076 find interpretation(problem,interpretation);
35077 PartialInterpretation.newElements(interpretation,element);
35078 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35079 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35080 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35081 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35082 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35083 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35084 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35085 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35086 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35087 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35088 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35089 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
35090 neg find isPrimitive(element);
35091} or {
35092 find interpretation(problem,interpretation);
35093 PartialInterpretation.openWorldElements(interpretation,element);
35094 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35095 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35096 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35097 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35098 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35099 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35100 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35101 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35102 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35103 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35104 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35105 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
35106 neg find isPrimitive(element);
35107} or
35108{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
35109/**
35110 * An element must be an instance of type "EAnnotation class".
35111 */
35112private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35113 Type.name(type,"EAnnotation class");
35114 find directInstanceOf(problem,interpretation,element,type);
35115}
35116private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35117 find interpretation(problem,interpretation);
35118 PartialInterpretation.scopes(interpretation,scope);
35119 Scope.targetTypeInterpretation(scope,typeInterpretation);
35120 Scope.maxNewElements(scope,0);
35121 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35122 Type.name(type,"EAnnotation class");
35123}
35124
35125/**
35126 * An element may be an instance of type "EAnnotation class".
35127 */
35128private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35129{
35130 find interpretation(problem,interpretation);
35131 PartialInterpretation.newElements(interpretation,element);
35132 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35133 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35134 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35135 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35136 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
35137 neg find isPrimitive(element);
35138} or {
35139 find interpretation(problem,interpretation);
35140 PartialInterpretation.openWorldElements(interpretation,element);
35141 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35142 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35143 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35144 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35145 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
35146 neg find isPrimitive(element);
35147} or
35148{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
35149/**
35150 * An element must be an instance of type "EClass class".
35151 */
35152private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35153 Type.name(type,"EClass class");
35154 find directInstanceOf(problem,interpretation,element,type);
35155}
35156private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35157 find interpretation(problem,interpretation);
35158 PartialInterpretation.scopes(interpretation,scope);
35159 Scope.targetTypeInterpretation(scope,typeInterpretation);
35160 Scope.maxNewElements(scope,0);
35161 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35162 Type.name(type,"EClass class");
35163}
35164
35165/**
35166 * An element may be an instance of type "EClass class".
35167 */
35168private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35169{
35170 find interpretation(problem,interpretation);
35171 PartialInterpretation.newElements(interpretation,element);
35172 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35173 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35174 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35175 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35176 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35177 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35178 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35179 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35180 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35181 neg find scopeDisallowsNewEClass_class(problem, interpretation);
35182 neg find isPrimitive(element);
35183} or {
35184 find interpretation(problem,interpretation);
35185 PartialInterpretation.openWorldElements(interpretation,element);
35186 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35187 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35188 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35189 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35190 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35191 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35192 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35193 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35194 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35195 neg find scopeDisallowsNewEClass_class(problem, interpretation);
35196 neg find isPrimitive(element);
35197} or
35198{ find mustInstanceOfEClass_class(problem,interpretation,element); }
35199/**
35200 * An element must be an instance of type "EClassifier class".
35201 */
35202private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35203 Type.name(type,"EClassifier class");
35204 find directInstanceOf(problem,interpretation,element,type);
35205}
35206private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35207 find interpretation(problem,interpretation);
35208 PartialInterpretation.scopes(interpretation,scope);
35209 Scope.targetTypeInterpretation(scope,typeInterpretation);
35210 Scope.maxNewElements(scope,0);
35211 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35212 Type.name(type,"EClassifier class");
35213}
35214
35215/**
35216 * An element may be an instance of type "EClassifier class".
35217 */
35218private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35219{
35220 find interpretation(problem,interpretation);
35221 PartialInterpretation.newElements(interpretation,element);
35222 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35223 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35224 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35225 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35226 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35227 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35228 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35229 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35230 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35231 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35232 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
35233 neg find isPrimitive(element);
35234} or {
35235 find interpretation(problem,interpretation);
35236 PartialInterpretation.openWorldElements(interpretation,element);
35237 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35239 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35240 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35241 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35242 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35243 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35244 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
35245 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35246 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35247 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
35248 neg find isPrimitive(element);
35249} or
35250{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
35251/**
35252 * An element must be an instance of type "EDataType class".
35253 */
35254private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35255 Type.name(type,"EDataType class");
35256 find directInstanceOf(problem,interpretation,element,type);
35257}
35258private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35259 find interpretation(problem,interpretation);
35260 PartialInterpretation.scopes(interpretation,scope);
35261 Scope.targetTypeInterpretation(scope,typeInterpretation);
35262 Scope.maxNewElements(scope,0);
35263 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35264 Type.name(type,"EDataType class");
35265}
35266
35267/**
35268 * An element may be an instance of type "EDataType class".
35269 */
35270private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35271{
35272 find interpretation(problem,interpretation);
35273 PartialInterpretation.newElements(interpretation,element);
35274 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35275 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35276 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35277 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35278 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35279 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35280 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
35281 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35282 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35283 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35284 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
35285 neg find isPrimitive(element);
35286} or {
35287 find interpretation(problem,interpretation);
35288 PartialInterpretation.openWorldElements(interpretation,element);
35289 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35290 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35291 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35292 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35293 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35294 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35295 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
35296 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35297 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35298 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35299 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
35300 neg find isPrimitive(element);
35301} or
35302{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
35303/**
35304 * An element must be an instance of type "EEnum class".
35305 */
35306private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35307 Type.name(type,"EEnum class");
35308 find directInstanceOf(problem,interpretation,element,type);
35309}
35310private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35311 find interpretation(problem,interpretation);
35312 PartialInterpretation.scopes(interpretation,scope);
35313 Scope.targetTypeInterpretation(scope,typeInterpretation);
35314 Scope.maxNewElements(scope,0);
35315 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35316 Type.name(type,"EEnum class");
35317}
35318
35319/**
35320 * An element may be an instance of type "EEnum class".
35321 */
35322private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35323{
35324 find interpretation(problem,interpretation);
35325 PartialInterpretation.newElements(interpretation,element);
35326 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35327 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35328 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35329 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35330 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35331 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35332 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35333 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35334 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35335 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
35336 neg find isPrimitive(element);
35337} or {
35338 find interpretation(problem,interpretation);
35339 PartialInterpretation.openWorldElements(interpretation,element);
35340 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35341 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35342 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35343 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35344 neg find mustInstanceOfEClass_class(problem,interpretation,element);
35345 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35346 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35347 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35348 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35349 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
35350 neg find isPrimitive(element);
35351} or
35352{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
35353/**
35354 * An element must be an instance of type "EEnumLiteral class".
35355 */
35356private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35357 Type.name(type,"EEnumLiteral class");
35358 find directInstanceOf(problem,interpretation,element,type);
35359}
35360private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35361 find interpretation(problem,interpretation);
35362 PartialInterpretation.scopes(interpretation,scope);
35363 Scope.targetTypeInterpretation(scope,typeInterpretation);
35364 Scope.maxNewElements(scope,0);
35365 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35366 Type.name(type,"EEnumLiteral class");
35367}
35368
35369/**
35370 * An element may be an instance of type "EEnumLiteral class".
35371 */
35372private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35373{
35374 find interpretation(problem,interpretation);
35375 PartialInterpretation.newElements(interpretation,element);
35376 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35377 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35378 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35379 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35380 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35381 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35382 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35383 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35384 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
35385 neg find isPrimitive(element);
35386} or {
35387 find interpretation(problem,interpretation);
35388 PartialInterpretation.openWorldElements(interpretation,element);
35389 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35390 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35391 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35392 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35393 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35394 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35395 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35396 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35397 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
35398 neg find isPrimitive(element);
35399} or
35400{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
35401/**
35402 * An element must be an instance of type "EModelElement class".
35403 */
35404private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35405 Type.name(type,"EModelElement class");
35406 find directInstanceOf(problem,interpretation,element,type);
35407}
35408private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35409 find interpretation(problem,interpretation);
35410 PartialInterpretation.scopes(interpretation,scope);
35411 Scope.targetTypeInterpretation(scope,typeInterpretation);
35412 Scope.maxNewElements(scope,0);
35413 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35414 Type.name(type,"EModelElement class");
35415}
35416
35417/**
35418 * An element may be an instance of type "EModelElement class".
35419 */
35420private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35421{
35422 find interpretation(problem,interpretation);
35423 PartialInterpretation.newElements(interpretation,element);
35424 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35425 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35426 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35427 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35428 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35429 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
35430 neg find isPrimitive(element);
35431} or {
35432 find interpretation(problem,interpretation);
35433 PartialInterpretation.openWorldElements(interpretation,element);
35434 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35435 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35436 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35437 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35438 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
35439 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
35440 neg find isPrimitive(element);
35441} or
35442{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
35443/**
35444 * An element must be an instance of type "ENamedElement class".
35445 */
35446private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35447 Type.name(type,"ENamedElement class");
35448 find directInstanceOf(problem,interpretation,element,type);
35449}
35450private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35451 find interpretation(problem,interpretation);
35452 PartialInterpretation.scopes(interpretation,scope);
35453 Scope.targetTypeInterpretation(scope,typeInterpretation);
35454 Scope.maxNewElements(scope,0);
35455 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35456 Type.name(type,"ENamedElement class");
35457}
35458
35459/**
35460 * An element may be an instance of type "ENamedElement class".
35461 */
35462private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35463{
35464 find interpretation(problem,interpretation);
35465 PartialInterpretation.newElements(interpretation,element);
35466 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35467 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35468 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35469 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35470 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35471 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
35472 neg find isPrimitive(element);
35473} or {
35474 find interpretation(problem,interpretation);
35475 PartialInterpretation.openWorldElements(interpretation,element);
35476 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35477 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35478 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35479 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35480 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35481 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
35482 neg find isPrimitive(element);
35483} or
35484{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
35485/**
35486 * An element must be an instance of type "EObject class".
35487 */
35488private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35489 Type.name(type,"EObject class");
35490 find directInstanceOf(problem,interpretation,element,type);
35491}
35492private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35493 find interpretation(problem,interpretation);
35494 PartialInterpretation.scopes(interpretation,scope);
35495 Scope.targetTypeInterpretation(scope,typeInterpretation);
35496 Scope.maxNewElements(scope,0);
35497 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35498 Type.name(type,"EObject class");
35499}
35500
35501/**
35502 * An element may be an instance of type "EObject class".
35503 */
35504private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35505{
35506 find interpretation(problem,interpretation);
35507 PartialInterpretation.newElements(interpretation,element);
35508 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35509 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35510 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35511 neg find scopeDisallowsNewEObject_class(problem, interpretation);
35512 neg find isPrimitive(element);
35513} or {
35514 find interpretation(problem,interpretation);
35515 PartialInterpretation.openWorldElements(interpretation,element);
35516 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35517 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35518 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35519 neg find scopeDisallowsNewEObject_class(problem, interpretation);
35520 neg find isPrimitive(element);
35521} or
35522{ find mustInstanceOfEObject_class(problem,interpretation,element); }
35523/**
35524 * An element must be an instance of type "EOperation class".
35525 */
35526private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35527 Type.name(type,"EOperation class");
35528 find directInstanceOf(problem,interpretation,element,type);
35529}
35530private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35531 find interpretation(problem,interpretation);
35532 PartialInterpretation.scopes(interpretation,scope);
35533 Scope.targetTypeInterpretation(scope,typeInterpretation);
35534 Scope.maxNewElements(scope,0);
35535 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35536 Type.name(type,"EOperation class");
35537}
35538
35539/**
35540 * An element may be an instance of type "EOperation class".
35541 */
35542private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35543{
35544 find interpretation(problem,interpretation);
35545 PartialInterpretation.newElements(interpretation,element);
35546 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35547 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35548 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35549 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35550 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35551 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35552 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35553 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35554 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35555 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35556 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
35557 neg find isPrimitive(element);
35558} or {
35559 find interpretation(problem,interpretation);
35560 PartialInterpretation.openWorldElements(interpretation,element);
35561 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35562 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35563 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35564 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35565 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35566 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35567 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35568 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35569 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35570 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35571 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
35572 neg find isPrimitive(element);
35573} or
35574{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
35575/**
35576 * An element must be an instance of type "EPackage class".
35577 */
35578private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35579 Type.name(type,"EPackage class");
35580 find directInstanceOf(problem,interpretation,element,type);
35581}
35582private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35583 find interpretation(problem,interpretation);
35584 PartialInterpretation.scopes(interpretation,scope);
35585 Scope.targetTypeInterpretation(scope,typeInterpretation);
35586 Scope.maxNewElements(scope,0);
35587 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35588 Type.name(type,"EPackage class");
35589}
35590
35591/**
35592 * An element may be an instance of type "EPackage class".
35593 */
35594private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35595{
35596 find interpretation(problem,interpretation);
35597 PartialInterpretation.newElements(interpretation,element);
35598 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35599 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35600 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35601 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35602 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
35603 neg find isPrimitive(element);
35604} or {
35605 find interpretation(problem,interpretation);
35606 PartialInterpretation.openWorldElements(interpretation,element);
35607 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35608 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35609 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35610 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
35611 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
35612 neg find isPrimitive(element);
35613} or
35614{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
35615/**
35616 * An element must be an instance of type "EParameter class".
35617 */
35618private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35619 Type.name(type,"EParameter class");
35620 find directInstanceOf(problem,interpretation,element,type);
35621}
35622private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35623 find interpretation(problem,interpretation);
35624 PartialInterpretation.scopes(interpretation,scope);
35625 Scope.targetTypeInterpretation(scope,typeInterpretation);
35626 Scope.maxNewElements(scope,0);
35627 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35628 Type.name(type,"EParameter class");
35629}
35630
35631/**
35632 * An element may be an instance of type "EParameter class".
35633 */
35634private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35635{
35636 find interpretation(problem,interpretation);
35637 PartialInterpretation.newElements(interpretation,element);
35638 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35639 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35640 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35641 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35642 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35643 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35644 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35645 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35646 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35647 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35648 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
35649 neg find isPrimitive(element);
35650} or {
35651 find interpretation(problem,interpretation);
35652 PartialInterpretation.openWorldElements(interpretation,element);
35653 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35654 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35655 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35656 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35657 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35658 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35659 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35660 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35661 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35662 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35663 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
35664 neg find isPrimitive(element);
35665} or
35666{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
35667/**
35668 * An element must be an instance of type "EReference class".
35669 */
35670private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35671 Type.name(type,"EReference class");
35672 find directInstanceOf(problem,interpretation,element,type);
35673}
35674private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35675 find interpretation(problem,interpretation);
35676 PartialInterpretation.scopes(interpretation,scope);
35677 Scope.targetTypeInterpretation(scope,typeInterpretation);
35678 Scope.maxNewElements(scope,0);
35679 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35680 Type.name(type,"EReference class");
35681}
35682
35683/**
35684 * An element may be an instance of type "EReference class".
35685 */
35686private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35687{
35688 find interpretation(problem,interpretation);
35689 PartialInterpretation.newElements(interpretation,element);
35690 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35691 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35692 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35693 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35694 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35695 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35696 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35697 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35698 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35699 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35700 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35701 neg find scopeDisallowsNewEReference_class(problem, interpretation);
35702 neg find isPrimitive(element);
35703} or {
35704 find interpretation(problem,interpretation);
35705 PartialInterpretation.openWorldElements(interpretation,element);
35706 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35707 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35708 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35709 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35710 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35711 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35712 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35713 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35714 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35715 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35716 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35717 neg find scopeDisallowsNewEReference_class(problem, interpretation);
35718 neg find isPrimitive(element);
35719} or
35720{ find mustInstanceOfEReference_class(problem,interpretation,element); }
35721/**
35722 * An element must be an instance of type "EStructuralFeature class".
35723 */
35724private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35725 Type.name(type,"EStructuralFeature class");
35726 find directInstanceOf(problem,interpretation,element,type);
35727}
35728private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35729 find interpretation(problem,interpretation);
35730 PartialInterpretation.scopes(interpretation,scope);
35731 Scope.targetTypeInterpretation(scope,typeInterpretation);
35732 Scope.maxNewElements(scope,0);
35733 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35734 Type.name(type,"EStructuralFeature class");
35735}
35736
35737/**
35738 * An element may be an instance of type "EStructuralFeature class".
35739 */
35740private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35741{
35742 find interpretation(problem,interpretation);
35743 PartialInterpretation.newElements(interpretation,element);
35744 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35745 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35746 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35747 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35748 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35749 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35750 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35751 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35752 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35753 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35754 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35755 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35756 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
35757 neg find isPrimitive(element);
35758} or {
35759 find interpretation(problem,interpretation);
35760 PartialInterpretation.openWorldElements(interpretation,element);
35761 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35762 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35763 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35764 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35765 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35766 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
35767 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35768 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35769 neg find mustInstanceOfEReference_class(problem,interpretation,element);
35770 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35771 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35772 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35773 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
35774 neg find isPrimitive(element);
35775} or
35776{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
35777/**
35778 * An element must be an instance of type "ETypedElement class".
35779 */
35780private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35781 Type.name(type,"ETypedElement class");
35782 find directInstanceOf(problem,interpretation,element,type);
35783}
35784private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35785 find interpretation(problem,interpretation);
35786 PartialInterpretation.scopes(interpretation,scope);
35787 Scope.targetTypeInterpretation(scope,typeInterpretation);
35788 Scope.maxNewElements(scope,0);
35789 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35790 Type.name(type,"ETypedElement class");
35791}
35792
35793/**
35794 * An element may be an instance of type "ETypedElement class".
35795 */
35796private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35797{
35798 find interpretation(problem,interpretation);
35799 PartialInterpretation.newElements(interpretation,element);
35800 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35801 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35802 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35803 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35804 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35805 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35806 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35807 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35808 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35809 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35810 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35811 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
35812 neg find isPrimitive(element);
35813} or {
35814 find interpretation(problem,interpretation);
35815 PartialInterpretation.openWorldElements(interpretation,element);
35816 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35817 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35818 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35819 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
35820 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35821 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
35822 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35823 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35824 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
35825 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35826 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
35827 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
35828 neg find isPrimitive(element);
35829} or
35830{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
35831/**
35832 * An element must be an instance of type "EStringToStringMapEntry class".
35833 */
35834private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35835 Type.name(type,"EStringToStringMapEntry class");
35836 find directInstanceOf(problem,interpretation,element,type);
35837}
35838private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35839 find interpretation(problem,interpretation);
35840 PartialInterpretation.scopes(interpretation,scope);
35841 Scope.targetTypeInterpretation(scope,typeInterpretation);
35842 Scope.maxNewElements(scope,0);
35843 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35844 Type.name(type,"EStringToStringMapEntry class");
35845}
35846
35847/**
35848 * An element may be an instance of type "EStringToStringMapEntry class".
35849 */
35850private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35851{
35852 find interpretation(problem,interpretation);
35853 PartialInterpretation.newElements(interpretation,element);
35854 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35855 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35856 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35857 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
35858 neg find isPrimitive(element);
35859} or {
35860 find interpretation(problem,interpretation);
35861 PartialInterpretation.openWorldElements(interpretation,element);
35862 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35863 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35864 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35865 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
35866 neg find isPrimitive(element);
35867} or
35868{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
35869/**
35870 * An element must be an instance of type "EGenericType class".
35871 */
35872private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35873 Type.name(type,"EGenericType class");
35874 find directInstanceOf(problem,interpretation,element,type);
35875}
35876private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35877 find interpretation(problem,interpretation);
35878 PartialInterpretation.scopes(interpretation,scope);
35879 Scope.targetTypeInterpretation(scope,typeInterpretation);
35880 Scope.maxNewElements(scope,0);
35881 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35882 Type.name(type,"EGenericType class");
35883}
35884
35885/**
35886 * An element may be an instance of type "EGenericType class".
35887 */
35888private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35889{
35890 find interpretation(problem,interpretation);
35891 PartialInterpretation.newElements(interpretation,element);
35892 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35893 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35894 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35895 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
35896 neg find isPrimitive(element);
35897} or {
35898 find interpretation(problem,interpretation);
35899 PartialInterpretation.openWorldElements(interpretation,element);
35900 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35901 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35902 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
35903 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
35904 neg find isPrimitive(element);
35905} or
35906{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
35907/**
35908 * An element must be an instance of type "ETypeParameter class".
35909 */
35910private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35911 Type.name(type,"ETypeParameter class");
35912 find directInstanceOf(problem,interpretation,element,type);
35913}
35914private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
35915 find interpretation(problem,interpretation);
35916 PartialInterpretation.scopes(interpretation,scope);
35917 Scope.targetTypeInterpretation(scope,typeInterpretation);
35918 Scope.maxNewElements(scope,0);
35919 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35920 Type.name(type,"ETypeParameter class");
35921}
35922
35923/**
35924 * An element may be an instance of type "ETypeParameter class".
35925 */
35926private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35927{
35928 find interpretation(problem,interpretation);
35929 PartialInterpretation.newElements(interpretation,element);
35930 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35931 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35932 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35933 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35934 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35935 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35936 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35937 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35938 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
35939 neg find isPrimitive(element);
35940} or {
35941 find interpretation(problem,interpretation);
35942 PartialInterpretation.openWorldElements(interpretation,element);
35943 neg find mustInstanceOfEObject_class(problem,interpretation,element);
35944 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
35945 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
35946 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
35947 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
35948 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
35949 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
35950 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
35951 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
35952 neg find isPrimitive(element);
35953} or
35954{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
35955/**
35956 * An element must be an instance of type "EModelElement class DefinedPart".
35957 */
35958private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35959 Type.name(type,"EModelElement class DefinedPart");
35960 find directInstanceOf(problem,interpretation,element,type);
35961}
35962private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
35963 find interpretation(problem,interpretation);
35964 PartialInterpretation.scopes(interpretation,scope);
35965 Scope.targetTypeInterpretation(scope,typeInterpretation);
35966 Scope.maxNewElements(scope,0);
35967 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35968 Type.name(type,"EModelElement class DefinedPart");
35969}
35970
35971/**
35972 * An element may be an instance of type "EModelElement class DefinedPart".
35973 */
35974private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35975{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
35976/**
35977 * An element must be an instance of type "EModelElement class UndefinedPart".
35978 */
35979private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
35980 Type.name(type,"EModelElement class UndefinedPart");
35981 find directInstanceOf(problem,interpretation,element,type);
35982}
35983private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
35984 find interpretation(problem,interpretation);
35985 PartialInterpretation.scopes(interpretation,scope);
35986 Scope.targetTypeInterpretation(scope,typeInterpretation);
35987 Scope.maxNewElements(scope,0);
35988 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
35989 Type.name(type,"EModelElement class UndefinedPart");
35990}
35991
35992/**
35993 * An element may be an instance of type "EModelElement class UndefinedPart".
35994 */
35995private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
35996{
35997 find interpretation(problem,interpretation);
35998 PartialInterpretation.newElements(interpretation,element);
35999 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36000 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36001 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36002 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36003 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
36004 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
36005 neg find isPrimitive(element);
36006} or {
36007 find interpretation(problem,interpretation);
36008 PartialInterpretation.openWorldElements(interpretation,element);
36009 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36010 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36011 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36012 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36013 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
36014 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
36015 neg find isPrimitive(element);
36016} or
36017{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
36018/**
36019 * An element must be an instance of type "ENamedElement class DefinedPart".
36020 */
36021private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36022 Type.name(type,"ENamedElement class DefinedPart");
36023 find directInstanceOf(problem,interpretation,element,type);
36024}
36025private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36026 find interpretation(problem,interpretation);
36027 PartialInterpretation.scopes(interpretation,scope);
36028 Scope.targetTypeInterpretation(scope,typeInterpretation);
36029 Scope.maxNewElements(scope,0);
36030 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36031 Type.name(type,"ENamedElement class DefinedPart");
36032}
36033
36034/**
36035 * An element may be an instance of type "ENamedElement class DefinedPart".
36036 */
36037private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36038{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
36039/**
36040 * An element must be an instance of type "ENamedElement class UndefinedPart".
36041 */
36042private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36043 Type.name(type,"ENamedElement class UndefinedPart");
36044 find directInstanceOf(problem,interpretation,element,type);
36045}
36046private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36047 find interpretation(problem,interpretation);
36048 PartialInterpretation.scopes(interpretation,scope);
36049 Scope.targetTypeInterpretation(scope,typeInterpretation);
36050 Scope.maxNewElements(scope,0);
36051 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36052 Type.name(type,"ENamedElement class UndefinedPart");
36053}
36054
36055/**
36056 * An element may be an instance of type "ENamedElement class UndefinedPart".
36057 */
36058private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36059{
36060 find interpretation(problem,interpretation);
36061 PartialInterpretation.newElements(interpretation,element);
36062 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36063 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36064 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36065 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36066 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
36067 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36068 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36069 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36070 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36071 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
36072 neg find isPrimitive(element);
36073} or {
36074 find interpretation(problem,interpretation);
36075 PartialInterpretation.openWorldElements(interpretation,element);
36076 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36077 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36078 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36079 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36080 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
36081 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36082 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36083 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36084 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36085 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
36086 neg find isPrimitive(element);
36087} or
36088{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
36089/**
36090 * An element must be an instance of type "EPackage class DefinedPart".
36091 */
36092private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36093 Type.name(type,"EPackage class DefinedPart");
36094 find directInstanceOf(problem,interpretation,element,type);
36095}
36096private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36097 find interpretation(problem,interpretation);
36098 PartialInterpretation.scopes(interpretation,scope);
36099 Scope.targetTypeInterpretation(scope,typeInterpretation);
36100 Scope.maxNewElements(scope,0);
36101 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36102 Type.name(type,"EPackage class DefinedPart");
36103}
36104
36105/**
36106 * An element may be an instance of type "EPackage class DefinedPart".
36107 */
36108private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36109{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
36110/**
36111 * An element must be an instance of type "EPackage class UndefinedPart".
36112 */
36113private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
36114 Type.name(type,"EPackage class UndefinedPart");
36115 find directInstanceOf(problem,interpretation,element,type);
36116}
36117private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
36118 find interpretation(problem,interpretation);
36119 PartialInterpretation.scopes(interpretation,scope);
36120 Scope.targetTypeInterpretation(scope,typeInterpretation);
36121 Scope.maxNewElements(scope,0);
36122 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
36123 Type.name(type,"EPackage class UndefinedPart");
36124}
36125
36126/**
36127 * An element may be an instance of type "EPackage class UndefinedPart".
36128 */
36129private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
36130{
36131 find interpretation(problem,interpretation);
36132 PartialInterpretation.newElements(interpretation,element);
36133 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36134 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36135 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36136 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36137 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36138 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36139 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36140 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36141 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
36142 neg find isPrimitive(element);
36143} or {
36144 find interpretation(problem,interpretation);
36145 PartialInterpretation.openWorldElements(interpretation,element);
36146 neg find mustInstanceOfEObject_class(problem,interpretation,element);
36147 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
36148 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
36149 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
36150 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
36151 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
36152 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
36153 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
36154 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
36155 neg find isPrimitive(element);
36156} or
36157{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
36158
36159//////////
36160// 1.2 Relation Declaration Indexers
36161//////////
36162/**
36163 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
36164 */
36165private pattern mustInRelationeAttributeType_reference_EAttribute(
36166 problem:LogicProblem, interpretation:PartialInterpretation,
36167 source: DefinedElement, target:DefinedElement)
36168{
36169 find interpretation(problem,interpretation);
36170 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36171 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
36172 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36173 BinaryElementRelationLink.param1(link,source);
36174 BinaryElementRelationLink.param2(link,target);
36175}
36176/**
36177 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
36178 */
36179private pattern mayInRelationeAttributeType_reference_EAttribute(
36180 problem:LogicProblem, interpretation:PartialInterpretation,
36181 source: DefinedElement, target:DefinedElement)
36182{
36183 find interpretation(problem,interpretation);
36184 // The two endpoint of the link have to exist
36185 find mayExist(problem, interpretation, source);
36186 find mayExist(problem, interpretation, target);
36187 // Type consistency
36188 find mayInstanceOfEAttribute_class(problem,interpretation,source);
36189 find mayInstanceOfEDataType_class(problem,interpretation,target);
36190 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36191 // the upper bound of the multiplicity should be considered.
36192 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
36193 check(numberOfExistingReferences < 1);
36194} or {
36195 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
36196}
36197/**
36198 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
36199 */
36200private pattern mustInRelationdetails_reference_EAnnotation(
36201 problem:LogicProblem, interpretation:PartialInterpretation,
36202 source: DefinedElement, target:DefinedElement)
36203{
36204 find interpretation(problem,interpretation);
36205 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36206 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
36207 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36208 BinaryElementRelationLink.param1(link,source);
36209 BinaryElementRelationLink.param2(link,target);
36210}
36211/**
36212 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
36213 */
36214private pattern mayInRelationdetails_reference_EAnnotation(
36215 problem:LogicProblem, interpretation:PartialInterpretation,
36216 source: DefinedElement, target:DefinedElement)
36217{
36218 find interpretation(problem,interpretation);
36219 // The two endpoint of the link have to exist
36220 find mayExist(problem, interpretation, source);
36221 find mayExist(problem, interpretation, target);
36222 // Type consistency
36223 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36224 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
36225 // The reference is containment, then a new reference cannot be create if:
36226 // 1. Multiple parents
36227 neg find mustContains4(problem,interpretation,_,target);
36228 // 2. Circle in the containment hierarchy
36229 neg find mustTransitiveContains(source,target);
36230} or {
36231 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
36232}
36233/**
36234 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
36235 */
36236private pattern mustInRelationeModelElement_reference_EAnnotation(
36237 problem:LogicProblem, interpretation:PartialInterpretation,
36238 source: DefinedElement, target:DefinedElement)
36239{
36240 find interpretation(problem,interpretation);
36241 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36242 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
36243 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36244 BinaryElementRelationLink.param1(link,source);
36245 BinaryElementRelationLink.param2(link,target);
36246}
36247/**
36248 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
36249 */
36250private pattern mayInRelationeModelElement_reference_EAnnotation(
36251 problem:LogicProblem, interpretation:PartialInterpretation,
36252 source: DefinedElement, target:DefinedElement)
36253{
36254 find interpretation(problem,interpretation);
36255 // The two endpoint of the link have to exist
36256 find mayExist(problem, interpretation, source);
36257 find mayExist(problem, interpretation, target);
36258 // Type consistency
36259 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36260 find mayInstanceOfEModelElement_class(problem,interpretation,target);
36261 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36262 // the upper bound of the multiplicity should be considered.
36263 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
36264 check(numberOfExistingReferences < 1);
36265 // The eOpposite of the reference is containment, then a referene cannot be created if
36266 // 1. Multiple parents
36267 neg find mustContains4(problem,interpretation,source,_);
36268 // 2. Circle in the containment hierarchy
36269 neg find mustTransitiveContains(source,target);
36270} or {
36271 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
36272}
36273/**
36274 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
36275 */
36276private pattern mustInRelationcontents_reference_EAnnotation(
36277 problem:LogicProblem, interpretation:PartialInterpretation,
36278 source: DefinedElement, target:DefinedElement)
36279{
36280 find interpretation(problem,interpretation);
36281 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36282 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
36283 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36284 BinaryElementRelationLink.param1(link,source);
36285 BinaryElementRelationLink.param2(link,target);
36286}
36287/**
36288 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
36289 */
36290private pattern mayInRelationcontents_reference_EAnnotation(
36291 problem:LogicProblem, interpretation:PartialInterpretation,
36292 source: DefinedElement, target:DefinedElement)
36293{
36294 find interpretation(problem,interpretation);
36295 // The two endpoint of the link have to exist
36296 find mayExist(problem, interpretation, source);
36297 find mayExist(problem, interpretation, target);
36298 // Type consistency
36299 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36300 find mayInstanceOfEObject_class(problem,interpretation,target);
36301 // The reference is containment, then a new reference cannot be create if:
36302 // 1. Multiple parents
36303 neg find mustContains4(problem,interpretation,_,target);
36304 // 2. Circle in the containment hierarchy
36305 neg find mustTransitiveContains(source,target);
36306} or {
36307 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
36308}
36309/**
36310 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
36311 */
36312private pattern mustInRelationreferences_reference_EAnnotation(
36313 problem:LogicProblem, interpretation:PartialInterpretation,
36314 source: DefinedElement, target:DefinedElement)
36315{
36316 find interpretation(problem,interpretation);
36317 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36318 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
36319 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36320 BinaryElementRelationLink.param1(link,source);
36321 BinaryElementRelationLink.param2(link,target);
36322}
36323/**
36324 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
36325 */
36326private pattern mayInRelationreferences_reference_EAnnotation(
36327 problem:LogicProblem, interpretation:PartialInterpretation,
36328 source: DefinedElement, target:DefinedElement)
36329{
36330 find interpretation(problem,interpretation);
36331 // The two endpoint of the link have to exist
36332 find mayExist(problem, interpretation, source);
36333 find mayExist(problem, interpretation, target);
36334 // Type consistency
36335 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
36336 find mayInstanceOfEObject_class(problem,interpretation,target);
36337} or {
36338 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
36339}
36340/**
36341 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
36342 */
36343private pattern mustInRelationeSuperTypes_reference_EClass(
36344 problem:LogicProblem, interpretation:PartialInterpretation,
36345 source: DefinedElement, target:DefinedElement)
36346{
36347 find interpretation(problem,interpretation);
36348 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36349 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
36350 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36351 BinaryElementRelationLink.param1(link,source);
36352 BinaryElementRelationLink.param2(link,target);
36353}
36354/**
36355 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
36356 */
36357private pattern mayInRelationeSuperTypes_reference_EClass(
36358 problem:LogicProblem, interpretation:PartialInterpretation,
36359 source: DefinedElement, target:DefinedElement)
36360{
36361 find interpretation(problem,interpretation);
36362 // The two endpoint of the link have to exist
36363 find mayExist(problem, interpretation, source);
36364 find mayExist(problem, interpretation, target);
36365 // Type consistency
36366 find mayInstanceOfEClass_class(problem,interpretation,source);
36367 find mayInstanceOfEClass_class(problem,interpretation,target);
36368} or {
36369 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
36370}
36371/**
36372 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
36373 */
36374private pattern mustInRelationeOperations_reference_EClass(
36375 problem:LogicProblem, interpretation:PartialInterpretation,
36376 source: DefinedElement, target:DefinedElement)
36377{
36378 find interpretation(problem,interpretation);
36379 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36380 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
36381 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36382 BinaryElementRelationLink.param1(link,source);
36383 BinaryElementRelationLink.param2(link,target);
36384}
36385/**
36386 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
36387 */
36388private pattern mayInRelationeOperations_reference_EClass(
36389 problem:LogicProblem, interpretation:PartialInterpretation,
36390 source: DefinedElement, target:DefinedElement)
36391{
36392 find interpretation(problem,interpretation);
36393 // The two endpoint of the link have to exist
36394 find mayExist(problem, interpretation, source);
36395 find mayExist(problem, interpretation, target);
36396 // Type consistency
36397 find mayInstanceOfEClass_class(problem,interpretation,source);
36398 find mayInstanceOfEOperation_class(problem,interpretation,target);
36399 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36400 // the upper bound of the opposite reference multiplicity should be considered.
36401 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
36402 check(numberOfExistingOppositeReferences < 1);
36403 // The reference is containment, then a new reference cannot be create if:
36404 // 1. Multiple parents
36405 neg find mustContains4(problem,interpretation,_,target);
36406 // 2. Circle in the containment hierarchy
36407 neg find mustTransitiveContains(source,target);
36408} or {
36409 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
36410}
36411/**
36412 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
36413 */
36414private pattern mustInRelationeAllAttributes_reference_EClass(
36415 problem:LogicProblem, interpretation:PartialInterpretation,
36416 source: DefinedElement, target:DefinedElement)
36417{
36418 find interpretation(problem,interpretation);
36419 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36420 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
36421 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36422 BinaryElementRelationLink.param1(link,source);
36423 BinaryElementRelationLink.param2(link,target);
36424}
36425/**
36426 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
36427 */
36428private pattern mayInRelationeAllAttributes_reference_EClass(
36429 problem:LogicProblem, interpretation:PartialInterpretation,
36430 source: DefinedElement, target:DefinedElement)
36431{
36432 find interpretation(problem,interpretation);
36433 // The two endpoint of the link have to exist
36434 find mayExist(problem, interpretation, source);
36435 find mayExist(problem, interpretation, target);
36436 // Type consistency
36437 find mayInstanceOfEClass_class(problem,interpretation,source);
36438 find mayInstanceOfEAttribute_class(problem,interpretation,target);
36439} or {
36440 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
36441}
36442/**
36443 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
36444 */
36445private pattern mustInRelationeAllReferences_reference_EClass(
36446 problem:LogicProblem, interpretation:PartialInterpretation,
36447 source: DefinedElement, target:DefinedElement)
36448{
36449 find interpretation(problem,interpretation);
36450 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36451 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
36452 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36453 BinaryElementRelationLink.param1(link,source);
36454 BinaryElementRelationLink.param2(link,target);
36455}
36456/**
36457 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
36458 */
36459private pattern mayInRelationeAllReferences_reference_EClass(
36460 problem:LogicProblem, interpretation:PartialInterpretation,
36461 source: DefinedElement, target:DefinedElement)
36462{
36463 find interpretation(problem,interpretation);
36464 // The two endpoint of the link have to exist
36465 find mayExist(problem, interpretation, source);
36466 find mayExist(problem, interpretation, target);
36467 // Type consistency
36468 find mayInstanceOfEClass_class(problem,interpretation,source);
36469 find mayInstanceOfEReference_class(problem,interpretation,target);
36470} or {
36471 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
36472}
36473/**
36474 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
36475 */
36476private pattern mustInRelationeReferences_reference_EClass(
36477 problem:LogicProblem, interpretation:PartialInterpretation,
36478 source: DefinedElement, target:DefinedElement)
36479{
36480 find interpretation(problem,interpretation);
36481 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36482 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
36483 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36484 BinaryElementRelationLink.param1(link,source);
36485 BinaryElementRelationLink.param2(link,target);
36486}
36487/**
36488 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
36489 */
36490private pattern mayInRelationeReferences_reference_EClass(
36491 problem:LogicProblem, interpretation:PartialInterpretation,
36492 source: DefinedElement, target:DefinedElement)
36493{
36494 find interpretation(problem,interpretation);
36495 // The two endpoint of the link have to exist
36496 find mayExist(problem, interpretation, source);
36497 find mayExist(problem, interpretation, target);
36498 // Type consistency
36499 find mayInstanceOfEClass_class(problem,interpretation,source);
36500 find mayInstanceOfEReference_class(problem,interpretation,target);
36501} or {
36502 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
36503}
36504/**
36505 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
36506 */
36507private pattern mustInRelationeAttributes_reference_EClass(
36508 problem:LogicProblem, interpretation:PartialInterpretation,
36509 source: DefinedElement, target:DefinedElement)
36510{
36511 find interpretation(problem,interpretation);
36512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
36514 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36515 BinaryElementRelationLink.param1(link,source);
36516 BinaryElementRelationLink.param2(link,target);
36517}
36518/**
36519 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
36520 */
36521private pattern mayInRelationeAttributes_reference_EClass(
36522 problem:LogicProblem, interpretation:PartialInterpretation,
36523 source: DefinedElement, target:DefinedElement)
36524{
36525 find interpretation(problem,interpretation);
36526 // The two endpoint of the link have to exist
36527 find mayExist(problem, interpretation, source);
36528 find mayExist(problem, interpretation, target);
36529 // Type consistency
36530 find mayInstanceOfEClass_class(problem,interpretation,source);
36531 find mayInstanceOfEAttribute_class(problem,interpretation,target);
36532} or {
36533 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
36534}
36535/**
36536 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
36537 */
36538private pattern mustInRelationeAllContainments_reference_EClass(
36539 problem:LogicProblem, interpretation:PartialInterpretation,
36540 source: DefinedElement, target:DefinedElement)
36541{
36542 find interpretation(problem,interpretation);
36543 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36544 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
36545 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36546 BinaryElementRelationLink.param1(link,source);
36547 BinaryElementRelationLink.param2(link,target);
36548}
36549/**
36550 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
36551 */
36552private pattern mayInRelationeAllContainments_reference_EClass(
36553 problem:LogicProblem, interpretation:PartialInterpretation,
36554 source: DefinedElement, target:DefinedElement)
36555{
36556 find interpretation(problem,interpretation);
36557 // The two endpoint of the link have to exist
36558 find mayExist(problem, interpretation, source);
36559 find mayExist(problem, interpretation, target);
36560 // Type consistency
36561 find mayInstanceOfEClass_class(problem,interpretation,source);
36562 find mayInstanceOfEReference_class(problem,interpretation,target);
36563} or {
36564 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
36565}
36566/**
36567 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
36568 */
36569private pattern mustInRelationeAllOperations_reference_EClass(
36570 problem:LogicProblem, interpretation:PartialInterpretation,
36571 source: DefinedElement, target:DefinedElement)
36572{
36573 find interpretation(problem,interpretation);
36574 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36575 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
36576 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36577 BinaryElementRelationLink.param1(link,source);
36578 BinaryElementRelationLink.param2(link,target);
36579}
36580/**
36581 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
36582 */
36583private pattern mayInRelationeAllOperations_reference_EClass(
36584 problem:LogicProblem, interpretation:PartialInterpretation,
36585 source: DefinedElement, target:DefinedElement)
36586{
36587 find interpretation(problem,interpretation);
36588 // The two endpoint of the link have to exist
36589 find mayExist(problem, interpretation, source);
36590 find mayExist(problem, interpretation, target);
36591 // Type consistency
36592 find mayInstanceOfEClass_class(problem,interpretation,source);
36593 find mayInstanceOfEOperation_class(problem,interpretation,target);
36594} or {
36595 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
36596}
36597/**
36598 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
36599 */
36600private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
36601 problem:LogicProblem, interpretation:PartialInterpretation,
36602 source: DefinedElement, target:DefinedElement)
36603{
36604 find interpretation(problem,interpretation);
36605 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36606 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
36607 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36608 BinaryElementRelationLink.param1(link,source);
36609 BinaryElementRelationLink.param2(link,target);
36610}
36611/**
36612 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
36613 */
36614private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
36615 problem:LogicProblem, interpretation:PartialInterpretation,
36616 source: DefinedElement, target:DefinedElement)
36617{
36618 find interpretation(problem,interpretation);
36619 // The two endpoint of the link have to exist
36620 find mayExist(problem, interpretation, source);
36621 find mayExist(problem, interpretation, target);
36622 // Type consistency
36623 find mayInstanceOfEClass_class(problem,interpretation,source);
36624 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
36625} or {
36626 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
36627}
36628/**
36629 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
36630 */
36631private pattern mustInRelationeAllSuperTypes_reference_EClass(
36632 problem:LogicProblem, interpretation:PartialInterpretation,
36633 source: DefinedElement, target:DefinedElement)
36634{
36635 find interpretation(problem,interpretation);
36636 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36637 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
36638 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36639 BinaryElementRelationLink.param1(link,source);
36640 BinaryElementRelationLink.param2(link,target);
36641}
36642/**
36643 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
36644 */
36645private pattern mayInRelationeAllSuperTypes_reference_EClass(
36646 problem:LogicProblem, interpretation:PartialInterpretation,
36647 source: DefinedElement, target:DefinedElement)
36648{
36649 find interpretation(problem,interpretation);
36650 // The two endpoint of the link have to exist
36651 find mayExist(problem, interpretation, source);
36652 find mayExist(problem, interpretation, target);
36653 // Type consistency
36654 find mayInstanceOfEClass_class(problem,interpretation,source);
36655 find mayInstanceOfEClass_class(problem,interpretation,target);
36656} or {
36657 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
36658}
36659/**
36660 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
36661 */
36662private pattern mustInRelationeIDAttribute_reference_EClass(
36663 problem:LogicProblem, interpretation:PartialInterpretation,
36664 source: DefinedElement, target:DefinedElement)
36665{
36666 find interpretation(problem,interpretation);
36667 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36668 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
36669 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36670 BinaryElementRelationLink.param1(link,source);
36671 BinaryElementRelationLink.param2(link,target);
36672}
36673/**
36674 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
36675 */
36676private pattern mayInRelationeIDAttribute_reference_EClass(
36677 problem:LogicProblem, interpretation:PartialInterpretation,
36678 source: DefinedElement, target:DefinedElement)
36679{
36680 find interpretation(problem,interpretation);
36681 // The two endpoint of the link have to exist
36682 find mayExist(problem, interpretation, source);
36683 find mayExist(problem, interpretation, target);
36684 // Type consistency
36685 find mayInstanceOfEClass_class(problem,interpretation,source);
36686 find mayInstanceOfEAttribute_class(problem,interpretation,target);
36687 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36688 // the upper bound of the multiplicity should be considered.
36689 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
36690 check(numberOfExistingReferences < 1);
36691} or {
36692 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
36693}
36694/**
36695 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
36696 */
36697private pattern mustInRelationeStructuralFeatures_reference_EClass(
36698 problem:LogicProblem, interpretation:PartialInterpretation,
36699 source: DefinedElement, target:DefinedElement)
36700{
36701 find interpretation(problem,interpretation);
36702 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36703 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
36704 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36705 BinaryElementRelationLink.param1(link,source);
36706 BinaryElementRelationLink.param2(link,target);
36707}
36708/**
36709 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
36710 */
36711private pattern mayInRelationeStructuralFeatures_reference_EClass(
36712 problem:LogicProblem, interpretation:PartialInterpretation,
36713 source: DefinedElement, target:DefinedElement)
36714{
36715 find interpretation(problem,interpretation);
36716 // The two endpoint of the link have to exist
36717 find mayExist(problem, interpretation, source);
36718 find mayExist(problem, interpretation, target);
36719 // Type consistency
36720 find mayInstanceOfEClass_class(problem,interpretation,source);
36721 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
36722 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36723 // the upper bound of the opposite reference multiplicity should be considered.
36724 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
36725 check(numberOfExistingOppositeReferences < 1);
36726 // The reference is containment, then a new reference cannot be create if:
36727 // 1. Multiple parents
36728 neg find mustContains4(problem,interpretation,_,target);
36729 // 2. Circle in the containment hierarchy
36730 neg find mustTransitiveContains(source,target);
36731} or {
36732 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
36733}
36734/**
36735 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
36736 */
36737private pattern mustInRelationeGenericSuperTypes_reference_EClass(
36738 problem:LogicProblem, interpretation:PartialInterpretation,
36739 source: DefinedElement, target:DefinedElement)
36740{
36741 find interpretation(problem,interpretation);
36742 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36743 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
36744 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36745 BinaryElementRelationLink.param1(link,source);
36746 BinaryElementRelationLink.param2(link,target);
36747}
36748/**
36749 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
36750 */
36751private pattern mayInRelationeGenericSuperTypes_reference_EClass(
36752 problem:LogicProblem, interpretation:PartialInterpretation,
36753 source: DefinedElement, target:DefinedElement)
36754{
36755 find interpretation(problem,interpretation);
36756 // The two endpoint of the link have to exist
36757 find mayExist(problem, interpretation, source);
36758 find mayExist(problem, interpretation, target);
36759 // Type consistency
36760 find mayInstanceOfEClass_class(problem,interpretation,source);
36761 find mayInstanceOfEGenericType_class(problem,interpretation,target);
36762 // The reference is containment, then a new reference cannot be create if:
36763 // 1. Multiple parents
36764 neg find mustContains4(problem,interpretation,_,target);
36765 // 2. Circle in the containment hierarchy
36766 neg find mustTransitiveContains(source,target);
36767} or {
36768 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
36769}
36770/**
36771 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
36772 */
36773private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
36774 problem:LogicProblem, interpretation:PartialInterpretation,
36775 source: DefinedElement, target:DefinedElement)
36776{
36777 find interpretation(problem,interpretation);
36778 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36779 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
36780 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36781 BinaryElementRelationLink.param1(link,source);
36782 BinaryElementRelationLink.param2(link,target);
36783}
36784/**
36785 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
36786 */
36787private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
36788 problem:LogicProblem, interpretation:PartialInterpretation,
36789 source: DefinedElement, target:DefinedElement)
36790{
36791 find interpretation(problem,interpretation);
36792 // The two endpoint of the link have to exist
36793 find mayExist(problem, interpretation, source);
36794 find mayExist(problem, interpretation, target);
36795 // Type consistency
36796 find mayInstanceOfEClass_class(problem,interpretation,source);
36797 find mayInstanceOfEGenericType_class(problem,interpretation,target);
36798} or {
36799 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
36800}
36801/**
36802 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
36803 */
36804private pattern mustInRelationePackage_reference_EClassifier(
36805 problem:LogicProblem, interpretation:PartialInterpretation,
36806 source: DefinedElement, target:DefinedElement)
36807{
36808 find interpretation(problem,interpretation);
36809 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36810 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
36811 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36812 BinaryElementRelationLink.param1(link,source);
36813 BinaryElementRelationLink.param2(link,target);
36814}
36815/**
36816 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
36817 */
36818private pattern mayInRelationePackage_reference_EClassifier(
36819 problem:LogicProblem, interpretation:PartialInterpretation,
36820 source: DefinedElement, target:DefinedElement)
36821{
36822 find interpretation(problem,interpretation);
36823 // The two endpoint of the link have to exist
36824 find mayExist(problem, interpretation, source);
36825 find mayExist(problem, interpretation, target);
36826 // Type consistency
36827 find mayInstanceOfEClassifier_class(problem,interpretation,source);
36828 find mayInstanceOfEPackage_class(problem,interpretation,target);
36829 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36830 // the upper bound of the multiplicity should be considered.
36831 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
36832 check(numberOfExistingReferences < 1);
36833 // The eOpposite of the reference is containment, then a referene cannot be created if
36834 // 1. Multiple parents
36835 neg find mustContains4(problem,interpretation,source,_);
36836 // 2. Circle in the containment hierarchy
36837 neg find mustTransitiveContains(source,target);
36838} or {
36839 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
36840}
36841/**
36842 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
36843 */
36844private pattern mustInRelationeTypeParameters_reference_EClassifier(
36845 problem:LogicProblem, interpretation:PartialInterpretation,
36846 source: DefinedElement, target:DefinedElement)
36847{
36848 find interpretation(problem,interpretation);
36849 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36850 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
36851 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36852 BinaryElementRelationLink.param1(link,source);
36853 BinaryElementRelationLink.param2(link,target);
36854}
36855/**
36856 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
36857 */
36858private pattern mayInRelationeTypeParameters_reference_EClassifier(
36859 problem:LogicProblem, interpretation:PartialInterpretation,
36860 source: DefinedElement, target:DefinedElement)
36861{
36862 find interpretation(problem,interpretation);
36863 // The two endpoint of the link have to exist
36864 find mayExist(problem, interpretation, source);
36865 find mayExist(problem, interpretation, target);
36866 // Type consistency
36867 find mayInstanceOfEClassifier_class(problem,interpretation,source);
36868 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
36869 // The reference is containment, then a new reference cannot be create if:
36870 // 1. Multiple parents
36871 neg find mustContains4(problem,interpretation,_,target);
36872 // 2. Circle in the containment hierarchy
36873 neg find mustTransitiveContains(source,target);
36874} or {
36875 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
36876}
36877/**
36878 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
36879 */
36880private pattern mustInRelationeLiterals_reference_EEnum(
36881 problem:LogicProblem, interpretation:PartialInterpretation,
36882 source: DefinedElement, target:DefinedElement)
36883{
36884 find interpretation(problem,interpretation);
36885 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36886 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
36887 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36888 BinaryElementRelationLink.param1(link,source);
36889 BinaryElementRelationLink.param2(link,target);
36890}
36891/**
36892 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
36893 */
36894private pattern mayInRelationeLiterals_reference_EEnum(
36895 problem:LogicProblem, interpretation:PartialInterpretation,
36896 source: DefinedElement, target:DefinedElement)
36897{
36898 find interpretation(problem,interpretation);
36899 // The two endpoint of the link have to exist
36900 find mayExist(problem, interpretation, source);
36901 find mayExist(problem, interpretation, target);
36902 // Type consistency
36903 find mayInstanceOfEEnum_class(problem,interpretation,source);
36904 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
36905 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36906 // the upper bound of the opposite reference multiplicity should be considered.
36907 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
36908 check(numberOfExistingOppositeReferences < 1);
36909 // The reference is containment, then a new reference cannot be create if:
36910 // 1. Multiple parents
36911 neg find mustContains4(problem,interpretation,_,target);
36912 // 2. Circle in the containment hierarchy
36913 neg find mustTransitiveContains(source,target);
36914} or {
36915 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
36916}
36917/**
36918 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
36919 */
36920private pattern mustInRelationeEnum_reference_EEnumLiteral(
36921 problem:LogicProblem, interpretation:PartialInterpretation,
36922 source: DefinedElement, target:DefinedElement)
36923{
36924 find interpretation(problem,interpretation);
36925 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36926 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
36927 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36928 BinaryElementRelationLink.param1(link,source);
36929 BinaryElementRelationLink.param2(link,target);
36930}
36931/**
36932 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
36933 */
36934private pattern mayInRelationeEnum_reference_EEnumLiteral(
36935 problem:LogicProblem, interpretation:PartialInterpretation,
36936 source: DefinedElement, target:DefinedElement)
36937{
36938 find interpretation(problem,interpretation);
36939 // The two endpoint of the link have to exist
36940 find mayExist(problem, interpretation, source);
36941 find mayExist(problem, interpretation, target);
36942 // Type consistency
36943 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
36944 find mayInstanceOfEEnum_class(problem,interpretation,target);
36945 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
36946 // the upper bound of the multiplicity should be considered.
36947 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
36948 check(numberOfExistingReferences < 1);
36949 // The eOpposite of the reference is containment, then a referene cannot be created if
36950 // 1. Multiple parents
36951 neg find mustContains4(problem,interpretation,source,_);
36952 // 2. Circle in the containment hierarchy
36953 neg find mustTransitiveContains(source,target);
36954} or {
36955 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
36956}
36957/**
36958 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
36959 */
36960private pattern mustInRelationeAnnotations_reference_EModelElement(
36961 problem:LogicProblem, interpretation:PartialInterpretation,
36962 source: DefinedElement, target:DefinedElement)
36963{
36964 find interpretation(problem,interpretation);
36965 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
36966 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
36967 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
36968 BinaryElementRelationLink.param1(link,source);
36969 BinaryElementRelationLink.param2(link,target);
36970}
36971/**
36972 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
36973 */
36974private pattern mayInRelationeAnnotations_reference_EModelElement(
36975 problem:LogicProblem, interpretation:PartialInterpretation,
36976 source: DefinedElement, target:DefinedElement)
36977{
36978 find interpretation(problem,interpretation);
36979 // The two endpoint of the link have to exist
36980 find mayExist(problem, interpretation, source);
36981 find mayExist(problem, interpretation, target);
36982 // Type consistency
36983 find mayInstanceOfEModelElement_class(problem,interpretation,source);
36984 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
36985 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
36986 // the upper bound of the opposite reference multiplicity should be considered.
36987 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
36988 check(numberOfExistingOppositeReferences < 1);
36989 // The reference is containment, then a new reference cannot be create if:
36990 // 1. Multiple parents
36991 neg find mustContains4(problem,interpretation,_,target);
36992 // 2. Circle in the containment hierarchy
36993 neg find mustTransitiveContains(source,target);
36994} or {
36995 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
36996}
36997/**
36998 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
36999 */
37000private pattern mustInRelationeContainingClass_reference_EOperation(
37001 problem:LogicProblem, interpretation:PartialInterpretation,
37002 source: DefinedElement, target:DefinedElement)
37003{
37004 find interpretation(problem,interpretation);
37005 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37006 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
37007 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37008 BinaryElementRelationLink.param1(link,source);
37009 BinaryElementRelationLink.param2(link,target);
37010}
37011/**
37012 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
37013 */
37014private pattern mayInRelationeContainingClass_reference_EOperation(
37015 problem:LogicProblem, interpretation:PartialInterpretation,
37016 source: DefinedElement, target:DefinedElement)
37017{
37018 find interpretation(problem,interpretation);
37019 // The two endpoint of the link have to exist
37020 find mayExist(problem, interpretation, source);
37021 find mayExist(problem, interpretation, target);
37022 // Type consistency
37023 find mayInstanceOfEOperation_class(problem,interpretation,source);
37024 find mayInstanceOfEClass_class(problem,interpretation,target);
37025 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37026 // the upper bound of the multiplicity should be considered.
37027 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
37028 check(numberOfExistingReferences < 1);
37029 // The eOpposite of the reference is containment, then a referene cannot be created if
37030 // 1. Multiple parents
37031 neg find mustContains4(problem,interpretation,source,_);
37032 // 2. Circle in the containment hierarchy
37033 neg find mustTransitiveContains(source,target);
37034} or {
37035 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
37036}
37037/**
37038 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
37039 */
37040private pattern mustInRelationeTypeParameters_reference_EOperation(
37041 problem:LogicProblem, interpretation:PartialInterpretation,
37042 source: DefinedElement, target:DefinedElement)
37043{
37044 find interpretation(problem,interpretation);
37045 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37046 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
37047 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37048 BinaryElementRelationLink.param1(link,source);
37049 BinaryElementRelationLink.param2(link,target);
37050}
37051/**
37052 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
37053 */
37054private pattern mayInRelationeTypeParameters_reference_EOperation(
37055 problem:LogicProblem, interpretation:PartialInterpretation,
37056 source: DefinedElement, target:DefinedElement)
37057{
37058 find interpretation(problem,interpretation);
37059 // The two endpoint of the link have to exist
37060 find mayExist(problem, interpretation, source);
37061 find mayExist(problem, interpretation, target);
37062 // Type consistency
37063 find mayInstanceOfEOperation_class(problem,interpretation,source);
37064 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
37065 // The reference is containment, then a new reference cannot be create if:
37066 // 1. Multiple parents
37067 neg find mustContains4(problem,interpretation,_,target);
37068 // 2. Circle in the containment hierarchy
37069 neg find mustTransitiveContains(source,target);
37070} or {
37071 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
37072}
37073/**
37074 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
37075 */
37076private pattern mustInRelationeParameters_reference_EOperation(
37077 problem:LogicProblem, interpretation:PartialInterpretation,
37078 source: DefinedElement, target:DefinedElement)
37079{
37080 find interpretation(problem,interpretation);
37081 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37082 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
37083 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37084 BinaryElementRelationLink.param1(link,source);
37085 BinaryElementRelationLink.param2(link,target);
37086}
37087/**
37088 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
37089 */
37090private pattern mayInRelationeParameters_reference_EOperation(
37091 problem:LogicProblem, interpretation:PartialInterpretation,
37092 source: DefinedElement, target:DefinedElement)
37093{
37094 find interpretation(problem,interpretation);
37095 // The two endpoint of the link have to exist
37096 find mayExist(problem, interpretation, source);
37097 find mayExist(problem, interpretation, target);
37098 // Type consistency
37099 find mayInstanceOfEOperation_class(problem,interpretation,source);
37100 find mayInstanceOfEParameter_class(problem,interpretation,target);
37101 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
37102 // the upper bound of the opposite reference multiplicity should be considered.
37103 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
37104 check(numberOfExistingOppositeReferences < 1);
37105 // The reference is containment, then a new reference cannot be create if:
37106 // 1. Multiple parents
37107 neg find mustContains4(problem,interpretation,_,target);
37108 // 2. Circle in the containment hierarchy
37109 neg find mustTransitiveContains(source,target);
37110} or {
37111 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
37112}
37113/**
37114 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
37115 */
37116private pattern mustInRelationeExceptions_reference_EOperation(
37117 problem:LogicProblem, interpretation:PartialInterpretation,
37118 source: DefinedElement, target:DefinedElement)
37119{
37120 find interpretation(problem,interpretation);
37121 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37122 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
37123 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37124 BinaryElementRelationLink.param1(link,source);
37125 BinaryElementRelationLink.param2(link,target);
37126}
37127/**
37128 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
37129 */
37130private pattern mayInRelationeExceptions_reference_EOperation(
37131 problem:LogicProblem, interpretation:PartialInterpretation,
37132 source: DefinedElement, target:DefinedElement)
37133{
37134 find interpretation(problem,interpretation);
37135 // The two endpoint of the link have to exist
37136 find mayExist(problem, interpretation, source);
37137 find mayExist(problem, interpretation, target);
37138 // Type consistency
37139 find mayInstanceOfEOperation_class(problem,interpretation,source);
37140 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37141} or {
37142 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
37143}
37144/**
37145 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
37146 */
37147private pattern mustInRelationeGenericExceptions_reference_EOperation(
37148 problem:LogicProblem, interpretation:PartialInterpretation,
37149 source: DefinedElement, target:DefinedElement)
37150{
37151 find interpretation(problem,interpretation);
37152 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37153 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
37154 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37155 BinaryElementRelationLink.param1(link,source);
37156 BinaryElementRelationLink.param2(link,target);
37157}
37158/**
37159 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
37160 */
37161private pattern mayInRelationeGenericExceptions_reference_EOperation(
37162 problem:LogicProblem, interpretation:PartialInterpretation,
37163 source: DefinedElement, target:DefinedElement)
37164{
37165 find interpretation(problem,interpretation);
37166 // The two endpoint of the link have to exist
37167 find mayExist(problem, interpretation, source);
37168 find mayExist(problem, interpretation, target);
37169 // Type consistency
37170 find mayInstanceOfEOperation_class(problem,interpretation,source);
37171 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37172 // The reference is containment, then a new reference cannot be create if:
37173 // 1. Multiple parents
37174 neg find mustContains4(problem,interpretation,_,target);
37175 // 2. Circle in the containment hierarchy
37176 neg find mustTransitiveContains(source,target);
37177} or {
37178 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
37179}
37180/**
37181 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
37182 */
37183private pattern mustInRelationeClassifiers_reference_EPackage(
37184 problem:LogicProblem, interpretation:PartialInterpretation,
37185 source: DefinedElement, target:DefinedElement)
37186{
37187 find interpretation(problem,interpretation);
37188 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37189 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
37190 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37191 BinaryElementRelationLink.param1(link,source);
37192 BinaryElementRelationLink.param2(link,target);
37193}
37194/**
37195 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
37196 */
37197private pattern mayInRelationeClassifiers_reference_EPackage(
37198 problem:LogicProblem, interpretation:PartialInterpretation,
37199 source: DefinedElement, target:DefinedElement)
37200{
37201 find interpretation(problem,interpretation);
37202 // The two endpoint of the link have to exist
37203 find mayExist(problem, interpretation, source);
37204 find mayExist(problem, interpretation, target);
37205 // Type consistency
37206 find mayInstanceOfEPackage_class(problem,interpretation,source);
37207 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37208 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
37209 // the upper bound of the opposite reference multiplicity should be considered.
37210 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
37211 check(numberOfExistingOppositeReferences < 1);
37212 // The reference is containment, then a new reference cannot be create if:
37213 // 1. Multiple parents
37214 neg find mustContains4(problem,interpretation,_,target);
37215 // 2. Circle in the containment hierarchy
37216 neg find mustTransitiveContains(source,target);
37217} or {
37218 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
37219}
37220/**
37221 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
37222 */
37223private pattern mustInRelationeSubpackages_reference_EPackage(
37224 problem:LogicProblem, interpretation:PartialInterpretation,
37225 source: DefinedElement, target:DefinedElement)
37226{
37227 find interpretation(problem,interpretation);
37228 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37229 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
37230 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37231 BinaryElementRelationLink.param1(link,source);
37232 BinaryElementRelationLink.param2(link,target);
37233}
37234/**
37235 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
37236 */
37237private pattern mayInRelationeSubpackages_reference_EPackage(
37238 problem:LogicProblem, interpretation:PartialInterpretation,
37239 source: DefinedElement, target:DefinedElement)
37240{
37241 find interpretation(problem,interpretation);
37242 // The two endpoint of the link have to exist
37243 find mayExist(problem, interpretation, source);
37244 find mayExist(problem, interpretation, target);
37245 // Type consistency
37246 find mayInstanceOfEPackage_class(problem,interpretation,source);
37247 find mayInstanceOfEPackage_class(problem,interpretation,target);
37248 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
37249 // the upper bound of the opposite reference multiplicity should be considered.
37250 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
37251 check(numberOfExistingOppositeReferences < 1);
37252 // The reference is containment, then a new reference cannot be create if:
37253 // 1. Multiple parents
37254 neg find mustContains4(problem,interpretation,_,target);
37255 // 2. Circle in the containment hierarchy
37256 neg find mustTransitiveContains(source,target);
37257} or {
37258 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
37259}
37260/**
37261 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
37262 */
37263private pattern mustInRelationeSuperPackage_reference_EPackage(
37264 problem:LogicProblem, interpretation:PartialInterpretation,
37265 source: DefinedElement, target:DefinedElement)
37266{
37267 find interpretation(problem,interpretation);
37268 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37269 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
37270 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37271 BinaryElementRelationLink.param1(link,source);
37272 BinaryElementRelationLink.param2(link,target);
37273}
37274/**
37275 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
37276 */
37277private pattern mayInRelationeSuperPackage_reference_EPackage(
37278 problem:LogicProblem, interpretation:PartialInterpretation,
37279 source: DefinedElement, target:DefinedElement)
37280{
37281 find interpretation(problem,interpretation);
37282 // The two endpoint of the link have to exist
37283 find mayExist(problem, interpretation, source);
37284 find mayExist(problem, interpretation, target);
37285 // Type consistency
37286 find mayInstanceOfEPackage_class(problem,interpretation,source);
37287 find mayInstanceOfEPackage_class(problem,interpretation,target);
37288 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37289 // the upper bound of the multiplicity should be considered.
37290 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
37291 check(numberOfExistingReferences < 1);
37292 // The eOpposite of the reference is containment, then a referene cannot be created if
37293 // 1. Multiple parents
37294 neg find mustContains4(problem,interpretation,source,_);
37295 // 2. Circle in the containment hierarchy
37296 neg find mustTransitiveContains(source,target);
37297} or {
37298 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
37299}
37300/**
37301 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
37302 */
37303private pattern mustInRelationeOperation_reference_EParameter(
37304 problem:LogicProblem, interpretation:PartialInterpretation,
37305 source: DefinedElement, target:DefinedElement)
37306{
37307 find interpretation(problem,interpretation);
37308 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37309 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
37310 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37311 BinaryElementRelationLink.param1(link,source);
37312 BinaryElementRelationLink.param2(link,target);
37313}
37314/**
37315 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
37316 */
37317private pattern mayInRelationeOperation_reference_EParameter(
37318 problem:LogicProblem, interpretation:PartialInterpretation,
37319 source: DefinedElement, target:DefinedElement)
37320{
37321 find interpretation(problem,interpretation);
37322 // The two endpoint of the link have to exist
37323 find mayExist(problem, interpretation, source);
37324 find mayExist(problem, interpretation, target);
37325 // Type consistency
37326 find mayInstanceOfEParameter_class(problem,interpretation,source);
37327 find mayInstanceOfEOperation_class(problem,interpretation,target);
37328 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37329 // the upper bound of the multiplicity should be considered.
37330 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
37331 check(numberOfExistingReferences < 1);
37332 // The eOpposite of the reference is containment, then a referene cannot be created if
37333 // 1. Multiple parents
37334 neg find mustContains4(problem,interpretation,source,_);
37335 // 2. Circle in the containment hierarchy
37336 neg find mustTransitiveContains(source,target);
37337} or {
37338 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
37339}
37340/**
37341 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
37342 */
37343private pattern mustInRelationeOpposite_reference_EReference(
37344 problem:LogicProblem, interpretation:PartialInterpretation,
37345 source: DefinedElement, target:DefinedElement)
37346{
37347 find interpretation(problem,interpretation);
37348 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37349 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
37350 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37351 BinaryElementRelationLink.param1(link,source);
37352 BinaryElementRelationLink.param2(link,target);
37353}
37354/**
37355 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
37356 */
37357private pattern mayInRelationeOpposite_reference_EReference(
37358 problem:LogicProblem, interpretation:PartialInterpretation,
37359 source: DefinedElement, target:DefinedElement)
37360{
37361 find interpretation(problem,interpretation);
37362 // The two endpoint of the link have to exist
37363 find mayExist(problem, interpretation, source);
37364 find mayExist(problem, interpretation, target);
37365 // Type consistency
37366 find mayInstanceOfEReference_class(problem,interpretation,source);
37367 find mayInstanceOfEReference_class(problem,interpretation,target);
37368 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37369 // the upper bound of the multiplicity should be considered.
37370 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
37371 check(numberOfExistingReferences < 1);
37372} or {
37373 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
37374}
37375/**
37376 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
37377 */
37378private pattern mustInRelationeReferenceType_reference_EReference(
37379 problem:LogicProblem, interpretation:PartialInterpretation,
37380 source: DefinedElement, target:DefinedElement)
37381{
37382 find interpretation(problem,interpretation);
37383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
37385 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37386 BinaryElementRelationLink.param1(link,source);
37387 BinaryElementRelationLink.param2(link,target);
37388}
37389/**
37390 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
37391 */
37392private pattern mayInRelationeReferenceType_reference_EReference(
37393 problem:LogicProblem, interpretation:PartialInterpretation,
37394 source: DefinedElement, target:DefinedElement)
37395{
37396 find interpretation(problem,interpretation);
37397 // The two endpoint of the link have to exist
37398 find mayExist(problem, interpretation, source);
37399 find mayExist(problem, interpretation, target);
37400 // Type consistency
37401 find mayInstanceOfEReference_class(problem,interpretation,source);
37402 find mayInstanceOfEClass_class(problem,interpretation,target);
37403 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37404 // the upper bound of the multiplicity should be considered.
37405 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
37406 check(numberOfExistingReferences < 1);
37407} or {
37408 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
37409}
37410/**
37411 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
37412 */
37413private pattern mustInRelationeKeys_reference_EReference(
37414 problem:LogicProblem, interpretation:PartialInterpretation,
37415 source: DefinedElement, target:DefinedElement)
37416{
37417 find interpretation(problem,interpretation);
37418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
37420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37421 BinaryElementRelationLink.param1(link,source);
37422 BinaryElementRelationLink.param2(link,target);
37423}
37424/**
37425 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
37426 */
37427private pattern mayInRelationeKeys_reference_EReference(
37428 problem:LogicProblem, interpretation:PartialInterpretation,
37429 source: DefinedElement, target:DefinedElement)
37430{
37431 find interpretation(problem,interpretation);
37432 // The two endpoint of the link have to exist
37433 find mayExist(problem, interpretation, source);
37434 find mayExist(problem, interpretation, target);
37435 // Type consistency
37436 find mayInstanceOfEReference_class(problem,interpretation,source);
37437 find mayInstanceOfEAttribute_class(problem,interpretation,target);
37438} or {
37439 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
37440}
37441/**
37442 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
37443 */
37444private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
37445 problem:LogicProblem, interpretation:PartialInterpretation,
37446 source: DefinedElement, target:DefinedElement)
37447{
37448 find interpretation(problem,interpretation);
37449 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37450 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
37451 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37452 BinaryElementRelationLink.param1(link,source);
37453 BinaryElementRelationLink.param2(link,target);
37454}
37455/**
37456 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
37457 */
37458private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
37459 problem:LogicProblem, interpretation:PartialInterpretation,
37460 source: DefinedElement, target:DefinedElement)
37461{
37462 find interpretation(problem,interpretation);
37463 // The two endpoint of the link have to exist
37464 find mayExist(problem, interpretation, source);
37465 find mayExist(problem, interpretation, target);
37466 // Type consistency
37467 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
37468 find mayInstanceOfEClass_class(problem,interpretation,target);
37469 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37470 // the upper bound of the multiplicity should be considered.
37471 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
37472 check(numberOfExistingReferences < 1);
37473 // The eOpposite of the reference is containment, then a referene cannot be created if
37474 // 1. Multiple parents
37475 neg find mustContains4(problem,interpretation,source,_);
37476 // 2. Circle in the containment hierarchy
37477 neg find mustTransitiveContains(source,target);
37478} or {
37479 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
37480}
37481/**
37482 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
37483 */
37484private pattern mustInRelationeType_reference_ETypedElement(
37485 problem:LogicProblem, interpretation:PartialInterpretation,
37486 source: DefinedElement, target:DefinedElement)
37487{
37488 find interpretation(problem,interpretation);
37489 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37490 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
37491 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37492 BinaryElementRelationLink.param1(link,source);
37493 BinaryElementRelationLink.param2(link,target);
37494}
37495/**
37496 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
37497 */
37498private pattern mayInRelationeType_reference_ETypedElement(
37499 problem:LogicProblem, interpretation:PartialInterpretation,
37500 source: DefinedElement, target:DefinedElement)
37501{
37502 find interpretation(problem,interpretation);
37503 // The two endpoint of the link have to exist
37504 find mayExist(problem, interpretation, source);
37505 find mayExist(problem, interpretation, target);
37506 // Type consistency
37507 find mayInstanceOfETypedElement_class(problem,interpretation,source);
37508 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37509 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37510 // the upper bound of the multiplicity should be considered.
37511 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
37512 check(numberOfExistingReferences < 1);
37513} or {
37514 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
37515}
37516/**
37517 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
37518 */
37519private pattern mustInRelationeGenericType_reference_ETypedElement(
37520 problem:LogicProblem, interpretation:PartialInterpretation,
37521 source: DefinedElement, target:DefinedElement)
37522{
37523 find interpretation(problem,interpretation);
37524 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37525 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
37526 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37527 BinaryElementRelationLink.param1(link,source);
37528 BinaryElementRelationLink.param2(link,target);
37529}
37530/**
37531 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
37532 */
37533private pattern mayInRelationeGenericType_reference_ETypedElement(
37534 problem:LogicProblem, interpretation:PartialInterpretation,
37535 source: DefinedElement, target:DefinedElement)
37536{
37537 find interpretation(problem,interpretation);
37538 // The two endpoint of the link have to exist
37539 find mayExist(problem, interpretation, source);
37540 find mayExist(problem, interpretation, target);
37541 // Type consistency
37542 find mayInstanceOfETypedElement_class(problem,interpretation,source);
37543 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37544 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37545 // the upper bound of the multiplicity should be considered.
37546 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
37547 check(numberOfExistingReferences < 1);
37548 // The reference is containment, then a new reference cannot be create if:
37549 // 1. Multiple parents
37550 neg find mustContains4(problem,interpretation,_,target);
37551 // 2. Circle in the containment hierarchy
37552 neg find mustTransitiveContains(source,target);
37553} or {
37554 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
37555}
37556/**
37557 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
37558 */
37559private pattern mustInRelationeUpperBound_reference_EGenericType(
37560 problem:LogicProblem, interpretation:PartialInterpretation,
37561 source: DefinedElement, target:DefinedElement)
37562{
37563 find interpretation(problem,interpretation);
37564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
37566 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37567 BinaryElementRelationLink.param1(link,source);
37568 BinaryElementRelationLink.param2(link,target);
37569}
37570/**
37571 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
37572 */
37573private pattern mayInRelationeUpperBound_reference_EGenericType(
37574 problem:LogicProblem, interpretation:PartialInterpretation,
37575 source: DefinedElement, target:DefinedElement)
37576{
37577 find interpretation(problem,interpretation);
37578 // The two endpoint of the link have to exist
37579 find mayExist(problem, interpretation, source);
37580 find mayExist(problem, interpretation, target);
37581 // Type consistency
37582 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37583 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37584 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37585 // the upper bound of the multiplicity should be considered.
37586 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
37587 check(numberOfExistingReferences < 1);
37588 // The reference is containment, then a new reference cannot be create if:
37589 // 1. Multiple parents
37590 neg find mustContains4(problem,interpretation,_,target);
37591 // 2. Circle in the containment hierarchy
37592 neg find mustTransitiveContains(source,target);
37593} or {
37594 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
37595}
37596/**
37597 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
37598 */
37599private pattern mustInRelationeTypeArguments_reference_EGenericType(
37600 problem:LogicProblem, interpretation:PartialInterpretation,
37601 source: DefinedElement, target:DefinedElement)
37602{
37603 find interpretation(problem,interpretation);
37604 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37605 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
37606 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37607 BinaryElementRelationLink.param1(link,source);
37608 BinaryElementRelationLink.param2(link,target);
37609}
37610/**
37611 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
37612 */
37613private pattern mayInRelationeTypeArguments_reference_EGenericType(
37614 problem:LogicProblem, interpretation:PartialInterpretation,
37615 source: DefinedElement, target:DefinedElement)
37616{
37617 find interpretation(problem,interpretation);
37618 // The two endpoint of the link have to exist
37619 find mayExist(problem, interpretation, source);
37620 find mayExist(problem, interpretation, target);
37621 // Type consistency
37622 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37623 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37624 // The reference is containment, then a new reference cannot be create if:
37625 // 1. Multiple parents
37626 neg find mustContains4(problem,interpretation,_,target);
37627 // 2. Circle in the containment hierarchy
37628 neg find mustTransitiveContains(source,target);
37629} or {
37630 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
37631}
37632/**
37633 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
37634 */
37635private pattern mustInRelationeRawType_reference_EGenericType(
37636 problem:LogicProblem, interpretation:PartialInterpretation,
37637 source: DefinedElement, target:DefinedElement)
37638{
37639 find interpretation(problem,interpretation);
37640 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37641 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
37642 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37643 BinaryElementRelationLink.param1(link,source);
37644 BinaryElementRelationLink.param2(link,target);
37645}
37646/**
37647 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
37648 */
37649private pattern mayInRelationeRawType_reference_EGenericType(
37650 problem:LogicProblem, interpretation:PartialInterpretation,
37651 source: DefinedElement, target:DefinedElement)
37652{
37653 find interpretation(problem,interpretation);
37654 // The two endpoint of the link have to exist
37655 find mayExist(problem, interpretation, source);
37656 find mayExist(problem, interpretation, target);
37657 // Type consistency
37658 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37659 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37660 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37661 // the upper bound of the multiplicity should be considered.
37662 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
37663 check(numberOfExistingReferences < 1);
37664} or {
37665 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
37666}
37667/**
37668 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
37669 */
37670private pattern mustInRelationeLowerBound_reference_EGenericType(
37671 problem:LogicProblem, interpretation:PartialInterpretation,
37672 source: DefinedElement, target:DefinedElement)
37673{
37674 find interpretation(problem,interpretation);
37675 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37676 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
37677 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37678 BinaryElementRelationLink.param1(link,source);
37679 BinaryElementRelationLink.param2(link,target);
37680}
37681/**
37682 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
37683 */
37684private pattern mayInRelationeLowerBound_reference_EGenericType(
37685 problem:LogicProblem, interpretation:PartialInterpretation,
37686 source: DefinedElement, target:DefinedElement)
37687{
37688 find interpretation(problem,interpretation);
37689 // The two endpoint of the link have to exist
37690 find mayExist(problem, interpretation, source);
37691 find mayExist(problem, interpretation, target);
37692 // Type consistency
37693 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37694 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37695 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37696 // the upper bound of the multiplicity should be considered.
37697 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
37698 check(numberOfExistingReferences < 1);
37699 // The reference is containment, then a new reference cannot be create if:
37700 // 1. Multiple parents
37701 neg find mustContains4(problem,interpretation,_,target);
37702 // 2. Circle in the containment hierarchy
37703 neg find mustTransitiveContains(source,target);
37704} or {
37705 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
37706}
37707/**
37708 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
37709 */
37710private pattern mustInRelationeTypeParameter_reference_EGenericType(
37711 problem:LogicProblem, interpretation:PartialInterpretation,
37712 source: DefinedElement, target:DefinedElement)
37713{
37714 find interpretation(problem,interpretation);
37715 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37716 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
37717 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37718 BinaryElementRelationLink.param1(link,source);
37719 BinaryElementRelationLink.param2(link,target);
37720}
37721/**
37722 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
37723 */
37724private pattern mayInRelationeTypeParameter_reference_EGenericType(
37725 problem:LogicProblem, interpretation:PartialInterpretation,
37726 source: DefinedElement, target:DefinedElement)
37727{
37728 find interpretation(problem,interpretation);
37729 // The two endpoint of the link have to exist
37730 find mayExist(problem, interpretation, source);
37731 find mayExist(problem, interpretation, target);
37732 // Type consistency
37733 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37734 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
37735 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37736 // the upper bound of the multiplicity should be considered.
37737 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
37738 check(numberOfExistingReferences < 1);
37739} or {
37740 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
37741}
37742/**
37743 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
37744 */
37745private pattern mustInRelationeClassifier_reference_EGenericType(
37746 problem:LogicProblem, interpretation:PartialInterpretation,
37747 source: DefinedElement, target:DefinedElement)
37748{
37749 find interpretation(problem,interpretation);
37750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
37752 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37753 BinaryElementRelationLink.param1(link,source);
37754 BinaryElementRelationLink.param2(link,target);
37755}
37756/**
37757 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
37758 */
37759private pattern mayInRelationeClassifier_reference_EGenericType(
37760 problem:LogicProblem, interpretation:PartialInterpretation,
37761 source: DefinedElement, target:DefinedElement)
37762{
37763 find interpretation(problem,interpretation);
37764 // The two endpoint of the link have to exist
37765 find mayExist(problem, interpretation, source);
37766 find mayExist(problem, interpretation, target);
37767 // Type consistency
37768 find mayInstanceOfEGenericType_class(problem,interpretation,source);
37769 find mayInstanceOfEClassifier_class(problem,interpretation,target);
37770 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37771 // the upper bound of the multiplicity should be considered.
37772 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
37773 check(numberOfExistingReferences < 1);
37774} or {
37775 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
37776}
37777/**
37778 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
37779 */
37780private pattern mustInRelationeBounds_reference_ETypeParameter(
37781 problem:LogicProblem, interpretation:PartialInterpretation,
37782 source: DefinedElement, target:DefinedElement)
37783{
37784 find interpretation(problem,interpretation);
37785 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37786 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
37787 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37788 BinaryElementRelationLink.param1(link,source);
37789 BinaryElementRelationLink.param2(link,target);
37790}
37791/**
37792 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
37793 */
37794private pattern mayInRelationeBounds_reference_ETypeParameter(
37795 problem:LogicProblem, interpretation:PartialInterpretation,
37796 source: DefinedElement, target:DefinedElement)
37797{
37798 find interpretation(problem,interpretation);
37799 // The two endpoint of the link have to exist
37800 find mayExist(problem, interpretation, source);
37801 find mayExist(problem, interpretation, target);
37802 // Type consistency
37803 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
37804 find mayInstanceOfEGenericType_class(problem,interpretation,target);
37805 // The reference is containment, then a new reference cannot be create if:
37806 // 1. Multiple parents
37807 neg find mustContains4(problem,interpretation,_,target);
37808 // 2. Circle in the containment hierarchy
37809 neg find mustTransitiveContains(source,target);
37810} or {
37811 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
37812}
37813/**
37814 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
37815 */
37816private pattern mustInRelationiD_attribute_EAttribute(
37817 problem:LogicProblem, interpretation:PartialInterpretation,
37818 source: DefinedElement, target:DefinedElement)
37819{
37820 find interpretation(problem,interpretation);
37821 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37822 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
37823 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37824 BinaryElementRelationLink.param1(link,source);
37825 BinaryElementRelationLink.param2(link,target);
37826}
37827/**
37828 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
37829 */
37830private pattern mayInRelationiD_attribute_EAttribute(
37831 problem:LogicProblem, interpretation:PartialInterpretation,
37832 source: DefinedElement, target:DefinedElement)
37833{
37834 find interpretation(problem,interpretation);
37835 // The two endpoint of the link have to exist
37836 find mayExist(problem, interpretation, source);
37837 find mayExist(problem, interpretation, target);
37838 // Type consistency
37839 find mayInstanceOfEAttribute_class(problem,interpretation,source);
37840 BooleanElement(target);
37841 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37842 // the upper bound of the multiplicity should be considered.
37843 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
37844 check(numberOfExistingReferences < 1);
37845} or {
37846 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
37847}
37848/**
37849 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
37850 */
37851private pattern mustInRelationsource_attribute_EAnnotation(
37852 problem:LogicProblem, interpretation:PartialInterpretation,
37853 source: DefinedElement, target:DefinedElement)
37854{
37855 find interpretation(problem,interpretation);
37856 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37857 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
37858 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37859 BinaryElementRelationLink.param1(link,source);
37860 BinaryElementRelationLink.param2(link,target);
37861}
37862/**
37863 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
37864 */
37865private pattern mayInRelationsource_attribute_EAnnotation(
37866 problem:LogicProblem, interpretation:PartialInterpretation,
37867 source: DefinedElement, target:DefinedElement)
37868{
37869 find interpretation(problem,interpretation);
37870 // The two endpoint of the link have to exist
37871 find mayExist(problem, interpretation, source);
37872 find mayExist(problem, interpretation, target);
37873 // Type consistency
37874 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
37875 StringElement(target);
37876 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37877 // the upper bound of the multiplicity should be considered.
37878 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
37879 check(numberOfExistingReferences < 1);
37880} or {
37881 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
37882}
37883/**
37884 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
37885 */
37886private pattern mustInRelationabstract_attribute_EClass(
37887 problem:LogicProblem, interpretation:PartialInterpretation,
37888 source: DefinedElement, target:DefinedElement)
37889{
37890 find interpretation(problem,interpretation);
37891 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37892 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
37893 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37894 BinaryElementRelationLink.param1(link,source);
37895 BinaryElementRelationLink.param2(link,target);
37896}
37897/**
37898 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
37899 */
37900private pattern mayInRelationabstract_attribute_EClass(
37901 problem:LogicProblem, interpretation:PartialInterpretation,
37902 source: DefinedElement, target:DefinedElement)
37903{
37904 find interpretation(problem,interpretation);
37905 // The two endpoint of the link have to exist
37906 find mayExist(problem, interpretation, source);
37907 find mayExist(problem, interpretation, target);
37908 // Type consistency
37909 find mayInstanceOfEClass_class(problem,interpretation,source);
37910 BooleanElement(target);
37911 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37912 // the upper bound of the multiplicity should be considered.
37913 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
37914 check(numberOfExistingReferences < 1);
37915} or {
37916 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
37917}
37918/**
37919 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
37920 */
37921private pattern mustInRelationinterface_attribute_EClass(
37922 problem:LogicProblem, interpretation:PartialInterpretation,
37923 source: DefinedElement, target:DefinedElement)
37924{
37925 find interpretation(problem,interpretation);
37926 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37927 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
37928 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37929 BinaryElementRelationLink.param1(link,source);
37930 BinaryElementRelationLink.param2(link,target);
37931}
37932/**
37933 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
37934 */
37935private pattern mayInRelationinterface_attribute_EClass(
37936 problem:LogicProblem, interpretation:PartialInterpretation,
37937 source: DefinedElement, target:DefinedElement)
37938{
37939 find interpretation(problem,interpretation);
37940 // The two endpoint of the link have to exist
37941 find mayExist(problem, interpretation, source);
37942 find mayExist(problem, interpretation, target);
37943 // Type consistency
37944 find mayInstanceOfEClass_class(problem,interpretation,source);
37945 BooleanElement(target);
37946 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37947 // the upper bound of the multiplicity should be considered.
37948 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
37949 check(numberOfExistingReferences < 1);
37950} or {
37951 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
37952}
37953/**
37954 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
37955 */
37956private pattern mustInRelationinstanceClassName_attribute_EClassifier(
37957 problem:LogicProblem, interpretation:PartialInterpretation,
37958 source: DefinedElement, target:DefinedElement)
37959{
37960 find interpretation(problem,interpretation);
37961 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37962 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
37963 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37964 BinaryElementRelationLink.param1(link,source);
37965 BinaryElementRelationLink.param2(link,target);
37966}
37967/**
37968 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
37969 */
37970private pattern mayInRelationinstanceClassName_attribute_EClassifier(
37971 problem:LogicProblem, interpretation:PartialInterpretation,
37972 source: DefinedElement, target:DefinedElement)
37973{
37974 find interpretation(problem,interpretation);
37975 // The two endpoint of the link have to exist
37976 find mayExist(problem, interpretation, source);
37977 find mayExist(problem, interpretation, target);
37978 // Type consistency
37979 find mayInstanceOfEClassifier_class(problem,interpretation,source);
37980 StringElement(target);
37981 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
37982 // the upper bound of the multiplicity should be considered.
37983 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
37984 check(numberOfExistingReferences < 1);
37985} or {
37986 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
37987}
37988/**
37989 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
37990 */
37991private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
37992 problem:LogicProblem, interpretation:PartialInterpretation,
37993 source: DefinedElement, target:DefinedElement)
37994{
37995 find interpretation(problem,interpretation);
37996 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
37997 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
37998 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
37999 BinaryElementRelationLink.param1(link,source);
38000 BinaryElementRelationLink.param2(link,target);
38001}
38002/**
38003 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
38004 */
38005private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
38006 problem:LogicProblem, interpretation:PartialInterpretation,
38007 source: DefinedElement, target:DefinedElement)
38008{
38009 find interpretation(problem,interpretation);
38010 // The two endpoint of the link have to exist
38011 find mayExist(problem, interpretation, source);
38012 find mayExist(problem, interpretation, target);
38013 // Type consistency
38014 find mayInstanceOfEClassifier_class(problem,interpretation,source);
38015 StringElement(target);
38016 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38017 // the upper bound of the multiplicity should be considered.
38018 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
38019 check(numberOfExistingReferences < 1);
38020} or {
38021 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
38022}
38023/**
38024 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
38025 */
38026private pattern mustInRelationserializable_attribute_EDataType(
38027 problem:LogicProblem, interpretation:PartialInterpretation,
38028 source: DefinedElement, target:DefinedElement)
38029{
38030 find interpretation(problem,interpretation);
38031 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38032 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
38033 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38034 BinaryElementRelationLink.param1(link,source);
38035 BinaryElementRelationLink.param2(link,target);
38036}
38037/**
38038 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
38039 */
38040private pattern mayInRelationserializable_attribute_EDataType(
38041 problem:LogicProblem, interpretation:PartialInterpretation,
38042 source: DefinedElement, target:DefinedElement)
38043{
38044 find interpretation(problem,interpretation);
38045 // The two endpoint of the link have to exist
38046 find mayExist(problem, interpretation, source);
38047 find mayExist(problem, interpretation, target);
38048 // Type consistency
38049 find mayInstanceOfEDataType_class(problem,interpretation,source);
38050 BooleanElement(target);
38051 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38052 // the upper bound of the multiplicity should be considered.
38053 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
38054 check(numberOfExistingReferences < 1);
38055} or {
38056 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
38057}
38058/**
38059 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
38060 */
38061private pattern mustInRelationvalue_attribute_EEnumLiteral(
38062 problem:LogicProblem, interpretation:PartialInterpretation,
38063 source: DefinedElement, target:DefinedElement)
38064{
38065 find interpretation(problem,interpretation);
38066 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38067 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
38068 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38069 BinaryElementRelationLink.param1(link,source);
38070 BinaryElementRelationLink.param2(link,target);
38071}
38072/**
38073 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
38074 */
38075private pattern mayInRelationvalue_attribute_EEnumLiteral(
38076 problem:LogicProblem, interpretation:PartialInterpretation,
38077 source: DefinedElement, target:DefinedElement)
38078{
38079 find interpretation(problem,interpretation);
38080 // The two endpoint of the link have to exist
38081 find mayExist(problem, interpretation, source);
38082 find mayExist(problem, interpretation, target);
38083 // Type consistency
38084 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
38085 IntegerElement(target);
38086 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38087 // the upper bound of the multiplicity should be considered.
38088 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
38089 check(numberOfExistingReferences < 1);
38090} or {
38091 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
38092}
38093/**
38094 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
38095 */
38096private pattern mustInRelationliteral_attribute_EEnumLiteral(
38097 problem:LogicProblem, interpretation:PartialInterpretation,
38098 source: DefinedElement, target:DefinedElement)
38099{
38100 find interpretation(problem,interpretation);
38101 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38102 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
38103 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38104 BinaryElementRelationLink.param1(link,source);
38105 BinaryElementRelationLink.param2(link,target);
38106}
38107/**
38108 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
38109 */
38110private pattern mayInRelationliteral_attribute_EEnumLiteral(
38111 problem:LogicProblem, interpretation:PartialInterpretation,
38112 source: DefinedElement, target:DefinedElement)
38113{
38114 find interpretation(problem,interpretation);
38115 // The two endpoint of the link have to exist
38116 find mayExist(problem, interpretation, source);
38117 find mayExist(problem, interpretation, target);
38118 // Type consistency
38119 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
38120 StringElement(target);
38121 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38122 // the upper bound of the multiplicity should be considered.
38123 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
38124 check(numberOfExistingReferences < 1);
38125} or {
38126 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
38127}
38128/**
38129 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
38130 */
38131private pattern mustInRelationname_attribute_ENamedElement(
38132 problem:LogicProblem, interpretation:PartialInterpretation,
38133 source: DefinedElement, target:DefinedElement)
38134{
38135 find interpretation(problem,interpretation);
38136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
38138 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38139 BinaryElementRelationLink.param1(link,source);
38140 BinaryElementRelationLink.param2(link,target);
38141}
38142/**
38143 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
38144 */
38145private pattern mayInRelationname_attribute_ENamedElement(
38146 problem:LogicProblem, interpretation:PartialInterpretation,
38147 source: DefinedElement, target:DefinedElement)
38148{
38149 find interpretation(problem,interpretation);
38150 // The two endpoint of the link have to exist
38151 find mayExist(problem, interpretation, source);
38152 find mayExist(problem, interpretation, target);
38153 // Type consistency
38154 find mayInstanceOfENamedElement_class(problem,interpretation,source);
38155 StringElement(target);
38156 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38157 // the upper bound of the multiplicity should be considered.
38158 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
38159 check(numberOfExistingReferences < 1);
38160} or {
38161 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
38162}
38163/**
38164 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
38165 */
38166private pattern mustInRelationnsURI_attribute_EPackage(
38167 problem:LogicProblem, interpretation:PartialInterpretation,
38168 source: DefinedElement, target:DefinedElement)
38169{
38170 find interpretation(problem,interpretation);
38171 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38172 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
38173 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38174 BinaryElementRelationLink.param1(link,source);
38175 BinaryElementRelationLink.param2(link,target);
38176}
38177/**
38178 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
38179 */
38180private pattern mayInRelationnsURI_attribute_EPackage(
38181 problem:LogicProblem, interpretation:PartialInterpretation,
38182 source: DefinedElement, target:DefinedElement)
38183{
38184 find interpretation(problem,interpretation);
38185 // The two endpoint of the link have to exist
38186 find mayExist(problem, interpretation, source);
38187 find mayExist(problem, interpretation, target);
38188 // Type consistency
38189 find mayInstanceOfEPackage_class(problem,interpretation,source);
38190 StringElement(target);
38191 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38192 // the upper bound of the multiplicity should be considered.
38193 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
38194 check(numberOfExistingReferences < 1);
38195} or {
38196 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
38197}
38198/**
38199 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
38200 */
38201private pattern mustInRelationnsPrefix_attribute_EPackage(
38202 problem:LogicProblem, interpretation:PartialInterpretation,
38203 source: DefinedElement, target:DefinedElement)
38204{
38205 find interpretation(problem,interpretation);
38206 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38207 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
38208 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38209 BinaryElementRelationLink.param1(link,source);
38210 BinaryElementRelationLink.param2(link,target);
38211}
38212/**
38213 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
38214 */
38215private pattern mayInRelationnsPrefix_attribute_EPackage(
38216 problem:LogicProblem, interpretation:PartialInterpretation,
38217 source: DefinedElement, target:DefinedElement)
38218{
38219 find interpretation(problem,interpretation);
38220 // The two endpoint of the link have to exist
38221 find mayExist(problem, interpretation, source);
38222 find mayExist(problem, interpretation, target);
38223 // Type consistency
38224 find mayInstanceOfEPackage_class(problem,interpretation,source);
38225 StringElement(target);
38226 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38227 // the upper bound of the multiplicity should be considered.
38228 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
38229 check(numberOfExistingReferences < 1);
38230} or {
38231 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
38232}
38233/**
38234 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
38235 */
38236private pattern mustInRelationcontainment_attribute_EReference(
38237 problem:LogicProblem, interpretation:PartialInterpretation,
38238 source: DefinedElement, target:DefinedElement)
38239{
38240 find interpretation(problem,interpretation);
38241 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38242 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
38243 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38244 BinaryElementRelationLink.param1(link,source);
38245 BinaryElementRelationLink.param2(link,target);
38246}
38247/**
38248 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
38249 */
38250private pattern mayInRelationcontainment_attribute_EReference(
38251 problem:LogicProblem, interpretation:PartialInterpretation,
38252 source: DefinedElement, target:DefinedElement)
38253{
38254 find interpretation(problem,interpretation);
38255 // The two endpoint of the link have to exist
38256 find mayExist(problem, interpretation, source);
38257 find mayExist(problem, interpretation, target);
38258 // Type consistency
38259 find mayInstanceOfEReference_class(problem,interpretation,source);
38260 BooleanElement(target);
38261 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38262 // the upper bound of the multiplicity should be considered.
38263 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
38264 check(numberOfExistingReferences < 1);
38265} or {
38266 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
38267}
38268/**
38269 * Matcher for detecting tuples t where []container attribute EReference(source,target)
38270 */
38271private pattern mustInRelationcontainer_attribute_EReference(
38272 problem:LogicProblem, interpretation:PartialInterpretation,
38273 source: DefinedElement, target:DefinedElement)
38274{
38275 find interpretation(problem,interpretation);
38276 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38277 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
38278 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38279 BinaryElementRelationLink.param1(link,source);
38280 BinaryElementRelationLink.param2(link,target);
38281}
38282/**
38283 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
38284 */
38285private pattern mayInRelationcontainer_attribute_EReference(
38286 problem:LogicProblem, interpretation:PartialInterpretation,
38287 source: DefinedElement, target:DefinedElement)
38288{
38289 find interpretation(problem,interpretation);
38290 // The two endpoint of the link have to exist
38291 find mayExist(problem, interpretation, source);
38292 find mayExist(problem, interpretation, target);
38293 // Type consistency
38294 find mayInstanceOfEReference_class(problem,interpretation,source);
38295 BooleanElement(target);
38296 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38297 // the upper bound of the multiplicity should be considered.
38298 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
38299 check(numberOfExistingReferences < 1);
38300} or {
38301 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
38302}
38303/**
38304 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
38305 */
38306private pattern mustInRelationresolveProxies_attribute_EReference(
38307 problem:LogicProblem, interpretation:PartialInterpretation,
38308 source: DefinedElement, target:DefinedElement)
38309{
38310 find interpretation(problem,interpretation);
38311 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38312 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
38313 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38314 BinaryElementRelationLink.param1(link,source);
38315 BinaryElementRelationLink.param2(link,target);
38316}
38317/**
38318 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
38319 */
38320private pattern mayInRelationresolveProxies_attribute_EReference(
38321 problem:LogicProblem, interpretation:PartialInterpretation,
38322 source: DefinedElement, target:DefinedElement)
38323{
38324 find interpretation(problem,interpretation);
38325 // The two endpoint of the link have to exist
38326 find mayExist(problem, interpretation, source);
38327 find mayExist(problem, interpretation, target);
38328 // Type consistency
38329 find mayInstanceOfEReference_class(problem,interpretation,source);
38330 BooleanElement(target);
38331 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38332 // the upper bound of the multiplicity should be considered.
38333 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
38334 check(numberOfExistingReferences < 1);
38335} or {
38336 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
38337}
38338/**
38339 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
38340 */
38341private pattern mustInRelationchangeable_attribute_EStructuralFeature(
38342 problem:LogicProblem, interpretation:PartialInterpretation,
38343 source: DefinedElement, target:DefinedElement)
38344{
38345 find interpretation(problem,interpretation);
38346 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38347 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
38348 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38349 BinaryElementRelationLink.param1(link,source);
38350 BinaryElementRelationLink.param2(link,target);
38351}
38352/**
38353 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
38354 */
38355private pattern mayInRelationchangeable_attribute_EStructuralFeature(
38356 problem:LogicProblem, interpretation:PartialInterpretation,
38357 source: DefinedElement, target:DefinedElement)
38358{
38359 find interpretation(problem,interpretation);
38360 // The two endpoint of the link have to exist
38361 find mayExist(problem, interpretation, source);
38362 find mayExist(problem, interpretation, target);
38363 // Type consistency
38364 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38365 BooleanElement(target);
38366 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38367 // the upper bound of the multiplicity should be considered.
38368 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
38369 check(numberOfExistingReferences < 1);
38370} or {
38371 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
38372}
38373/**
38374 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
38375 */
38376private pattern mustInRelationvolatile_attribute_EStructuralFeature(
38377 problem:LogicProblem, interpretation:PartialInterpretation,
38378 source: DefinedElement, target:DefinedElement)
38379{
38380 find interpretation(problem,interpretation);
38381 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38382 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
38383 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38384 BinaryElementRelationLink.param1(link,source);
38385 BinaryElementRelationLink.param2(link,target);
38386}
38387/**
38388 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
38389 */
38390private pattern mayInRelationvolatile_attribute_EStructuralFeature(
38391 problem:LogicProblem, interpretation:PartialInterpretation,
38392 source: DefinedElement, target:DefinedElement)
38393{
38394 find interpretation(problem,interpretation);
38395 // The two endpoint of the link have to exist
38396 find mayExist(problem, interpretation, source);
38397 find mayExist(problem, interpretation, target);
38398 // Type consistency
38399 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38400 BooleanElement(target);
38401 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38402 // the upper bound of the multiplicity should be considered.
38403 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
38404 check(numberOfExistingReferences < 1);
38405} or {
38406 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
38407}
38408/**
38409 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
38410 */
38411private pattern mustInRelationtransient_attribute_EStructuralFeature(
38412 problem:LogicProblem, interpretation:PartialInterpretation,
38413 source: DefinedElement, target:DefinedElement)
38414{
38415 find interpretation(problem,interpretation);
38416 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38417 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
38418 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38419 BinaryElementRelationLink.param1(link,source);
38420 BinaryElementRelationLink.param2(link,target);
38421}
38422/**
38423 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
38424 */
38425private pattern mayInRelationtransient_attribute_EStructuralFeature(
38426 problem:LogicProblem, interpretation:PartialInterpretation,
38427 source: DefinedElement, target:DefinedElement)
38428{
38429 find interpretation(problem,interpretation);
38430 // The two endpoint of the link have to exist
38431 find mayExist(problem, interpretation, source);
38432 find mayExist(problem, interpretation, target);
38433 // Type consistency
38434 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38435 BooleanElement(target);
38436 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38437 // the upper bound of the multiplicity should be considered.
38438 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
38439 check(numberOfExistingReferences < 1);
38440} or {
38441 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
38442}
38443/**
38444 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
38445 */
38446private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
38447 problem:LogicProblem, interpretation:PartialInterpretation,
38448 source: DefinedElement, target:DefinedElement)
38449{
38450 find interpretation(problem,interpretation);
38451 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38452 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
38453 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38454 BinaryElementRelationLink.param1(link,source);
38455 BinaryElementRelationLink.param2(link,target);
38456}
38457/**
38458 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
38459 */
38460private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
38461 problem:LogicProblem, interpretation:PartialInterpretation,
38462 source: DefinedElement, target:DefinedElement)
38463{
38464 find interpretation(problem,interpretation);
38465 // The two endpoint of the link have to exist
38466 find mayExist(problem, interpretation, source);
38467 find mayExist(problem, interpretation, target);
38468 // Type consistency
38469 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38470 StringElement(target);
38471 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38472 // the upper bound of the multiplicity should be considered.
38473 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
38474 check(numberOfExistingReferences < 1);
38475} or {
38476 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
38477}
38478/**
38479 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
38480 */
38481private pattern mustInRelationunsettable_attribute_EStructuralFeature(
38482 problem:LogicProblem, interpretation:PartialInterpretation,
38483 source: DefinedElement, target:DefinedElement)
38484{
38485 find interpretation(problem,interpretation);
38486 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38487 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
38488 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38489 BinaryElementRelationLink.param1(link,source);
38490 BinaryElementRelationLink.param2(link,target);
38491}
38492/**
38493 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
38494 */
38495private pattern mayInRelationunsettable_attribute_EStructuralFeature(
38496 problem:LogicProblem, interpretation:PartialInterpretation,
38497 source: DefinedElement, target:DefinedElement)
38498{
38499 find interpretation(problem,interpretation);
38500 // The two endpoint of the link have to exist
38501 find mayExist(problem, interpretation, source);
38502 find mayExist(problem, interpretation, target);
38503 // Type consistency
38504 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38505 BooleanElement(target);
38506 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38507 // the upper bound of the multiplicity should be considered.
38508 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
38509 check(numberOfExistingReferences < 1);
38510} or {
38511 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
38512}
38513/**
38514 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
38515 */
38516private pattern mustInRelationderived_attribute_EStructuralFeature(
38517 problem:LogicProblem, interpretation:PartialInterpretation,
38518 source: DefinedElement, target:DefinedElement)
38519{
38520 find interpretation(problem,interpretation);
38521 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38522 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
38523 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38524 BinaryElementRelationLink.param1(link,source);
38525 BinaryElementRelationLink.param2(link,target);
38526}
38527/**
38528 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
38529 */
38530private pattern mayInRelationderived_attribute_EStructuralFeature(
38531 problem:LogicProblem, interpretation:PartialInterpretation,
38532 source: DefinedElement, target:DefinedElement)
38533{
38534 find interpretation(problem,interpretation);
38535 // The two endpoint of the link have to exist
38536 find mayExist(problem, interpretation, source);
38537 find mayExist(problem, interpretation, target);
38538 // Type consistency
38539 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
38540 BooleanElement(target);
38541 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38542 // the upper bound of the multiplicity should be considered.
38543 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
38544 check(numberOfExistingReferences < 1);
38545} or {
38546 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
38547}
38548/**
38549 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
38550 */
38551private pattern mustInRelationordered_attribute_ETypedElement(
38552 problem:LogicProblem, interpretation:PartialInterpretation,
38553 source: DefinedElement, target:DefinedElement)
38554{
38555 find interpretation(problem,interpretation);
38556 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38557 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
38558 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38559 BinaryElementRelationLink.param1(link,source);
38560 BinaryElementRelationLink.param2(link,target);
38561}
38562/**
38563 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
38564 */
38565private pattern mayInRelationordered_attribute_ETypedElement(
38566 problem:LogicProblem, interpretation:PartialInterpretation,
38567 source: DefinedElement, target:DefinedElement)
38568{
38569 find interpretation(problem,interpretation);
38570 // The two endpoint of the link have to exist
38571 find mayExist(problem, interpretation, source);
38572 find mayExist(problem, interpretation, target);
38573 // Type consistency
38574 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38575 BooleanElement(target);
38576 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38577 // the upper bound of the multiplicity should be considered.
38578 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
38579 check(numberOfExistingReferences < 1);
38580} or {
38581 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
38582}
38583/**
38584 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
38585 */
38586private pattern mustInRelationunique_attribute_ETypedElement(
38587 problem:LogicProblem, interpretation:PartialInterpretation,
38588 source: DefinedElement, target:DefinedElement)
38589{
38590 find interpretation(problem,interpretation);
38591 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38592 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
38593 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38594 BinaryElementRelationLink.param1(link,source);
38595 BinaryElementRelationLink.param2(link,target);
38596}
38597/**
38598 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
38599 */
38600private pattern mayInRelationunique_attribute_ETypedElement(
38601 problem:LogicProblem, interpretation:PartialInterpretation,
38602 source: DefinedElement, target:DefinedElement)
38603{
38604 find interpretation(problem,interpretation);
38605 // The two endpoint of the link have to exist
38606 find mayExist(problem, interpretation, source);
38607 find mayExist(problem, interpretation, target);
38608 // Type consistency
38609 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38610 BooleanElement(target);
38611 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38612 // the upper bound of the multiplicity should be considered.
38613 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
38614 check(numberOfExistingReferences < 1);
38615} or {
38616 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
38617}
38618/**
38619 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
38620 */
38621private pattern mustInRelationlowerBound_attribute_ETypedElement(
38622 problem:LogicProblem, interpretation:PartialInterpretation,
38623 source: DefinedElement, target:DefinedElement)
38624{
38625 find interpretation(problem,interpretation);
38626 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38627 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
38628 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38629 BinaryElementRelationLink.param1(link,source);
38630 BinaryElementRelationLink.param2(link,target);
38631}
38632/**
38633 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
38634 */
38635private pattern mayInRelationlowerBound_attribute_ETypedElement(
38636 problem:LogicProblem, interpretation:PartialInterpretation,
38637 source: DefinedElement, target:DefinedElement)
38638{
38639 find interpretation(problem,interpretation);
38640 // The two endpoint of the link have to exist
38641 find mayExist(problem, interpretation, source);
38642 find mayExist(problem, interpretation, target);
38643 // Type consistency
38644 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38645 IntegerElement(target);
38646 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38647 // the upper bound of the multiplicity should be considered.
38648 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
38649 check(numberOfExistingReferences < 1);
38650} or {
38651 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
38652}
38653/**
38654 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
38655 */
38656private pattern mustInRelationupperBound_attribute_ETypedElement(
38657 problem:LogicProblem, interpretation:PartialInterpretation,
38658 source: DefinedElement, target:DefinedElement)
38659{
38660 find interpretation(problem,interpretation);
38661 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38662 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
38663 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38664 BinaryElementRelationLink.param1(link,source);
38665 BinaryElementRelationLink.param2(link,target);
38666}
38667/**
38668 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
38669 */
38670private pattern mayInRelationupperBound_attribute_ETypedElement(
38671 problem:LogicProblem, interpretation:PartialInterpretation,
38672 source: DefinedElement, target:DefinedElement)
38673{
38674 find interpretation(problem,interpretation);
38675 // The two endpoint of the link have to exist
38676 find mayExist(problem, interpretation, source);
38677 find mayExist(problem, interpretation, target);
38678 // Type consistency
38679 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38680 IntegerElement(target);
38681 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38682 // the upper bound of the multiplicity should be considered.
38683 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
38684 check(numberOfExistingReferences < 1);
38685} or {
38686 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
38687}
38688/**
38689 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
38690 */
38691private pattern mustInRelationmany_attribute_ETypedElement(
38692 problem:LogicProblem, interpretation:PartialInterpretation,
38693 source: DefinedElement, target:DefinedElement)
38694{
38695 find interpretation(problem,interpretation);
38696 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38697 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
38698 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38699 BinaryElementRelationLink.param1(link,source);
38700 BinaryElementRelationLink.param2(link,target);
38701}
38702/**
38703 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
38704 */
38705private pattern mayInRelationmany_attribute_ETypedElement(
38706 problem:LogicProblem, interpretation:PartialInterpretation,
38707 source: DefinedElement, target:DefinedElement)
38708{
38709 find interpretation(problem,interpretation);
38710 // The two endpoint of the link have to exist
38711 find mayExist(problem, interpretation, source);
38712 find mayExist(problem, interpretation, target);
38713 // Type consistency
38714 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38715 BooleanElement(target);
38716 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38717 // the upper bound of the multiplicity should be considered.
38718 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
38719 check(numberOfExistingReferences < 1);
38720} or {
38721 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
38722}
38723/**
38724 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
38725 */
38726private pattern mustInRelationrequired_attribute_ETypedElement(
38727 problem:LogicProblem, interpretation:PartialInterpretation,
38728 source: DefinedElement, target:DefinedElement)
38729{
38730 find interpretation(problem,interpretation);
38731 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38732 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
38733 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38734 BinaryElementRelationLink.param1(link,source);
38735 BinaryElementRelationLink.param2(link,target);
38736}
38737/**
38738 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
38739 */
38740private pattern mayInRelationrequired_attribute_ETypedElement(
38741 problem:LogicProblem, interpretation:PartialInterpretation,
38742 source: DefinedElement, target:DefinedElement)
38743{
38744 find interpretation(problem,interpretation);
38745 // The two endpoint of the link have to exist
38746 find mayExist(problem, interpretation, source);
38747 find mayExist(problem, interpretation, target);
38748 // Type consistency
38749 find mayInstanceOfETypedElement_class(problem,interpretation,source);
38750 BooleanElement(target);
38751 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38752 // the upper bound of the multiplicity should be considered.
38753 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
38754 check(numberOfExistingReferences < 1);
38755} or {
38756 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
38757}
38758/**
38759 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
38760 */
38761private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
38762 problem:LogicProblem, interpretation:PartialInterpretation,
38763 source: DefinedElement, target:DefinedElement)
38764{
38765 find interpretation(problem,interpretation);
38766 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38767 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
38768 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38769 BinaryElementRelationLink.param1(link,source);
38770 BinaryElementRelationLink.param2(link,target);
38771}
38772/**
38773 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
38774 */
38775private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
38776 problem:LogicProblem, interpretation:PartialInterpretation,
38777 source: DefinedElement, target:DefinedElement)
38778{
38779 find interpretation(problem,interpretation);
38780 // The two endpoint of the link have to exist
38781 find mayExist(problem, interpretation, source);
38782 find mayExist(problem, interpretation, target);
38783 // Type consistency
38784 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
38785 StringElement(target);
38786 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38787 // the upper bound of the multiplicity should be considered.
38788 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
38789 check(numberOfExistingReferences < 1);
38790} or {
38791 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
38792}
38793/**
38794 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
38795 */
38796private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
38797 problem:LogicProblem, interpretation:PartialInterpretation,
38798 source: DefinedElement, target:DefinedElement)
38799{
38800 find interpretation(problem,interpretation);
38801 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38802 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
38803 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
38804 BinaryElementRelationLink.param1(link,source);
38805 BinaryElementRelationLink.param2(link,target);
38806}
38807/**
38808 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
38809 */
38810private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
38811 problem:LogicProblem, interpretation:PartialInterpretation,
38812 source: DefinedElement, target:DefinedElement)
38813{
38814 find interpretation(problem,interpretation);
38815 // The two endpoint of the link have to exist
38816 find mayExist(problem, interpretation, source);
38817 find mayExist(problem, interpretation, target);
38818 // Type consistency
38819 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
38820 StringElement(target);
38821 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
38822 // the upper bound of the multiplicity should be considered.
38823 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
38824 check(numberOfExistingReferences < 1);
38825} or {
38826 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
38827}
38828
38829//////////
38830// 1.3 Relation Definition Indexers
38831//////////
38832
38833//////////
38834// 1.4 Containment Indexer
38835//////////
38836private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
38837 find mustContains4(_,_,source,target);
38838}
38839
38840private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
38841 source: DefinedElement, target: DefinedElement)
38842 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
38843
38844 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
38845
38846 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
38847
38848 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
38849
38850 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
38851
38852 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
38853
38854 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
38855
38856 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
38857
38858 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
38859
38860 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
38861
38862 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
38863
38864 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
38865
38866 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
38867
38868 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
38869
38870 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
38871
38872 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
38873
38874 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
38875
38876 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
38877
38878private pattern mustTransitiveContains(source,target) {
38879 find mustContains2+(source,target);
38880}
38881
38882//////////
38883// 2. Invalidation Indexers
38884//////////
38885// 2.1 Invalidated by WF Queries
38886//////////
38887
38888//////////
38889// 3. Unfinishedness Indexers
38890//////////
38891// 3.1 Unfinishedness Measured by Multiplicity
38892//////////
38893pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
38894 find interpretation(problem,interpretation);
38895 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38896 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
38897 find mustInstanceOfEAttribute_class(problem,interpretation,object);
38898 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
38899 check(numberOfExistingReferences < 1);
38900 missingMultiplicity == eval(1-numberOfExistingReferences);
38901}
38902pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
38903 find interpretation(problem,interpretation);
38904 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38905 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
38906 find mustInstanceOfEReference_class(problem,interpretation,object);
38907 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
38908 check(numberOfExistingReferences < 1);
38909 missingMultiplicity == eval(1-numberOfExistingReferences);
38910}
38911pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
38912 find interpretation(problem,interpretation);
38913 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
38914 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
38915 find mustInstanceOfEGenericType_class(problem,interpretation,object);
38916 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
38917 check(numberOfExistingReferences < 1);
38918 missingMultiplicity == eval(1-numberOfExistingReferences);
38919}
38920
38921//////////
38922// 3.2 Unfinishedness Measured by WF Queries
38923//////////
38924
38925//////////
38926// 4. Refinement Indexers
38927//////////
38928// 4.1 Object constructors
38929//////////
38930private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
38931{
38932 find interpretation(problem,interpretation);
38933 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
38934 find mustExist(problem, interpretation, root);
38935}or{
38936 find interpretation(problem,interpretation);
38937 find mustInstanceOfETypedElement_class(problem,interpretation,root);
38938 find mustExist(problem, interpretation, root);
38939}or{
38940 find interpretation(problem,interpretation);
38941 find mustInstanceOfEClass_class(problem,interpretation,root);
38942 find mustExist(problem, interpretation, root);
38943}or{
38944 find interpretation(problem,interpretation);
38945 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
38946 find mustExist(problem, interpretation, root);
38947}or{
38948 find interpretation(problem,interpretation);
38949 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
38950 find mustExist(problem, interpretation, root);
38951}or{
38952 find interpretation(problem,interpretation);
38953 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
38954 find mustExist(problem, interpretation, root);
38955}or{
38956 find interpretation(problem,interpretation);
38957 find mustInstanceOfEAttribute_class(problem,interpretation,root);
38958 find mustExist(problem, interpretation, root);
38959}or{
38960 find interpretation(problem,interpretation);
38961 find mustInstanceOfEObject_class(problem,interpretation,root);
38962 find mustExist(problem, interpretation, root);
38963}or{
38964 find interpretation(problem,interpretation);
38965 find mustInstanceOfEClassifier_class(problem,interpretation,root);
38966 find mustExist(problem, interpretation, root);
38967}or{
38968 find interpretation(problem,interpretation);
38969 find mustInstanceOfEGenericType_class(problem,interpretation,root);
38970 find mustExist(problem, interpretation, root);
38971}or{
38972 find interpretation(problem,interpretation);
38973 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
38974 find mustExist(problem, interpretation, root);
38975}or{
38976 find interpretation(problem,interpretation);
38977 find mustInstanceOfEDataType_class(problem,interpretation,root);
38978 find mustExist(problem, interpretation, root);
38979}or{
38980 find interpretation(problem,interpretation);
38981 find mustInstanceOfEOperation_class(problem,interpretation,root);
38982 find mustExist(problem, interpretation, root);
38983}or{
38984 find interpretation(problem,interpretation);
38985 find mustInstanceOfEPackage_class(problem,interpretation,root);
38986 find mustExist(problem, interpretation, root);
38987}or{
38988 find interpretation(problem,interpretation);
38989 find mustInstanceOfEParameter_class(problem,interpretation,root);
38990 find mustExist(problem, interpretation, root);
38991}or{
38992 find interpretation(problem,interpretation);
38993 find mustInstanceOfEModelElement_class(problem,interpretation,root);
38994 find mustExist(problem, interpretation, root);
38995}or{
38996 find interpretation(problem,interpretation);
38997 find mustInstanceOfEReference_class(problem,interpretation,root);
38998 find mustExist(problem, interpretation, root);
38999}or{
39000 find interpretation(problem,interpretation);
39001 find mustInstanceOfEEnum_class(problem,interpretation,root);
39002 find mustExist(problem, interpretation, root);
39003}or{
39004 find interpretation(problem,interpretation);
39005 find mustInstanceOfENamedElement_class(problem,interpretation,root);
39006 find mustExist(problem, interpretation, root);
39007}or{
39008 find interpretation(problem,interpretation);
39009 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
39010 find mustExist(problem, interpretation, root);
39011}or{
39012 find interpretation(problem,interpretation);
39013 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
39014 find mustExist(problem, interpretation, root);
39015}or{
39016 find interpretation(problem,interpretation);
39017 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
39018 find mustExist(problem, interpretation, root);
39019}or{
39020 find interpretation(problem,interpretation);
39021 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
39022 find mustExist(problem, interpretation, root);
39023}or{
39024 find interpretation(problem,interpretation);
39025 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
39026 find mustExist(problem, interpretation, root);
39027}or{
39028 find interpretation(problem,interpretation);
39029 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
39030 find mustExist(problem, interpretation, root);
39031}
39032pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
39033 problem:LogicProblem, interpretation:PartialInterpretation,
39034 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39035 container:DefinedElement)
39036{
39037 find interpretation(problem,interpretation);
39038 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39039 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
39040 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39041 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
39042 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39043 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
39044 find mustInstanceOfEModelElement_class(problem,interpretation,container);
39045 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
39046 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
39047 find mustExist(problem, interpretation, container);
39048 neg find mustExist(problem, interpretation, newObject);
39049}
39050pattern createObject_EAnnotation_class(
39051 problem:LogicProblem, interpretation:PartialInterpretation,
39052 typeInterpretation:PartialComplexTypeInterpretation)
39053{
39054 find interpretation(problem,interpretation);
39055 neg find hasElementInContainment(problem,interpretation);
39056 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39057 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
39058 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
39059 find mayExist(problem, interpretation, newObject);
39060 neg find mustExist(problem, interpretation, newObject);
39061}
39062pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
39063 problem:LogicProblem, interpretation:PartialInterpretation,
39064 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39065 container:DefinedElement)
39066{
39067 find interpretation(problem,interpretation);
39068 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39069 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
39070 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39071 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
39072 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39073 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
39074 find mustInstanceOfEPackage_class(problem,interpretation,container);
39075 find mayInstanceOfEClass_class(problem,interpretation,newObject);
39076 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
39077 find mustExist(problem, interpretation, container);
39078 neg find mustExist(problem, interpretation, newObject);
39079}
39080pattern createObject_EClass_class(
39081 problem:LogicProblem, interpretation:PartialInterpretation,
39082 typeInterpretation:PartialComplexTypeInterpretation)
39083{
39084 find interpretation(problem,interpretation);
39085 neg find hasElementInContainment(problem,interpretation);
39086 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39087 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
39088 find mayInstanceOfEClass_class(problem,interpretation,newObject);
39089 find mayExist(problem, interpretation, newObject);
39090 neg find mustExist(problem, interpretation, newObject);
39091}
39092pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
39093 problem:LogicProblem, interpretation:PartialInterpretation,
39094 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39095 container:DefinedElement)
39096{
39097 find interpretation(problem,interpretation);
39098 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39099 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
39100 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39101 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
39102 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39103 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
39104 find mustInstanceOfEPackage_class(problem,interpretation,container);
39105 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
39106 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
39107 find mustExist(problem, interpretation, container);
39108 neg find mustExist(problem, interpretation, newObject);
39109}
39110pattern createObject_EEnum_class(
39111 problem:LogicProblem, interpretation:PartialInterpretation,
39112 typeInterpretation:PartialComplexTypeInterpretation)
39113{
39114 find interpretation(problem,interpretation);
39115 neg find hasElementInContainment(problem,interpretation);
39116 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39117 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
39118 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
39119 find mayExist(problem, interpretation, newObject);
39120 neg find mustExist(problem, interpretation, newObject);
39121}
39122pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
39123 problem:LogicProblem, interpretation:PartialInterpretation,
39124 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39125 container:DefinedElement)
39126{
39127 find interpretation(problem,interpretation);
39128 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39129 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
39130 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39131 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
39132 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39133 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
39134 find mustInstanceOfEClass_class(problem,interpretation,container);
39135 find mayInstanceOfEReference_class(problem,interpretation,newObject);
39136 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
39137 find mustExist(problem, interpretation, container);
39138 neg find mustExist(problem, interpretation, newObject);
39139}
39140pattern createObject_EReference_class(
39141 problem:LogicProblem, interpretation:PartialInterpretation,
39142 typeInterpretation:PartialComplexTypeInterpretation)
39143{
39144 find interpretation(problem,interpretation);
39145 neg find hasElementInContainment(problem,interpretation);
39146 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39147 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
39148 find mayInstanceOfEReference_class(problem,interpretation,newObject);
39149 find mayExist(problem, interpretation, newObject);
39150 neg find mustExist(problem, interpretation, newObject);
39151}
39152pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
39153 problem:LogicProblem, interpretation:PartialInterpretation,
39154 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39155 container:DefinedElement)
39156{
39157 find interpretation(problem,interpretation);
39158 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39159 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
39160 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39161 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
39162 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39163 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
39164 find mustInstanceOfEClass_class(problem,interpretation,container);
39165 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
39166 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
39167 find mustExist(problem, interpretation, container);
39168 neg find mustExist(problem, interpretation, newObject);
39169}
39170pattern createObject_EOperation_class(
39171 problem:LogicProblem, interpretation:PartialInterpretation,
39172 typeInterpretation:PartialComplexTypeInterpretation)
39173{
39174 find interpretation(problem,interpretation);
39175 neg find hasElementInContainment(problem,interpretation);
39176 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39177 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
39178 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
39179 find mayExist(problem, interpretation, newObject);
39180 neg find mustExist(problem, interpretation, newObject);
39181}
39182pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
39183 problem:LogicProblem, interpretation:PartialInterpretation,
39184 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39185 container:DefinedElement)
39186{
39187 find interpretation(problem,interpretation);
39188 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39189 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
39190 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39191 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
39192 find mustInstanceOfEClassifier_class(problem,interpretation,container);
39193 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
39194 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
39195 find mustExist(problem, interpretation, container);
39196 neg find mustExist(problem, interpretation, newObject);
39197}
39198pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
39199 problem:LogicProblem, interpretation:PartialInterpretation,
39200 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39201 container:DefinedElement)
39202{
39203 find interpretation(problem,interpretation);
39204 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39205 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
39206 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39207 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
39208 find mustInstanceOfEOperation_class(problem,interpretation,container);
39209 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
39210 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
39211 find mustExist(problem, interpretation, container);
39212 neg find mustExist(problem, interpretation, newObject);
39213}
39214pattern createObject_ETypeParameter_class(
39215 problem:LogicProblem, interpretation:PartialInterpretation,
39216 typeInterpretation:PartialComplexTypeInterpretation)
39217{
39218 find interpretation(problem,interpretation);
39219 neg find hasElementInContainment(problem,interpretation);
39220 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39221 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
39222 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
39223 find mayExist(problem, interpretation, newObject);
39224 neg find mustExist(problem, interpretation, newObject);
39225}
39226pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
39227 problem:LogicProblem, interpretation:PartialInterpretation,
39228 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39229 container:DefinedElement)
39230{
39231 find interpretation(problem,interpretation);
39232 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39233 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
39234 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39235 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
39236 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39237 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
39238 find mustInstanceOfEPackage_class(problem,interpretation,container);
39239 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
39240 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
39241 find mustExist(problem, interpretation, container);
39242 neg find mustExist(problem, interpretation, newObject);
39243}
39244pattern createObject_EPackage_class_UndefinedPart(
39245 problem:LogicProblem, interpretation:PartialInterpretation,
39246 typeInterpretation:PartialComplexTypeInterpretation)
39247{
39248 find interpretation(problem,interpretation);
39249 neg find hasElementInContainment(problem,interpretation);
39250 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39251 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
39252 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
39253 find mayExist(problem, interpretation, newObject);
39254 neg find mustExist(problem, interpretation, newObject);
39255}
39256pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
39257 problem:LogicProblem, interpretation:PartialInterpretation,
39258 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39259 container:DefinedElement)
39260{
39261 find interpretation(problem,interpretation);
39262 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39263 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
39264 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39265 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
39266 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
39267 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
39268 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
39269 find mustExist(problem, interpretation, container);
39270 neg find mustExist(problem, interpretation, newObject);
39271}
39272pattern createObject_EStringToStringMapEntry_class(
39273 problem:LogicProblem, interpretation:PartialInterpretation,
39274 typeInterpretation:PartialComplexTypeInterpretation)
39275{
39276 find interpretation(problem,interpretation);
39277 neg find hasElementInContainment(problem,interpretation);
39278 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39279 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
39280 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
39281 find mayExist(problem, interpretation, newObject);
39282 neg find mustExist(problem, interpretation, newObject);
39283}
39284pattern createObject_EObject_class_by_contents_reference_EAnnotation(
39285 problem:LogicProblem, interpretation:PartialInterpretation,
39286 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39287 container:DefinedElement)
39288{
39289 find interpretation(problem,interpretation);
39290 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39291 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
39292 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39293 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
39294 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
39295 find mayInstanceOfEObject_class(problem,interpretation,newObject);
39296 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
39297 find mustExist(problem, interpretation, container);
39298 neg find mustExist(problem, interpretation, newObject);
39299}
39300pattern createObject_EObject_class(
39301 problem:LogicProblem, interpretation:PartialInterpretation,
39302 typeInterpretation:PartialComplexTypeInterpretation)
39303{
39304 find interpretation(problem,interpretation);
39305 neg find hasElementInContainment(problem,interpretation);
39306 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39307 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
39308 find mayInstanceOfEObject_class(problem,interpretation,newObject);
39309 find mayExist(problem, interpretation, newObject);
39310 neg find mustExist(problem, interpretation, newObject);
39311}
39312pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
39313 problem:LogicProblem, interpretation:PartialInterpretation,
39314 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39315 container:DefinedElement)
39316{
39317 find interpretation(problem,interpretation);
39318 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39319 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39320 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39321 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
39322 find mustInstanceOfEClass_class(problem,interpretation,container);
39323 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39324 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
39325 find mustExist(problem, interpretation, container);
39326 neg find mustExist(problem, interpretation, newObject);
39327}
39328pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
39329 problem:LogicProblem, interpretation:PartialInterpretation,
39330 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39331 container:DefinedElement)
39332{
39333 find interpretation(problem,interpretation);
39334 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39335 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39336 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39337 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
39338 find mustInstanceOfEOperation_class(problem,interpretation,container);
39339 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39340 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
39341 find mustExist(problem, interpretation, container);
39342 neg find mustExist(problem, interpretation, newObject);
39343}
39344pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
39345 problem:LogicProblem, interpretation:PartialInterpretation,
39346 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39347 container:DefinedElement)
39348{
39349 find interpretation(problem,interpretation);
39350 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39351 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39352 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39353 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
39354 find mustInstanceOfETypedElement_class(problem,interpretation,container);
39355 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39356 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
39357 find mustExist(problem, interpretation, container);
39358 neg find mustExist(problem, interpretation, newObject);
39359}
39360pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
39361 problem:LogicProblem, interpretation:PartialInterpretation,
39362 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39363 container:DefinedElement)
39364{
39365 find interpretation(problem,interpretation);
39366 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39367 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39368 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39369 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
39370 find mustInstanceOfEGenericType_class(problem,interpretation,container);
39371 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39372 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
39373 find mustExist(problem, interpretation, container);
39374 neg find mustExist(problem, interpretation, newObject);
39375}
39376pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
39377 problem:LogicProblem, interpretation:PartialInterpretation,
39378 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39379 container:DefinedElement)
39380{
39381 find interpretation(problem,interpretation);
39382 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39383 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39384 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39385 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
39386 find mustInstanceOfEGenericType_class(problem,interpretation,container);
39387 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39388 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
39389 find mustExist(problem, interpretation, container);
39390 neg find mustExist(problem, interpretation, newObject);
39391}
39392pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
39393 problem:LogicProblem, interpretation:PartialInterpretation,
39394 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39395 container:DefinedElement)
39396{
39397 find interpretation(problem,interpretation);
39398 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39399 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39400 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39401 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
39402 find mustInstanceOfEGenericType_class(problem,interpretation,container);
39403 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39404 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
39405 find mustExist(problem, interpretation, container);
39406 neg find mustExist(problem, interpretation, newObject);
39407}
39408pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
39409 problem:LogicProblem, interpretation:PartialInterpretation,
39410 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39411 container:DefinedElement)
39412{
39413 find interpretation(problem,interpretation);
39414 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39415 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39416 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39417 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
39418 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
39419 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39420 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
39421 find mustExist(problem, interpretation, container);
39422 neg find mustExist(problem, interpretation, newObject);
39423}
39424pattern createObject_EGenericType_class(
39425 problem:LogicProblem, interpretation:PartialInterpretation,
39426 typeInterpretation:PartialComplexTypeInterpretation)
39427{
39428 find interpretation(problem,interpretation);
39429 neg find hasElementInContainment(problem,interpretation);
39430 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39431 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
39432 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
39433 find mayExist(problem, interpretation, newObject);
39434 neg find mustExist(problem, interpretation, newObject);
39435}
39436pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
39437 problem:LogicProblem, interpretation:PartialInterpretation,
39438 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39439 container:DefinedElement)
39440{
39441 find interpretation(problem,interpretation);
39442 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39443 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
39444 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39445 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
39446 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39447 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
39448 find mustInstanceOfEOperation_class(problem,interpretation,container);
39449 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
39450 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
39451 find mustExist(problem, interpretation, container);
39452 neg find mustExist(problem, interpretation, newObject);
39453}
39454pattern createObject_EParameter_class(
39455 problem:LogicProblem, interpretation:PartialInterpretation,
39456 typeInterpretation:PartialComplexTypeInterpretation)
39457{
39458 find interpretation(problem,interpretation);
39459 neg find hasElementInContainment(problem,interpretation);
39460 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39461 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
39462 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
39463 find mayExist(problem, interpretation, newObject);
39464 neg find mustExist(problem, interpretation, newObject);
39465}
39466pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
39467 problem:LogicProblem, interpretation:PartialInterpretation,
39468 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39469 container:DefinedElement)
39470{
39471 find interpretation(problem,interpretation);
39472 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39473 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
39474 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39475 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
39476 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39477 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
39478 find mustInstanceOfEClass_class(problem,interpretation,container);
39479 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
39480 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
39481 find mustExist(problem, interpretation, container);
39482 neg find mustExist(problem, interpretation, newObject);
39483}
39484pattern createObject_EAttribute_class(
39485 problem:LogicProblem, interpretation:PartialInterpretation,
39486 typeInterpretation:PartialComplexTypeInterpretation)
39487{
39488 find interpretation(problem,interpretation);
39489 neg find hasElementInContainment(problem,interpretation);
39490 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39491 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
39492 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
39493 find mayExist(problem, interpretation, newObject);
39494 neg find mustExist(problem, interpretation, newObject);
39495}
39496pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
39497 problem:LogicProblem, interpretation:PartialInterpretation,
39498 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39499 container:DefinedElement)
39500{
39501 find interpretation(problem,interpretation);
39502 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39503 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
39504 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39505 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
39506 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39507 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
39508 find mustInstanceOfEEnum_class(problem,interpretation,container);
39509 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
39510 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
39511 find mustExist(problem, interpretation, container);
39512 neg find mustExist(problem, interpretation, newObject);
39513}
39514pattern createObject_EEnumLiteral_class(
39515 problem:LogicProblem, interpretation:PartialInterpretation,
39516 typeInterpretation:PartialComplexTypeInterpretation)
39517{
39518 find interpretation(problem,interpretation);
39519 neg find hasElementInContainment(problem,interpretation);
39520 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39521 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
39522 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
39523 find mayExist(problem, interpretation, newObject);
39524 neg find mustExist(problem, interpretation, newObject);
39525}
39526pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
39527 problem:LogicProblem, interpretation:PartialInterpretation,
39528 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
39529 container:DefinedElement)
39530{
39531 find interpretation(problem,interpretation);
39532 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39533 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
39534 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
39535 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
39536 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
39537 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
39538 find mustInstanceOfEPackage_class(problem,interpretation,container);
39539 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
39540 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
39541 find mustExist(problem, interpretation, container);
39542 neg find mustExist(problem, interpretation, newObject);
39543}
39544pattern createObject_EDataType_class(
39545 problem:LogicProblem, interpretation:PartialInterpretation,
39546 typeInterpretation:PartialComplexTypeInterpretation)
39547{
39548 find interpretation(problem,interpretation);
39549 neg find hasElementInContainment(problem,interpretation);
39550 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
39551 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
39552 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
39553 find mayExist(problem, interpretation, newObject);
39554 neg find mustExist(problem, interpretation, newObject);
39555}
39556
39557//////////
39558// 4.2 Type refinement
39559//////////
39560pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39561 find interpretation(problem,interpretation);
39562 PartialInterpretation.newElements(interpretation,element);
39563 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
39564 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39565 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39566 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39567 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39568 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
39569}
39570pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39571 find interpretation(problem,interpretation);
39572 PartialInterpretation.newElements(interpretation,element);
39573 find mayInstanceOfEClass_class(problem,interpretation,element);
39574 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39575 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39576 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39577 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39578 neg find mustInstanceOfEClass_class(problem,interpretation,element);
39579 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39580 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39581 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
39582 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39583 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39584}
39585pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39586 find interpretation(problem,interpretation);
39587 PartialInterpretation.newElements(interpretation,element);
39588 find mayInstanceOfEEnum_class(problem,interpretation,element);
39589 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39590 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39591 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39592 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39593 neg find mustInstanceOfEClass_class(problem,interpretation,element);
39594 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39595 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
39596 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39597 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39598 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39599}
39600pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39601 find interpretation(problem,interpretation);
39602 PartialInterpretation.newElements(interpretation,element);
39603 find mayInstanceOfEReference_class(problem,interpretation,element);
39604 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39605 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39606 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39607 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39608 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39609 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
39610 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39611 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39612 neg find mustInstanceOfEReference_class(problem,interpretation,element);
39613 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39614 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39615 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39616}
39617pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39618 find interpretation(problem,interpretation);
39619 PartialInterpretation.newElements(interpretation,element);
39620 find mayInstanceOfEOperation_class(problem,interpretation,element);
39621 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39622 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39623 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39624 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39625 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39626 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
39627 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39628 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39629 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39630 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39631 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39632}
39633pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39634 find interpretation(problem,interpretation);
39635 PartialInterpretation.newElements(interpretation,element);
39636 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
39637 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39638 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39639 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39640 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39641 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39642 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39643 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39644 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39645 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39646}
39647pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39648 find interpretation(problem,interpretation);
39649 PartialInterpretation.newElements(interpretation,element);
39650 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
39651 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
39652 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39653 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39654 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39655 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39656 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39657 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39658 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39659 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39660}
39661pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39662 find interpretation(problem,interpretation);
39663 PartialInterpretation.newElements(interpretation,element);
39664 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39665 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39666 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39667 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39668 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
39669}
39670pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39671 find interpretation(problem,interpretation);
39672 PartialInterpretation.newElements(interpretation,element);
39673 find mayInstanceOfEObject_class(problem,interpretation,element);
39674 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39675 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39676 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39677 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
39678}
39679pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39680 find interpretation(problem,interpretation);
39681 PartialInterpretation.newElements(interpretation,element);
39682 find mayInstanceOfEGenericType_class(problem,interpretation,element);
39683 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39684 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39685 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39686 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
39687}
39688pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39689 find interpretation(problem,interpretation);
39690 PartialInterpretation.newElements(interpretation,element);
39691 find mayInstanceOfEParameter_class(problem,interpretation,element);
39692 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39693 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39694 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39695 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39696 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39697 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39698 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
39699 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39700 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39701 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39702 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39703}
39704pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39705 find interpretation(problem,interpretation);
39706 PartialInterpretation.newElements(interpretation,element);
39707 find mayInstanceOfEAttribute_class(problem,interpretation,element);
39708 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39709 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39710 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
39711 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39712 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39713 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39714 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
39715 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39716 neg find mustInstanceOfEReference_class(problem,interpretation,element);
39717 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
39718 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39719 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39720}
39721pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39722 find interpretation(problem,interpretation);
39723 PartialInterpretation.newElements(interpretation,element);
39724 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
39725 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39726 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39727 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39728 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39729 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39730 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39731 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
39732 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39733 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39734}
39735pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
39736 find interpretation(problem,interpretation);
39737 PartialInterpretation.newElements(interpretation,element);
39738 find mayInstanceOfEDataType_class(problem,interpretation,element);
39739 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
39740 neg find mustInstanceOfEObject_class(problem,interpretation,element);
39741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
39742 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
39743 neg find mustInstanceOfEClass_class(problem,interpretation,element);
39744 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
39745 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
39746 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
39747 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
39748 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
39749 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
39750}
39751
39752//////////
39753// 4.3 Relation refinement
39754//////////
39755pattern refineRelation_eAttributeType_reference_EAttribute(
39756 problem:LogicProblem, interpretation:PartialInterpretation,
39757 relationIterpretation:PartialRelationInterpretation,
39758 from: DefinedElement, to: DefinedElement)
39759{
39760 find interpretation(problem,interpretation);
39761 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39762 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
39763 find mustExist(problem, interpretation, from);
39764 find mustExist(problem, interpretation, to);
39765 find mustInstanceOfEAttribute_class(problem,interpretation,from);
39766 find mustInstanceOfEDataType_class(problem,interpretation,to);
39767 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
39768 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
39769}
39770pattern refineRelation_references_reference_EAnnotation(
39771 problem:LogicProblem, interpretation:PartialInterpretation,
39772 relationIterpretation:PartialRelationInterpretation,
39773 from: DefinedElement, to: DefinedElement)
39774{
39775 find interpretation(problem,interpretation);
39776 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39777 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
39778 find mustExist(problem, interpretation, from);
39779 find mustExist(problem, interpretation, to);
39780 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
39781 find mustInstanceOfEObject_class(problem,interpretation,to);
39782 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
39783 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
39784}
39785pattern refineRelation_eSuperTypes_reference_EClass(
39786 problem:LogicProblem, interpretation:PartialInterpretation,
39787 relationIterpretation:PartialRelationInterpretation,
39788 from: DefinedElement, to: DefinedElement)
39789{
39790 find interpretation(problem,interpretation);
39791 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39792 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
39793 find mustExist(problem, interpretation, from);
39794 find mustExist(problem, interpretation, to);
39795 find mustInstanceOfEClass_class(problem,interpretation,from);
39796 find mustInstanceOfEClass_class(problem,interpretation,to);
39797 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
39798 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
39799}
39800pattern refineRelation_eAllAttributes_reference_EClass(
39801 problem:LogicProblem, interpretation:PartialInterpretation,
39802 relationIterpretation:PartialRelationInterpretation,
39803 from: DefinedElement, to: DefinedElement)
39804{
39805 find interpretation(problem,interpretation);
39806 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39807 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
39808 find mustExist(problem, interpretation, from);
39809 find mustExist(problem, interpretation, to);
39810 find mustInstanceOfEClass_class(problem,interpretation,from);
39811 find mustInstanceOfEAttribute_class(problem,interpretation,to);
39812 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
39813 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
39814}
39815pattern refineRelation_eAllReferences_reference_EClass(
39816 problem:LogicProblem, interpretation:PartialInterpretation,
39817 relationIterpretation:PartialRelationInterpretation,
39818 from: DefinedElement, to: DefinedElement)
39819{
39820 find interpretation(problem,interpretation);
39821 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39822 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
39823 find mustExist(problem, interpretation, from);
39824 find mustExist(problem, interpretation, to);
39825 find mustInstanceOfEClass_class(problem,interpretation,from);
39826 find mustInstanceOfEReference_class(problem,interpretation,to);
39827 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
39828 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
39829}
39830pattern refineRelation_eReferences_reference_EClass(
39831 problem:LogicProblem, interpretation:PartialInterpretation,
39832 relationIterpretation:PartialRelationInterpretation,
39833 from: DefinedElement, to: DefinedElement)
39834{
39835 find interpretation(problem,interpretation);
39836 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39837 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
39838 find mustExist(problem, interpretation, from);
39839 find mustExist(problem, interpretation, to);
39840 find mustInstanceOfEClass_class(problem,interpretation,from);
39841 find mustInstanceOfEReference_class(problem,interpretation,to);
39842 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
39843 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
39844}
39845pattern refineRelation_eAttributes_reference_EClass(
39846 problem:LogicProblem, interpretation:PartialInterpretation,
39847 relationIterpretation:PartialRelationInterpretation,
39848 from: DefinedElement, to: DefinedElement)
39849{
39850 find interpretation(problem,interpretation);
39851 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39852 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
39853 find mustExist(problem, interpretation, from);
39854 find mustExist(problem, interpretation, to);
39855 find mustInstanceOfEClass_class(problem,interpretation,from);
39856 find mustInstanceOfEAttribute_class(problem,interpretation,to);
39857 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
39858 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
39859}
39860pattern refineRelation_eAllContainments_reference_EClass(
39861 problem:LogicProblem, interpretation:PartialInterpretation,
39862 relationIterpretation:PartialRelationInterpretation,
39863 from: DefinedElement, to: DefinedElement)
39864{
39865 find interpretation(problem,interpretation);
39866 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39867 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
39868 find mustExist(problem, interpretation, from);
39869 find mustExist(problem, interpretation, to);
39870 find mustInstanceOfEClass_class(problem,interpretation,from);
39871 find mustInstanceOfEReference_class(problem,interpretation,to);
39872 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
39873 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
39874}
39875pattern refineRelation_eAllOperations_reference_EClass(
39876 problem:LogicProblem, interpretation:PartialInterpretation,
39877 relationIterpretation:PartialRelationInterpretation,
39878 from: DefinedElement, to: DefinedElement)
39879{
39880 find interpretation(problem,interpretation);
39881 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39882 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
39883 find mustExist(problem, interpretation, from);
39884 find mustExist(problem, interpretation, to);
39885 find mustInstanceOfEClass_class(problem,interpretation,from);
39886 find mustInstanceOfEOperation_class(problem,interpretation,to);
39887 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
39888 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
39889}
39890pattern refineRelation_eAllStructuralFeatures_reference_EClass(
39891 problem:LogicProblem, interpretation:PartialInterpretation,
39892 relationIterpretation:PartialRelationInterpretation,
39893 from: DefinedElement, to: DefinedElement)
39894{
39895 find interpretation(problem,interpretation);
39896 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39897 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
39898 find mustExist(problem, interpretation, from);
39899 find mustExist(problem, interpretation, to);
39900 find mustInstanceOfEClass_class(problem,interpretation,from);
39901 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
39902 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
39903 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
39904}
39905pattern refineRelation_eAllSuperTypes_reference_EClass(
39906 problem:LogicProblem, interpretation:PartialInterpretation,
39907 relationIterpretation:PartialRelationInterpretation,
39908 from: DefinedElement, to: DefinedElement)
39909{
39910 find interpretation(problem,interpretation);
39911 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39912 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
39913 find mustExist(problem, interpretation, from);
39914 find mustExist(problem, interpretation, to);
39915 find mustInstanceOfEClass_class(problem,interpretation,from);
39916 find mustInstanceOfEClass_class(problem,interpretation,to);
39917 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
39918 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
39919}
39920pattern refineRelation_eIDAttribute_reference_EClass(
39921 problem:LogicProblem, interpretation:PartialInterpretation,
39922 relationIterpretation:PartialRelationInterpretation,
39923 from: DefinedElement, to: DefinedElement)
39924{
39925 find interpretation(problem,interpretation);
39926 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39927 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
39928 find mustExist(problem, interpretation, from);
39929 find mustExist(problem, interpretation, to);
39930 find mustInstanceOfEClass_class(problem,interpretation,from);
39931 find mustInstanceOfEAttribute_class(problem,interpretation,to);
39932 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
39933 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
39934}
39935pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
39936 problem:LogicProblem, interpretation:PartialInterpretation,
39937 relationIterpretation:PartialRelationInterpretation,
39938 from: DefinedElement, to: DefinedElement)
39939{
39940 find interpretation(problem,interpretation);
39941 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39942 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
39943 find mustExist(problem, interpretation, from);
39944 find mustExist(problem, interpretation, to);
39945 find mustInstanceOfEClass_class(problem,interpretation,from);
39946 find mustInstanceOfEGenericType_class(problem,interpretation,to);
39947 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
39948 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
39949}
39950pattern refineRelation_eExceptions_reference_EOperation(
39951 problem:LogicProblem, interpretation:PartialInterpretation,
39952 relationIterpretation:PartialRelationInterpretation,
39953 from: DefinedElement, to: DefinedElement)
39954{
39955 find interpretation(problem,interpretation);
39956 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39957 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
39958 find mustExist(problem, interpretation, from);
39959 find mustExist(problem, interpretation, to);
39960 find mustInstanceOfEOperation_class(problem,interpretation,from);
39961 find mustInstanceOfEClassifier_class(problem,interpretation,to);
39962 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
39963 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
39964}
39965pattern refineRelation_eOpposite_reference_EReference(
39966 problem:LogicProblem, interpretation:PartialInterpretation,
39967 relationIterpretation:PartialRelationInterpretation,
39968 from: DefinedElement, to: DefinedElement)
39969{
39970 find interpretation(problem,interpretation);
39971 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39972 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
39973 find mustExist(problem, interpretation, from);
39974 find mustExist(problem, interpretation, to);
39975 find mustInstanceOfEReference_class(problem,interpretation,from);
39976 find mustInstanceOfEReference_class(problem,interpretation,to);
39977 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
39978 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
39979}
39980pattern refineRelation_eReferenceType_reference_EReference(
39981 problem:LogicProblem, interpretation:PartialInterpretation,
39982 relationIterpretation:PartialRelationInterpretation,
39983 from: DefinedElement, to: DefinedElement)
39984{
39985 find interpretation(problem,interpretation);
39986 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
39987 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
39988 find mustExist(problem, interpretation, from);
39989 find mustExist(problem, interpretation, to);
39990 find mustInstanceOfEReference_class(problem,interpretation,from);
39991 find mustInstanceOfEClass_class(problem,interpretation,to);
39992 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
39993 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
39994}
39995pattern refineRelation_eKeys_reference_EReference(
39996 problem:LogicProblem, interpretation:PartialInterpretation,
39997 relationIterpretation:PartialRelationInterpretation,
39998 from: DefinedElement, to: DefinedElement)
39999{
40000 find interpretation(problem,interpretation);
40001 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40002 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
40003 find mustExist(problem, interpretation, from);
40004 find mustExist(problem, interpretation, to);
40005 find mustInstanceOfEReference_class(problem,interpretation,from);
40006 find mustInstanceOfEAttribute_class(problem,interpretation,to);
40007 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
40008 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
40009}
40010pattern refineRelation_eType_reference_ETypedElement(
40011 problem:LogicProblem, interpretation:PartialInterpretation,
40012 relationIterpretation:PartialRelationInterpretation,
40013 from: DefinedElement, to: DefinedElement)
40014{
40015 find interpretation(problem,interpretation);
40016 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40017 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
40018 find mustExist(problem, interpretation, from);
40019 find mustExist(problem, interpretation, to);
40020 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40021 find mustInstanceOfEClassifier_class(problem,interpretation,to);
40022 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
40023 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
40024}
40025pattern refineRelation_eRawType_reference_EGenericType(
40026 problem:LogicProblem, interpretation:PartialInterpretation,
40027 relationIterpretation:PartialRelationInterpretation,
40028 from: DefinedElement, to: DefinedElement)
40029{
40030 find interpretation(problem,interpretation);
40031 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40032 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
40033 find mustExist(problem, interpretation, from);
40034 find mustExist(problem, interpretation, to);
40035 find mustInstanceOfEGenericType_class(problem,interpretation,from);
40036 find mustInstanceOfEClassifier_class(problem,interpretation,to);
40037 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
40038 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
40039}
40040pattern refineRelation_eTypeParameter_reference_EGenericType(
40041 problem:LogicProblem, interpretation:PartialInterpretation,
40042 relationIterpretation:PartialRelationInterpretation,
40043 from: DefinedElement, to: DefinedElement)
40044{
40045 find interpretation(problem,interpretation);
40046 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40047 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
40048 find mustExist(problem, interpretation, from);
40049 find mustExist(problem, interpretation, to);
40050 find mustInstanceOfEGenericType_class(problem,interpretation,from);
40051 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
40052 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
40053 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
40054}
40055pattern refineRelation_eClassifier_reference_EGenericType(
40056 problem:LogicProblem, interpretation:PartialInterpretation,
40057 relationIterpretation:PartialRelationInterpretation,
40058 from: DefinedElement, to: DefinedElement)
40059{
40060 find interpretation(problem,interpretation);
40061 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40062 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
40063 find mustExist(problem, interpretation, from);
40064 find mustExist(problem, interpretation, to);
40065 find mustInstanceOfEGenericType_class(problem,interpretation,from);
40066 find mustInstanceOfEClassifier_class(problem,interpretation,to);
40067 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
40068 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
40069}
40070pattern refineRelation_iD_attribute_EAttribute(
40071 problem:LogicProblem, interpretation:PartialInterpretation,
40072 relationIterpretation:PartialRelationInterpretation,
40073 from: DefinedElement, to: DefinedElement)
40074{
40075 find interpretation(problem,interpretation);
40076 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40077 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
40078 find mustExist(problem, interpretation, from);
40079 find mustExist(problem, interpretation, to);
40080 find mustInstanceOfEAttribute_class(problem,interpretation,from);
40081 BooleanElement(to);
40082 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
40083 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
40084}
40085pattern refineRelation_source_attribute_EAnnotation(
40086 problem:LogicProblem, interpretation:PartialInterpretation,
40087 relationIterpretation:PartialRelationInterpretation,
40088 from: DefinedElement, to: DefinedElement)
40089{
40090 find interpretation(problem,interpretation);
40091 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40092 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
40093 find mustExist(problem, interpretation, from);
40094 find mustExist(problem, interpretation, to);
40095 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
40096 StringElement(to);
40097 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
40098 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
40099}
40100pattern refineRelation_abstract_attribute_EClass(
40101 problem:LogicProblem, interpretation:PartialInterpretation,
40102 relationIterpretation:PartialRelationInterpretation,
40103 from: DefinedElement, to: DefinedElement)
40104{
40105 find interpretation(problem,interpretation);
40106 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40107 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
40108 find mustExist(problem, interpretation, from);
40109 find mustExist(problem, interpretation, to);
40110 find mustInstanceOfEClass_class(problem,interpretation,from);
40111 BooleanElement(to);
40112 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
40113 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
40114}
40115pattern refineRelation_interface_attribute_EClass(
40116 problem:LogicProblem, interpretation:PartialInterpretation,
40117 relationIterpretation:PartialRelationInterpretation,
40118 from: DefinedElement, to: DefinedElement)
40119{
40120 find interpretation(problem,interpretation);
40121 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40122 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
40123 find mustExist(problem, interpretation, from);
40124 find mustExist(problem, interpretation, to);
40125 find mustInstanceOfEClass_class(problem,interpretation,from);
40126 BooleanElement(to);
40127 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
40128 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
40129}
40130pattern refineRelation_instanceClassName_attribute_EClassifier(
40131 problem:LogicProblem, interpretation:PartialInterpretation,
40132 relationIterpretation:PartialRelationInterpretation,
40133 from: DefinedElement, to: DefinedElement)
40134{
40135 find interpretation(problem,interpretation);
40136 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40137 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
40138 find mustExist(problem, interpretation, from);
40139 find mustExist(problem, interpretation, to);
40140 find mustInstanceOfEClassifier_class(problem,interpretation,from);
40141 StringElement(to);
40142 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
40143 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
40144}
40145pattern refineRelation_instanceTypeName_attribute_EClassifier(
40146 problem:LogicProblem, interpretation:PartialInterpretation,
40147 relationIterpretation:PartialRelationInterpretation,
40148 from: DefinedElement, to: DefinedElement)
40149{
40150 find interpretation(problem,interpretation);
40151 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40152 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
40153 find mustExist(problem, interpretation, from);
40154 find mustExist(problem, interpretation, to);
40155 find mustInstanceOfEClassifier_class(problem,interpretation,from);
40156 StringElement(to);
40157 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
40158 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
40159}
40160pattern refineRelation_serializable_attribute_EDataType(
40161 problem:LogicProblem, interpretation:PartialInterpretation,
40162 relationIterpretation:PartialRelationInterpretation,
40163 from: DefinedElement, to: DefinedElement)
40164{
40165 find interpretation(problem,interpretation);
40166 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40167 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
40168 find mustExist(problem, interpretation, from);
40169 find mustExist(problem, interpretation, to);
40170 find mustInstanceOfEDataType_class(problem,interpretation,from);
40171 BooleanElement(to);
40172 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
40173 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
40174}
40175pattern refineRelation_value_attribute_EEnumLiteral(
40176 problem:LogicProblem, interpretation:PartialInterpretation,
40177 relationIterpretation:PartialRelationInterpretation,
40178 from: DefinedElement, to: DefinedElement)
40179{
40180 find interpretation(problem,interpretation);
40181 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40182 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
40183 find mustExist(problem, interpretation, from);
40184 find mustExist(problem, interpretation, to);
40185 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
40186 IntegerElement(to);
40187 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
40188 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
40189}
40190pattern refineRelation_literal_attribute_EEnumLiteral(
40191 problem:LogicProblem, interpretation:PartialInterpretation,
40192 relationIterpretation:PartialRelationInterpretation,
40193 from: DefinedElement, to: DefinedElement)
40194{
40195 find interpretation(problem,interpretation);
40196 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40197 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
40198 find mustExist(problem, interpretation, from);
40199 find mustExist(problem, interpretation, to);
40200 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
40201 StringElement(to);
40202 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
40203 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
40204}
40205pattern refineRelation_name_attribute_ENamedElement(
40206 problem:LogicProblem, interpretation:PartialInterpretation,
40207 relationIterpretation:PartialRelationInterpretation,
40208 from: DefinedElement, to: DefinedElement)
40209{
40210 find interpretation(problem,interpretation);
40211 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40212 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
40213 find mustExist(problem, interpretation, from);
40214 find mustExist(problem, interpretation, to);
40215 find mustInstanceOfENamedElement_class(problem,interpretation,from);
40216 StringElement(to);
40217 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
40218 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
40219}
40220pattern refineRelation_nsURI_attribute_EPackage(
40221 problem:LogicProblem, interpretation:PartialInterpretation,
40222 relationIterpretation:PartialRelationInterpretation,
40223 from: DefinedElement, to: DefinedElement)
40224{
40225 find interpretation(problem,interpretation);
40226 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40227 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
40228 find mustExist(problem, interpretation, from);
40229 find mustExist(problem, interpretation, to);
40230 find mustInstanceOfEPackage_class(problem,interpretation,from);
40231 StringElement(to);
40232 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
40233 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
40234}
40235pattern refineRelation_nsPrefix_attribute_EPackage(
40236 problem:LogicProblem, interpretation:PartialInterpretation,
40237 relationIterpretation:PartialRelationInterpretation,
40238 from: DefinedElement, to: DefinedElement)
40239{
40240 find interpretation(problem,interpretation);
40241 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40242 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
40243 find mustExist(problem, interpretation, from);
40244 find mustExist(problem, interpretation, to);
40245 find mustInstanceOfEPackage_class(problem,interpretation,from);
40246 StringElement(to);
40247 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
40248 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
40249}
40250pattern refineRelation_containment_attribute_EReference(
40251 problem:LogicProblem, interpretation:PartialInterpretation,
40252 relationIterpretation:PartialRelationInterpretation,
40253 from: DefinedElement, to: DefinedElement)
40254{
40255 find interpretation(problem,interpretation);
40256 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40257 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
40258 find mustExist(problem, interpretation, from);
40259 find mustExist(problem, interpretation, to);
40260 find mustInstanceOfEReference_class(problem,interpretation,from);
40261 BooleanElement(to);
40262 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
40263 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
40264}
40265pattern refineRelation_container_attribute_EReference(
40266 problem:LogicProblem, interpretation:PartialInterpretation,
40267 relationIterpretation:PartialRelationInterpretation,
40268 from: DefinedElement, to: DefinedElement)
40269{
40270 find interpretation(problem,interpretation);
40271 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40272 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
40273 find mustExist(problem, interpretation, from);
40274 find mustExist(problem, interpretation, to);
40275 find mustInstanceOfEReference_class(problem,interpretation,from);
40276 BooleanElement(to);
40277 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
40278 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
40279}
40280pattern refineRelation_resolveProxies_attribute_EReference(
40281 problem:LogicProblem, interpretation:PartialInterpretation,
40282 relationIterpretation:PartialRelationInterpretation,
40283 from: DefinedElement, to: DefinedElement)
40284{
40285 find interpretation(problem,interpretation);
40286 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40287 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
40288 find mustExist(problem, interpretation, from);
40289 find mustExist(problem, interpretation, to);
40290 find mustInstanceOfEReference_class(problem,interpretation,from);
40291 BooleanElement(to);
40292 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
40293 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
40294}
40295pattern refineRelation_changeable_attribute_EStructuralFeature(
40296 problem:LogicProblem, interpretation:PartialInterpretation,
40297 relationIterpretation:PartialRelationInterpretation,
40298 from: DefinedElement, to: DefinedElement)
40299{
40300 find interpretation(problem,interpretation);
40301 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40302 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
40303 find mustExist(problem, interpretation, from);
40304 find mustExist(problem, interpretation, to);
40305 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40306 BooleanElement(to);
40307 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
40308 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
40309}
40310pattern refineRelation_volatile_attribute_EStructuralFeature(
40311 problem:LogicProblem, interpretation:PartialInterpretation,
40312 relationIterpretation:PartialRelationInterpretation,
40313 from: DefinedElement, to: DefinedElement)
40314{
40315 find interpretation(problem,interpretation);
40316 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40317 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
40318 find mustExist(problem, interpretation, from);
40319 find mustExist(problem, interpretation, to);
40320 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40321 BooleanElement(to);
40322 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
40323 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
40324}
40325pattern refineRelation_transient_attribute_EStructuralFeature(
40326 problem:LogicProblem, interpretation:PartialInterpretation,
40327 relationIterpretation:PartialRelationInterpretation,
40328 from: DefinedElement, to: DefinedElement)
40329{
40330 find interpretation(problem,interpretation);
40331 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40332 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
40333 find mustExist(problem, interpretation, from);
40334 find mustExist(problem, interpretation, to);
40335 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40336 BooleanElement(to);
40337 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
40338 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
40339}
40340pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
40341 problem:LogicProblem, interpretation:PartialInterpretation,
40342 relationIterpretation:PartialRelationInterpretation,
40343 from: DefinedElement, to: DefinedElement)
40344{
40345 find interpretation(problem,interpretation);
40346 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40347 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
40348 find mustExist(problem, interpretation, from);
40349 find mustExist(problem, interpretation, to);
40350 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40351 StringElement(to);
40352 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
40353 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
40354}
40355pattern refineRelation_unsettable_attribute_EStructuralFeature(
40356 problem:LogicProblem, interpretation:PartialInterpretation,
40357 relationIterpretation:PartialRelationInterpretation,
40358 from: DefinedElement, to: DefinedElement)
40359{
40360 find interpretation(problem,interpretation);
40361 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40362 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
40363 find mustExist(problem, interpretation, from);
40364 find mustExist(problem, interpretation, to);
40365 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40366 BooleanElement(to);
40367 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
40368 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
40369}
40370pattern refineRelation_derived_attribute_EStructuralFeature(
40371 problem:LogicProblem, interpretation:PartialInterpretation,
40372 relationIterpretation:PartialRelationInterpretation,
40373 from: DefinedElement, to: DefinedElement)
40374{
40375 find interpretation(problem,interpretation);
40376 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40377 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
40378 find mustExist(problem, interpretation, from);
40379 find mustExist(problem, interpretation, to);
40380 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
40381 BooleanElement(to);
40382 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
40383 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
40384}
40385pattern refineRelation_ordered_attribute_ETypedElement(
40386 problem:LogicProblem, interpretation:PartialInterpretation,
40387 relationIterpretation:PartialRelationInterpretation,
40388 from: DefinedElement, to: DefinedElement)
40389{
40390 find interpretation(problem,interpretation);
40391 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40392 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
40393 find mustExist(problem, interpretation, from);
40394 find mustExist(problem, interpretation, to);
40395 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40396 BooleanElement(to);
40397 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
40398 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
40399}
40400pattern refineRelation_unique_attribute_ETypedElement(
40401 problem:LogicProblem, interpretation:PartialInterpretation,
40402 relationIterpretation:PartialRelationInterpretation,
40403 from: DefinedElement, to: DefinedElement)
40404{
40405 find interpretation(problem,interpretation);
40406 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40407 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
40408 find mustExist(problem, interpretation, from);
40409 find mustExist(problem, interpretation, to);
40410 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40411 BooleanElement(to);
40412 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
40413 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
40414}
40415pattern refineRelation_lowerBound_attribute_ETypedElement(
40416 problem:LogicProblem, interpretation:PartialInterpretation,
40417 relationIterpretation:PartialRelationInterpretation,
40418 from: DefinedElement, to: DefinedElement)
40419{
40420 find interpretation(problem,interpretation);
40421 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40422 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
40423 find mustExist(problem, interpretation, from);
40424 find mustExist(problem, interpretation, to);
40425 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40426 IntegerElement(to);
40427 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
40428 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
40429}
40430pattern refineRelation_upperBound_attribute_ETypedElement(
40431 problem:LogicProblem, interpretation:PartialInterpretation,
40432 relationIterpretation:PartialRelationInterpretation,
40433 from: DefinedElement, to: DefinedElement)
40434{
40435 find interpretation(problem,interpretation);
40436 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40437 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
40438 find mustExist(problem, interpretation, from);
40439 find mustExist(problem, interpretation, to);
40440 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40441 IntegerElement(to);
40442 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
40443 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
40444}
40445pattern refineRelation_many_attribute_ETypedElement(
40446 problem:LogicProblem, interpretation:PartialInterpretation,
40447 relationIterpretation:PartialRelationInterpretation,
40448 from: DefinedElement, to: DefinedElement)
40449{
40450 find interpretation(problem,interpretation);
40451 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40452 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
40453 find mustExist(problem, interpretation, from);
40454 find mustExist(problem, interpretation, to);
40455 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40456 BooleanElement(to);
40457 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
40458 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
40459}
40460pattern refineRelation_required_attribute_ETypedElement(
40461 problem:LogicProblem, interpretation:PartialInterpretation,
40462 relationIterpretation:PartialRelationInterpretation,
40463 from: DefinedElement, to: DefinedElement)
40464{
40465 find interpretation(problem,interpretation);
40466 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40467 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
40468 find mustExist(problem, interpretation, from);
40469 find mustExist(problem, interpretation, to);
40470 find mustInstanceOfETypedElement_class(problem,interpretation,from);
40471 BooleanElement(to);
40472 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
40473 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
40474}
40475pattern refineRelation_key_attribute_EStringToStringMapEntry(
40476 problem:LogicProblem, interpretation:PartialInterpretation,
40477 relationIterpretation:PartialRelationInterpretation,
40478 from: DefinedElement, to: DefinedElement)
40479{
40480 find interpretation(problem,interpretation);
40481 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40482 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
40483 find mustExist(problem, interpretation, from);
40484 find mustExist(problem, interpretation, to);
40485 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
40486 StringElement(to);
40487 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40488 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40489}
40490pattern refineRelation_value_attribute_EStringToStringMapEntry(
40491 problem:LogicProblem, interpretation:PartialInterpretation,
40492 relationIterpretation:PartialRelationInterpretation,
40493 from: DefinedElement, to: DefinedElement)
40494{
40495 find interpretation(problem,interpretation);
40496 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
40497 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
40498 find mustExist(problem, interpretation, from);
40499 find mustExist(problem, interpretation, to);
40500 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
40501 StringElement(to);
40502 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40503 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
40504}
40505import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
40506import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
40507import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
40508
40509//////////
40510// 0. Util
40511//////////
40512private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
40513 PartialInterpretation.problem(interpretation,problem);
40514}
40515
40516/////////////////////////
40517// 0.1 Existence
40518/////////////////////////
40519private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40520 find interpretation(problem,interpretation);
40521 LogicProblem.elements(problem,element);
40522} or {
40523 find interpretation(problem,interpretation);
40524 PartialInterpretation.newElements(interpretation,element);
40525}
40526
40527private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40528 find mustExist(problem,interpretation,element);
40529} or {
40530 find interpretation(problem,interpretation);
40531 neg find elementCloseWorld(element);
40532 PartialInterpretation.openWorldElements(interpretation,element);
40533}
40534
40535private pattern elementCloseWorld(element:DefinedElement) {
40536 PartialInterpretation.openWorldElements(i,element);
40537 PartialInterpretation.maxNewElements(i,0);
40538} or {
40539 Scope.targetTypeInterpretation(scope,interpretation);
40540 PartialTypeInterpratation.elements(interpretation,element);
40541 Scope.maxNewElements(scope,0);
40542}
40543
40544////////////////////////
40545// 0.2 Equivalence
40546////////////////////////
40547pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
40548 find mayExist(problem,interpretation,a);
40549 find mayExist(problem,interpretation,b);
40550 a == b;
40551}
40552
40553////////////////////////
40554// 0.3 Required Patterns by TypeIndexer
40555////////////////////////
40556private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
40557 find interpretation(problem,interpretation);
40558 LogicProblem.types(problem,type);
40559 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
40560 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40561}
40562
40563private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
40564 find interpretation(problem,interpretation);
40565 LogicProblem.types(problem,type);
40566 TypeDefinition.elements(type,element);
40567} or {
40568 find interpretation(problem,interpretation);
40569 find typeInterpretation(problem,interpretation,type,typeInterpretation);
40570 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
40571}
40572
40573private pattern isPrimitive(element: PrimitiveElement) {
40574 PrimitiveElement(element);
40575}
40576
40577//////////
40578// 1. Problem-Specific Base Indexers
40579//////////
40580// 1.1 Type Indexers
40581//////////
40582// 1.1.1 primitive Type Indexers
40583//////////
40584
40585//////////
40586// 1.1.2 domain-specific Type Indexers
40587//////////
40588/**
40589 * An element must be an instance of type "EAttribute class".
40590 */
40591private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40592 Type.name(type,"EAttribute class");
40593 find directInstanceOf(problem,interpretation,element,type);
40594}
40595private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40596 find interpretation(problem,interpretation);
40597 PartialInterpretation.scopes(interpretation,scope);
40598 Scope.targetTypeInterpretation(scope,typeInterpretation);
40599 Scope.maxNewElements(scope,0);
40600 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40601 Type.name(type,"EAttribute class");
40602}
40603
40604/**
40605 * An element may be an instance of type "EAttribute class".
40606 */
40607private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40608{
40609 find interpretation(problem,interpretation);
40610 PartialInterpretation.newElements(interpretation,element);
40611 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40612 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40613 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40614 neg find mustInstanceOfEReference_class(problem,interpretation,element);
40615 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40616 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
40617 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40618 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40619 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40620 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
40621 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40622 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
40623 neg find isPrimitive(element);
40624} or {
40625 find interpretation(problem,interpretation);
40626 PartialInterpretation.openWorldElements(interpretation,element);
40627 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40628 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40629 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40630 neg find mustInstanceOfEReference_class(problem,interpretation,element);
40631 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40632 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
40633 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40634 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40635 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40636 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
40637 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40638 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
40639 neg find isPrimitive(element);
40640} or
40641{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
40642/**
40643 * An element must be an instance of type "EAnnotation class".
40644 */
40645private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40646 Type.name(type,"EAnnotation class");
40647 find directInstanceOf(problem,interpretation,element,type);
40648}
40649private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40650 find interpretation(problem,interpretation);
40651 PartialInterpretation.scopes(interpretation,scope);
40652 Scope.targetTypeInterpretation(scope,typeInterpretation);
40653 Scope.maxNewElements(scope,0);
40654 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40655 Type.name(type,"EAnnotation class");
40656}
40657
40658/**
40659 * An element may be an instance of type "EAnnotation class".
40660 */
40661private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40662{
40663 find interpretation(problem,interpretation);
40664 PartialInterpretation.newElements(interpretation,element);
40665 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40666 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40667 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40668 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40669 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
40670 neg find isPrimitive(element);
40671} or {
40672 find interpretation(problem,interpretation);
40673 PartialInterpretation.openWorldElements(interpretation,element);
40674 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40675 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40676 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40677 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40678 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
40679 neg find isPrimitive(element);
40680} or
40681{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
40682/**
40683 * An element must be an instance of type "EClass class".
40684 */
40685private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40686 Type.name(type,"EClass class");
40687 find directInstanceOf(problem,interpretation,element,type);
40688}
40689private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40690 find interpretation(problem,interpretation);
40691 PartialInterpretation.scopes(interpretation,scope);
40692 Scope.targetTypeInterpretation(scope,typeInterpretation);
40693 Scope.maxNewElements(scope,0);
40694 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40695 Type.name(type,"EClass class");
40696}
40697
40698/**
40699 * An element may be an instance of type "EClass class".
40700 */
40701private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40702{
40703 find interpretation(problem,interpretation);
40704 PartialInterpretation.newElements(interpretation,element);
40705 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40706 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40707 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40708 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40709 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40710 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40711 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40712 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40713 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40714 neg find scopeDisallowsNewEClass_class(problem, interpretation);
40715 neg find isPrimitive(element);
40716} or {
40717 find interpretation(problem,interpretation);
40718 PartialInterpretation.openWorldElements(interpretation,element);
40719 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40720 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40721 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40722 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40723 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40724 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40725 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40726 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40727 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40728 neg find scopeDisallowsNewEClass_class(problem, interpretation);
40729 neg find isPrimitive(element);
40730} or
40731{ find mustInstanceOfEClass_class(problem,interpretation,element); }
40732/**
40733 * An element must be an instance of type "EClassifier class".
40734 */
40735private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40736 Type.name(type,"EClassifier class");
40737 find directInstanceOf(problem,interpretation,element,type);
40738}
40739private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40740 find interpretation(problem,interpretation);
40741 PartialInterpretation.scopes(interpretation,scope);
40742 Scope.targetTypeInterpretation(scope,typeInterpretation);
40743 Scope.maxNewElements(scope,0);
40744 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40745 Type.name(type,"EClassifier class");
40746}
40747
40748/**
40749 * An element may be an instance of type "EClassifier class".
40750 */
40751private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40752{
40753 find interpretation(problem,interpretation);
40754 PartialInterpretation.newElements(interpretation,element);
40755 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40756 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40757 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40758 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40759 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40760 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40761 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40762 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40763 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40764 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40765 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
40766 neg find isPrimitive(element);
40767} or {
40768 find interpretation(problem,interpretation);
40769 PartialInterpretation.openWorldElements(interpretation,element);
40770 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40771 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40772 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40773 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40774 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40775 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40776 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
40777 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40778 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40779 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40780 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
40781 neg find isPrimitive(element);
40782} or
40783{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
40784/**
40785 * An element must be an instance of type "EDataType class".
40786 */
40787private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40788 Type.name(type,"EDataType class");
40789 find directInstanceOf(problem,interpretation,element,type);
40790}
40791private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40792 find interpretation(problem,interpretation);
40793 PartialInterpretation.scopes(interpretation,scope);
40794 Scope.targetTypeInterpretation(scope,typeInterpretation);
40795 Scope.maxNewElements(scope,0);
40796 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40797 Type.name(type,"EDataType class");
40798}
40799
40800/**
40801 * An element may be an instance of type "EDataType class".
40802 */
40803private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40804{
40805 find interpretation(problem,interpretation);
40806 PartialInterpretation.newElements(interpretation,element);
40807 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40808 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40809 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
40810 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40811 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40812 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40813 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40814 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40815 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40816 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40817 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
40818 neg find isPrimitive(element);
40819} or {
40820 find interpretation(problem,interpretation);
40821 PartialInterpretation.openWorldElements(interpretation,element);
40822 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40823 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40824 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
40825 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40826 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40827 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40828 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40829 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40830 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40831 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40832 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
40833 neg find isPrimitive(element);
40834} or
40835{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
40836/**
40837 * An element must be an instance of type "EEnum class".
40838 */
40839private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40840 Type.name(type,"EEnum class");
40841 find directInstanceOf(problem,interpretation,element,type);
40842}
40843private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40844 find interpretation(problem,interpretation);
40845 PartialInterpretation.scopes(interpretation,scope);
40846 Scope.targetTypeInterpretation(scope,typeInterpretation);
40847 Scope.maxNewElements(scope,0);
40848 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40849 Type.name(type,"EEnum class");
40850}
40851
40852/**
40853 * An element may be an instance of type "EEnum class".
40854 */
40855private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40856{
40857 find interpretation(problem,interpretation);
40858 PartialInterpretation.newElements(interpretation,element);
40859 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40860 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40861 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40862 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40863 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40864 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40865 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40866 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40867 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40868 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
40869 neg find isPrimitive(element);
40870} or {
40871 find interpretation(problem,interpretation);
40872 PartialInterpretation.openWorldElements(interpretation,element);
40873 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40874 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
40875 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40876 neg find mustInstanceOfEClass_class(problem,interpretation,element);
40877 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40878 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40879 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40880 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40881 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40882 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
40883 neg find isPrimitive(element);
40884} or
40885{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
40886/**
40887 * An element must be an instance of type "EEnumLiteral class".
40888 */
40889private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40890 Type.name(type,"EEnumLiteral class");
40891 find directInstanceOf(problem,interpretation,element,type);
40892}
40893private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40894 find interpretation(problem,interpretation);
40895 PartialInterpretation.scopes(interpretation,scope);
40896 Scope.targetTypeInterpretation(scope,typeInterpretation);
40897 Scope.maxNewElements(scope,0);
40898 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40899 Type.name(type,"EEnumLiteral class");
40900}
40901
40902/**
40903 * An element may be an instance of type "EEnumLiteral class".
40904 */
40905private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40906{
40907 find interpretation(problem,interpretation);
40908 PartialInterpretation.newElements(interpretation,element);
40909 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40910 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40911 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40912 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40913 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40914 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40915 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40916 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40917 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
40918 neg find isPrimitive(element);
40919} or {
40920 find interpretation(problem,interpretation);
40921 PartialInterpretation.openWorldElements(interpretation,element);
40922 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40923 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40924 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
40925 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
40926 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
40927 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
40928 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
40929 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40930 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
40931 neg find isPrimitive(element);
40932} or
40933{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
40934/**
40935 * An element must be an instance of type "EModelElement class".
40936 */
40937private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40938 Type.name(type,"EModelElement class");
40939 find directInstanceOf(problem,interpretation,element,type);
40940}
40941private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40942 find interpretation(problem,interpretation);
40943 PartialInterpretation.scopes(interpretation,scope);
40944 Scope.targetTypeInterpretation(scope,typeInterpretation);
40945 Scope.maxNewElements(scope,0);
40946 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40947 Type.name(type,"EModelElement class");
40948}
40949
40950/**
40951 * An element may be an instance of type "EModelElement class".
40952 */
40953private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40954{
40955 find interpretation(problem,interpretation);
40956 PartialInterpretation.newElements(interpretation,element);
40957 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40958 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40959 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40960 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
40961 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40962 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
40963 neg find isPrimitive(element);
40964} or {
40965 find interpretation(problem,interpretation);
40966 PartialInterpretation.openWorldElements(interpretation,element);
40967 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
40968 neg find mustInstanceOfEObject_class(problem,interpretation,element);
40969 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
40970 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
40971 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
40972 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
40973 neg find isPrimitive(element);
40974} or
40975{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
40976/**
40977 * An element must be an instance of type "ENamedElement class".
40978 */
40979private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
40980 Type.name(type,"ENamedElement class");
40981 find directInstanceOf(problem,interpretation,element,type);
40982}
40983private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
40984 find interpretation(problem,interpretation);
40985 PartialInterpretation.scopes(interpretation,scope);
40986 Scope.targetTypeInterpretation(scope,typeInterpretation);
40987 Scope.maxNewElements(scope,0);
40988 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
40989 Type.name(type,"ENamedElement class");
40990}
40991
40992/**
40993 * An element may be an instance of type "ENamedElement class".
40994 */
40995private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
40996{
40997 find interpretation(problem,interpretation);
40998 PartialInterpretation.newElements(interpretation,element);
40999 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41000 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41001 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41002 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41003 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41004 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
41005 neg find isPrimitive(element);
41006} or {
41007 find interpretation(problem,interpretation);
41008 PartialInterpretation.openWorldElements(interpretation,element);
41009 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41010 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41011 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41012 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41013 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41014 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
41015 neg find isPrimitive(element);
41016} or
41017{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
41018/**
41019 * An element must be an instance of type "EObject class".
41020 */
41021private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41022 Type.name(type,"EObject class");
41023 find directInstanceOf(problem,interpretation,element,type);
41024}
41025private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41026 find interpretation(problem,interpretation);
41027 PartialInterpretation.scopes(interpretation,scope);
41028 Scope.targetTypeInterpretation(scope,typeInterpretation);
41029 Scope.maxNewElements(scope,0);
41030 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41031 Type.name(type,"EObject class");
41032}
41033
41034/**
41035 * An element may be an instance of type "EObject class".
41036 */
41037private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41038{
41039 find interpretation(problem,interpretation);
41040 PartialInterpretation.newElements(interpretation,element);
41041 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41042 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41043 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41044 neg find scopeDisallowsNewEObject_class(problem, interpretation);
41045 neg find isPrimitive(element);
41046} or {
41047 find interpretation(problem,interpretation);
41048 PartialInterpretation.openWorldElements(interpretation,element);
41049 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41050 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41051 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41052 neg find scopeDisallowsNewEObject_class(problem, interpretation);
41053 neg find isPrimitive(element);
41054} or
41055{ find mustInstanceOfEObject_class(problem,interpretation,element); }
41056/**
41057 * An element must be an instance of type "EOperation class".
41058 */
41059private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41060 Type.name(type,"EOperation class");
41061 find directInstanceOf(problem,interpretation,element,type);
41062}
41063private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41064 find interpretation(problem,interpretation);
41065 PartialInterpretation.scopes(interpretation,scope);
41066 Scope.targetTypeInterpretation(scope,typeInterpretation);
41067 Scope.maxNewElements(scope,0);
41068 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41069 Type.name(type,"EOperation class");
41070}
41071
41072/**
41073 * An element may be an instance of type "EOperation class".
41074 */
41075private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41076{
41077 find interpretation(problem,interpretation);
41078 PartialInterpretation.newElements(interpretation,element);
41079 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41080 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41081 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41082 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41083 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41084 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41085 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41086 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41087 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41088 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41089 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
41090 neg find isPrimitive(element);
41091} or {
41092 find interpretation(problem,interpretation);
41093 PartialInterpretation.openWorldElements(interpretation,element);
41094 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41095 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41096 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41097 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41098 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41099 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41100 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41101 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41102 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41103 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41104 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
41105 neg find isPrimitive(element);
41106} or
41107{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
41108/**
41109 * An element must be an instance of type "EPackage class".
41110 */
41111private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41112 Type.name(type,"EPackage class");
41113 find directInstanceOf(problem,interpretation,element,type);
41114}
41115private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41116 find interpretation(problem,interpretation);
41117 PartialInterpretation.scopes(interpretation,scope);
41118 Scope.targetTypeInterpretation(scope,typeInterpretation);
41119 Scope.maxNewElements(scope,0);
41120 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41121 Type.name(type,"EPackage class");
41122}
41123
41124/**
41125 * An element may be an instance of type "EPackage class".
41126 */
41127private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41128{
41129 find interpretation(problem,interpretation);
41130 PartialInterpretation.newElements(interpretation,element);
41131 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41132 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41133 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41134 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41135 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
41136 neg find isPrimitive(element);
41137} or {
41138 find interpretation(problem,interpretation);
41139 PartialInterpretation.openWorldElements(interpretation,element);
41140 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41141 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41142 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
41143 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41144 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
41145 neg find isPrimitive(element);
41146} or
41147{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
41148/**
41149 * An element must be an instance of type "EParameter class".
41150 */
41151private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41152 Type.name(type,"EParameter class");
41153 find directInstanceOf(problem,interpretation,element,type);
41154}
41155private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41156 find interpretation(problem,interpretation);
41157 PartialInterpretation.scopes(interpretation,scope);
41158 Scope.targetTypeInterpretation(scope,typeInterpretation);
41159 Scope.maxNewElements(scope,0);
41160 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41161 Type.name(type,"EParameter class");
41162}
41163
41164/**
41165 * An element may be an instance of type "EParameter class".
41166 */
41167private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41168{
41169 find interpretation(problem,interpretation);
41170 PartialInterpretation.newElements(interpretation,element);
41171 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41172 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41173 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41174 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41175 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41176 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41177 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41178 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41179 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41180 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41181 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
41182 neg find isPrimitive(element);
41183} or {
41184 find interpretation(problem,interpretation);
41185 PartialInterpretation.openWorldElements(interpretation,element);
41186 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41187 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41188 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41189 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41190 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41191 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41192 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41193 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41194 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41195 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41196 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
41197 neg find isPrimitive(element);
41198} or
41199{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
41200/**
41201 * An element must be an instance of type "EReference class".
41202 */
41203private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41204 Type.name(type,"EReference class");
41205 find directInstanceOf(problem,interpretation,element,type);
41206}
41207private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41208 find interpretation(problem,interpretation);
41209 PartialInterpretation.scopes(interpretation,scope);
41210 Scope.targetTypeInterpretation(scope,typeInterpretation);
41211 Scope.maxNewElements(scope,0);
41212 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41213 Type.name(type,"EReference class");
41214}
41215
41216/**
41217 * An element may be an instance of type "EReference class".
41218 */
41219private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41220{
41221 find interpretation(problem,interpretation);
41222 PartialInterpretation.newElements(interpretation,element);
41223 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41224 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41225 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41226 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41227 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41228 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41229 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41230 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41231 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41232 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41233 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41234 neg find scopeDisallowsNewEReference_class(problem, interpretation);
41235 neg find isPrimitive(element);
41236} or {
41237 find interpretation(problem,interpretation);
41238 PartialInterpretation.openWorldElements(interpretation,element);
41239 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41240 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41241 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41242 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41243 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41244 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41245 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41246 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41247 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41248 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41249 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41250 neg find scopeDisallowsNewEReference_class(problem, interpretation);
41251 neg find isPrimitive(element);
41252} or
41253{ find mustInstanceOfEReference_class(problem,interpretation,element); }
41254/**
41255 * An element must be an instance of type "EStructuralFeature class".
41256 */
41257private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41258 Type.name(type,"EStructuralFeature class");
41259 find directInstanceOf(problem,interpretation,element,type);
41260}
41261private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41262 find interpretation(problem,interpretation);
41263 PartialInterpretation.scopes(interpretation,scope);
41264 Scope.targetTypeInterpretation(scope,typeInterpretation);
41265 Scope.maxNewElements(scope,0);
41266 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41267 Type.name(type,"EStructuralFeature class");
41268}
41269
41270/**
41271 * An element may be an instance of type "EStructuralFeature class".
41272 */
41273private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41274{
41275 find interpretation(problem,interpretation);
41276 PartialInterpretation.newElements(interpretation,element);
41277 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41278 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41279 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41280 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41281 neg find mustInstanceOfEReference_class(problem,interpretation,element);
41282 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41283 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41284 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41285 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41286 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41287 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41288 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41289 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
41290 neg find isPrimitive(element);
41291} or {
41292 find interpretation(problem,interpretation);
41293 PartialInterpretation.openWorldElements(interpretation,element);
41294 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41295 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41296 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
41297 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41298 neg find mustInstanceOfEReference_class(problem,interpretation,element);
41299 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41300 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41301 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41302 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41303 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41304 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41305 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41306 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
41307 neg find isPrimitive(element);
41308} or
41309{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
41310/**
41311 * An element must be an instance of type "ETypedElement class".
41312 */
41313private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41314 Type.name(type,"ETypedElement class");
41315 find directInstanceOf(problem,interpretation,element,type);
41316}
41317private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41318 find interpretation(problem,interpretation);
41319 PartialInterpretation.scopes(interpretation,scope);
41320 Scope.targetTypeInterpretation(scope,typeInterpretation);
41321 Scope.maxNewElements(scope,0);
41322 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41323 Type.name(type,"ETypedElement class");
41324}
41325
41326/**
41327 * An element may be an instance of type "ETypedElement class".
41328 */
41329private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41330{
41331 find interpretation(problem,interpretation);
41332 PartialInterpretation.newElements(interpretation,element);
41333 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41334 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41335 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41336 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41337 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41338 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41339 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41340 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41341 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41342 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41343 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41344 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
41345 neg find isPrimitive(element);
41346} or {
41347 find interpretation(problem,interpretation);
41348 PartialInterpretation.openWorldElements(interpretation,element);
41349 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41350 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41351 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41352 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41353 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41354 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
41355 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41356 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
41357 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41358 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
41359 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41360 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
41361 neg find isPrimitive(element);
41362} or
41363{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
41364/**
41365 * An element must be an instance of type "EStringToStringMapEntry class".
41366 */
41367private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41368 Type.name(type,"EStringToStringMapEntry class");
41369 find directInstanceOf(problem,interpretation,element,type);
41370}
41371private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41372 find interpretation(problem,interpretation);
41373 PartialInterpretation.scopes(interpretation,scope);
41374 Scope.targetTypeInterpretation(scope,typeInterpretation);
41375 Scope.maxNewElements(scope,0);
41376 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41377 Type.name(type,"EStringToStringMapEntry class");
41378}
41379
41380/**
41381 * An element may be an instance of type "EStringToStringMapEntry class".
41382 */
41383private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41384{
41385 find interpretation(problem,interpretation);
41386 PartialInterpretation.newElements(interpretation,element);
41387 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41388 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41389 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41390 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
41391 neg find isPrimitive(element);
41392} or {
41393 find interpretation(problem,interpretation);
41394 PartialInterpretation.openWorldElements(interpretation,element);
41395 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41396 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41397 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41398 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
41399 neg find isPrimitive(element);
41400} or
41401{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
41402/**
41403 * An element must be an instance of type "EGenericType class".
41404 */
41405private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41406 Type.name(type,"EGenericType class");
41407 find directInstanceOf(problem,interpretation,element,type);
41408}
41409private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41410 find interpretation(problem,interpretation);
41411 PartialInterpretation.scopes(interpretation,scope);
41412 Scope.targetTypeInterpretation(scope,typeInterpretation);
41413 Scope.maxNewElements(scope,0);
41414 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41415 Type.name(type,"EGenericType class");
41416}
41417
41418/**
41419 * An element may be an instance of type "EGenericType class".
41420 */
41421private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41422{
41423 find interpretation(problem,interpretation);
41424 PartialInterpretation.newElements(interpretation,element);
41425 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41426 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41427 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41428 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
41429 neg find isPrimitive(element);
41430} or {
41431 find interpretation(problem,interpretation);
41432 PartialInterpretation.openWorldElements(interpretation,element);
41433 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41434 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41435 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
41436 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
41437 neg find isPrimitive(element);
41438} or
41439{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
41440/**
41441 * An element must be an instance of type "ETypeParameter class".
41442 */
41443private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41444 Type.name(type,"ETypeParameter class");
41445 find directInstanceOf(problem,interpretation,element,type);
41446}
41447private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
41448 find interpretation(problem,interpretation);
41449 PartialInterpretation.scopes(interpretation,scope);
41450 Scope.targetTypeInterpretation(scope,typeInterpretation);
41451 Scope.maxNewElements(scope,0);
41452 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41453 Type.name(type,"ETypeParameter class");
41454}
41455
41456/**
41457 * An element may be an instance of type "ETypeParameter class".
41458 */
41459private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41460{
41461 find interpretation(problem,interpretation);
41462 PartialInterpretation.newElements(interpretation,element);
41463 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41464 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41465 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41466 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41467 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41468 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41469 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41470 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41471 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
41472 neg find isPrimitive(element);
41473} or {
41474 find interpretation(problem,interpretation);
41475 PartialInterpretation.openWorldElements(interpretation,element);
41476 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41477 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41478 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41479 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41480 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41481 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41482 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41483 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41484 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
41485 neg find isPrimitive(element);
41486} or
41487{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
41488/**
41489 * An element must be an instance of type "EModelElement class DefinedPart".
41490 */
41491private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41492 Type.name(type,"EModelElement class DefinedPart");
41493 find directInstanceOf(problem,interpretation,element,type);
41494}
41495private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41496 find interpretation(problem,interpretation);
41497 PartialInterpretation.scopes(interpretation,scope);
41498 Scope.targetTypeInterpretation(scope,typeInterpretation);
41499 Scope.maxNewElements(scope,0);
41500 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41501 Type.name(type,"EModelElement class DefinedPart");
41502}
41503
41504/**
41505 * An element may be an instance of type "EModelElement class DefinedPart".
41506 */
41507private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41508{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
41509/**
41510 * An element must be an instance of type "EModelElement class UndefinedPart".
41511 */
41512private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41513 Type.name(type,"EModelElement class UndefinedPart");
41514 find directInstanceOf(problem,interpretation,element,type);
41515}
41516private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41517 find interpretation(problem,interpretation);
41518 PartialInterpretation.scopes(interpretation,scope);
41519 Scope.targetTypeInterpretation(scope,typeInterpretation);
41520 Scope.maxNewElements(scope,0);
41521 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41522 Type.name(type,"EModelElement class UndefinedPart");
41523}
41524
41525/**
41526 * An element may be an instance of type "EModelElement class UndefinedPart".
41527 */
41528private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41529{
41530 find interpretation(problem,interpretation);
41531 PartialInterpretation.newElements(interpretation,element);
41532 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41533 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41534 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
41535 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41536 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41537 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
41538 neg find isPrimitive(element);
41539} or {
41540 find interpretation(problem,interpretation);
41541 PartialInterpretation.openWorldElements(interpretation,element);
41542 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41543 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41544 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
41545 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41546 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41547 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
41548 neg find isPrimitive(element);
41549} or
41550{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
41551/**
41552 * An element must be an instance of type "ENamedElement class DefinedPart".
41553 */
41554private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41555 Type.name(type,"ENamedElement class DefinedPart");
41556 find directInstanceOf(problem,interpretation,element,type);
41557}
41558private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41559 find interpretation(problem,interpretation);
41560 PartialInterpretation.scopes(interpretation,scope);
41561 Scope.targetTypeInterpretation(scope,typeInterpretation);
41562 Scope.maxNewElements(scope,0);
41563 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41564 Type.name(type,"ENamedElement class DefinedPart");
41565}
41566
41567/**
41568 * An element may be an instance of type "ENamedElement class DefinedPart".
41569 */
41570private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41571{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
41572/**
41573 * An element must be an instance of type "ENamedElement class UndefinedPart".
41574 */
41575private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41576 Type.name(type,"ENamedElement class UndefinedPart");
41577 find directInstanceOf(problem,interpretation,element,type);
41578}
41579private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41580 find interpretation(problem,interpretation);
41581 PartialInterpretation.scopes(interpretation,scope);
41582 Scope.targetTypeInterpretation(scope,typeInterpretation);
41583 Scope.maxNewElements(scope,0);
41584 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41585 Type.name(type,"ENamedElement class UndefinedPart");
41586}
41587
41588/**
41589 * An element may be an instance of type "ENamedElement class UndefinedPart".
41590 */
41591private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41592{
41593 find interpretation(problem,interpretation);
41594 PartialInterpretation.newElements(interpretation,element);
41595 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41596 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41597 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41598 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41599 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41600 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41601 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41602 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41603 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41604 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
41605 neg find isPrimitive(element);
41606} or {
41607 find interpretation(problem,interpretation);
41608 PartialInterpretation.openWorldElements(interpretation,element);
41609 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41610 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41611 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41612 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41613 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41614 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41615 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41616 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
41617 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41618 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
41619 neg find isPrimitive(element);
41620} or
41621{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
41622/**
41623 * An element must be an instance of type "EPackage class DefinedPart".
41624 */
41625private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41626 Type.name(type,"EPackage class DefinedPart");
41627 find directInstanceOf(problem,interpretation,element,type);
41628}
41629private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41630 find interpretation(problem,interpretation);
41631 PartialInterpretation.scopes(interpretation,scope);
41632 Scope.targetTypeInterpretation(scope,typeInterpretation);
41633 Scope.maxNewElements(scope,0);
41634 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41635 Type.name(type,"EPackage class DefinedPart");
41636}
41637
41638/**
41639 * An element may be an instance of type "EPackage class DefinedPart".
41640 */
41641private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41642{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
41643/**
41644 * An element must be an instance of type "EPackage class UndefinedPart".
41645 */
41646private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
41647 Type.name(type,"EPackage class UndefinedPart");
41648 find directInstanceOf(problem,interpretation,element,type);
41649}
41650private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
41651 find interpretation(problem,interpretation);
41652 PartialInterpretation.scopes(interpretation,scope);
41653 Scope.targetTypeInterpretation(scope,typeInterpretation);
41654 Scope.maxNewElements(scope,0);
41655 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
41656 Type.name(type,"EPackage class UndefinedPart");
41657}
41658
41659/**
41660 * An element may be an instance of type "EPackage class UndefinedPart".
41661 */
41662private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
41663{
41664 find interpretation(problem,interpretation);
41665 PartialInterpretation.newElements(interpretation,element);
41666 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41667 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41668 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41669 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41670 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41671 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41672 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41673 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41674 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
41675 neg find isPrimitive(element);
41676} or {
41677 find interpretation(problem,interpretation);
41678 PartialInterpretation.openWorldElements(interpretation,element);
41679 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
41680 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
41681 neg find mustInstanceOfEObject_class(problem,interpretation,element);
41682 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
41683 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
41684 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
41685 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
41686 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
41687 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
41688 neg find isPrimitive(element);
41689} or
41690{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
41691
41692//////////
41693// 1.2 Relation Declaration Indexers
41694//////////
41695/**
41696 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
41697 */
41698private pattern mustInRelationeAttributeType_reference_EAttribute(
41699 problem:LogicProblem, interpretation:PartialInterpretation,
41700 source: DefinedElement, target:DefinedElement)
41701{
41702 find interpretation(problem,interpretation);
41703 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41704 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
41705 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41706 BinaryElementRelationLink.param1(link,source);
41707 BinaryElementRelationLink.param2(link,target);
41708}
41709/**
41710 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
41711 */
41712private pattern mayInRelationeAttributeType_reference_EAttribute(
41713 problem:LogicProblem, interpretation:PartialInterpretation,
41714 source: DefinedElement, target:DefinedElement)
41715{
41716 find interpretation(problem,interpretation);
41717 // The two endpoint of the link have to exist
41718 find mayExist(problem, interpretation, source);
41719 find mayExist(problem, interpretation, target);
41720 // Type consistency
41721 find mayInstanceOfEAttribute_class(problem,interpretation,source);
41722 find mayInstanceOfEDataType_class(problem,interpretation,target);
41723 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
41724 // the upper bound of the multiplicity should be considered.
41725 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
41726 check(numberOfExistingReferences < 1);
41727} or {
41728 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
41729}
41730/**
41731 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
41732 */
41733private pattern mustInRelationdetails_reference_EAnnotation(
41734 problem:LogicProblem, interpretation:PartialInterpretation,
41735 source: DefinedElement, target:DefinedElement)
41736{
41737 find interpretation(problem,interpretation);
41738 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41739 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
41740 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41741 BinaryElementRelationLink.param1(link,source);
41742 BinaryElementRelationLink.param2(link,target);
41743}
41744/**
41745 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
41746 */
41747private pattern mayInRelationdetails_reference_EAnnotation(
41748 problem:LogicProblem, interpretation:PartialInterpretation,
41749 source: DefinedElement, target:DefinedElement)
41750{
41751 find interpretation(problem,interpretation);
41752 // The two endpoint of the link have to exist
41753 find mayExist(problem, interpretation, source);
41754 find mayExist(problem, interpretation, target);
41755 // Type consistency
41756 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41757 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
41758 // The reference is containment, then a new reference cannot be create if:
41759 // 1. Multiple parents
41760 neg find mustContains4(problem,interpretation,_,target);
41761 // 2. Circle in the containment hierarchy
41762 neg find mustTransitiveContains(source,target);
41763} or {
41764 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
41765}
41766/**
41767 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
41768 */
41769private pattern mustInRelationeModelElement_reference_EAnnotation(
41770 problem:LogicProblem, interpretation:PartialInterpretation,
41771 source: DefinedElement, target:DefinedElement)
41772{
41773 find interpretation(problem,interpretation);
41774 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41775 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
41776 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41777 BinaryElementRelationLink.param1(link,source);
41778 BinaryElementRelationLink.param2(link,target);
41779}
41780/**
41781 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
41782 */
41783private pattern mayInRelationeModelElement_reference_EAnnotation(
41784 problem:LogicProblem, interpretation:PartialInterpretation,
41785 source: DefinedElement, target:DefinedElement)
41786{
41787 find interpretation(problem,interpretation);
41788 // The two endpoint of the link have to exist
41789 find mayExist(problem, interpretation, source);
41790 find mayExist(problem, interpretation, target);
41791 // Type consistency
41792 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41793 find mayInstanceOfEModelElement_class(problem,interpretation,target);
41794 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
41795 // the upper bound of the multiplicity should be considered.
41796 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
41797 check(numberOfExistingReferences < 1);
41798 // The eOpposite of the reference is containment, then a referene cannot be created if
41799 // 1. Multiple parents
41800 neg find mustContains4(problem,interpretation,source,_);
41801 // 2. Circle in the containment hierarchy
41802 neg find mustTransitiveContains(source,target);
41803} or {
41804 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
41805}
41806/**
41807 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
41808 */
41809private pattern mustInRelationcontents_reference_EAnnotation(
41810 problem:LogicProblem, interpretation:PartialInterpretation,
41811 source: DefinedElement, target:DefinedElement)
41812{
41813 find interpretation(problem,interpretation);
41814 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41815 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
41816 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41817 BinaryElementRelationLink.param1(link,source);
41818 BinaryElementRelationLink.param2(link,target);
41819}
41820/**
41821 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
41822 */
41823private pattern mayInRelationcontents_reference_EAnnotation(
41824 problem:LogicProblem, interpretation:PartialInterpretation,
41825 source: DefinedElement, target:DefinedElement)
41826{
41827 find interpretation(problem,interpretation);
41828 // The two endpoint of the link have to exist
41829 find mayExist(problem, interpretation, source);
41830 find mayExist(problem, interpretation, target);
41831 // Type consistency
41832 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41833 find mayInstanceOfEObject_class(problem,interpretation,target);
41834 // The reference is containment, then a new reference cannot be create if:
41835 // 1. Multiple parents
41836 neg find mustContains4(problem,interpretation,_,target);
41837 // 2. Circle in the containment hierarchy
41838 neg find mustTransitiveContains(source,target);
41839} or {
41840 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
41841}
41842/**
41843 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
41844 */
41845private pattern mustInRelationreferences_reference_EAnnotation(
41846 problem:LogicProblem, interpretation:PartialInterpretation,
41847 source: DefinedElement, target:DefinedElement)
41848{
41849 find interpretation(problem,interpretation);
41850 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41851 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
41852 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41853 BinaryElementRelationLink.param1(link,source);
41854 BinaryElementRelationLink.param2(link,target);
41855}
41856/**
41857 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
41858 */
41859private pattern mayInRelationreferences_reference_EAnnotation(
41860 problem:LogicProblem, interpretation:PartialInterpretation,
41861 source: DefinedElement, target:DefinedElement)
41862{
41863 find interpretation(problem,interpretation);
41864 // The two endpoint of the link have to exist
41865 find mayExist(problem, interpretation, source);
41866 find mayExist(problem, interpretation, target);
41867 // Type consistency
41868 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
41869 find mayInstanceOfEObject_class(problem,interpretation,target);
41870} or {
41871 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
41872}
41873/**
41874 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
41875 */
41876private pattern mustInRelationeSuperTypes_reference_EClass(
41877 problem:LogicProblem, interpretation:PartialInterpretation,
41878 source: DefinedElement, target:DefinedElement)
41879{
41880 find interpretation(problem,interpretation);
41881 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41882 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
41883 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41884 BinaryElementRelationLink.param1(link,source);
41885 BinaryElementRelationLink.param2(link,target);
41886}
41887/**
41888 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
41889 */
41890private pattern mayInRelationeSuperTypes_reference_EClass(
41891 problem:LogicProblem, interpretation:PartialInterpretation,
41892 source: DefinedElement, target:DefinedElement)
41893{
41894 find interpretation(problem,interpretation);
41895 // The two endpoint of the link have to exist
41896 find mayExist(problem, interpretation, source);
41897 find mayExist(problem, interpretation, target);
41898 // Type consistency
41899 find mayInstanceOfEClass_class(problem,interpretation,source);
41900 find mayInstanceOfEClass_class(problem,interpretation,target);
41901} or {
41902 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
41903}
41904/**
41905 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
41906 */
41907private pattern mustInRelationeOperations_reference_EClass(
41908 problem:LogicProblem, interpretation:PartialInterpretation,
41909 source: DefinedElement, target:DefinedElement)
41910{
41911 find interpretation(problem,interpretation);
41912 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41913 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
41914 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41915 BinaryElementRelationLink.param1(link,source);
41916 BinaryElementRelationLink.param2(link,target);
41917}
41918/**
41919 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
41920 */
41921private pattern mayInRelationeOperations_reference_EClass(
41922 problem:LogicProblem, interpretation:PartialInterpretation,
41923 source: DefinedElement, target:DefinedElement)
41924{
41925 find interpretation(problem,interpretation);
41926 // The two endpoint of the link have to exist
41927 find mayExist(problem, interpretation, source);
41928 find mayExist(problem, interpretation, target);
41929 // Type consistency
41930 find mayInstanceOfEClass_class(problem,interpretation,source);
41931 find mayInstanceOfEOperation_class(problem,interpretation,target);
41932 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
41933 // the upper bound of the opposite reference multiplicity should be considered.
41934 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
41935 check(numberOfExistingOppositeReferences < 1);
41936 // The reference is containment, then a new reference cannot be create if:
41937 // 1. Multiple parents
41938 neg find mustContains4(problem,interpretation,_,target);
41939 // 2. Circle in the containment hierarchy
41940 neg find mustTransitiveContains(source,target);
41941} or {
41942 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
41943}
41944/**
41945 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
41946 */
41947private pattern mustInRelationeAllAttributes_reference_EClass(
41948 problem:LogicProblem, interpretation:PartialInterpretation,
41949 source: DefinedElement, target:DefinedElement)
41950{
41951 find interpretation(problem,interpretation);
41952 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41953 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
41954 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41955 BinaryElementRelationLink.param1(link,source);
41956 BinaryElementRelationLink.param2(link,target);
41957}
41958/**
41959 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
41960 */
41961private pattern mayInRelationeAllAttributes_reference_EClass(
41962 problem:LogicProblem, interpretation:PartialInterpretation,
41963 source: DefinedElement, target:DefinedElement)
41964{
41965 find interpretation(problem,interpretation);
41966 // The two endpoint of the link have to exist
41967 find mayExist(problem, interpretation, source);
41968 find mayExist(problem, interpretation, target);
41969 // Type consistency
41970 find mayInstanceOfEClass_class(problem,interpretation,source);
41971 find mayInstanceOfEAttribute_class(problem,interpretation,target);
41972} or {
41973 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
41974}
41975/**
41976 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
41977 */
41978private pattern mustInRelationeAllReferences_reference_EClass(
41979 problem:LogicProblem, interpretation:PartialInterpretation,
41980 source: DefinedElement, target:DefinedElement)
41981{
41982 find interpretation(problem,interpretation);
41983 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
41984 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
41985 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
41986 BinaryElementRelationLink.param1(link,source);
41987 BinaryElementRelationLink.param2(link,target);
41988}
41989/**
41990 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
41991 */
41992private pattern mayInRelationeAllReferences_reference_EClass(
41993 problem:LogicProblem, interpretation:PartialInterpretation,
41994 source: DefinedElement, target:DefinedElement)
41995{
41996 find interpretation(problem,interpretation);
41997 // The two endpoint of the link have to exist
41998 find mayExist(problem, interpretation, source);
41999 find mayExist(problem, interpretation, target);
42000 // Type consistency
42001 find mayInstanceOfEClass_class(problem,interpretation,source);
42002 find mayInstanceOfEReference_class(problem,interpretation,target);
42003} or {
42004 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
42005}
42006/**
42007 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
42008 */
42009private pattern mustInRelationeReferences_reference_EClass(
42010 problem:LogicProblem, interpretation:PartialInterpretation,
42011 source: DefinedElement, target:DefinedElement)
42012{
42013 find interpretation(problem,interpretation);
42014 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42015 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
42016 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42017 BinaryElementRelationLink.param1(link,source);
42018 BinaryElementRelationLink.param2(link,target);
42019}
42020/**
42021 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
42022 */
42023private pattern mayInRelationeReferences_reference_EClass(
42024 problem:LogicProblem, interpretation:PartialInterpretation,
42025 source: DefinedElement, target:DefinedElement)
42026{
42027 find interpretation(problem,interpretation);
42028 // The two endpoint of the link have to exist
42029 find mayExist(problem, interpretation, source);
42030 find mayExist(problem, interpretation, target);
42031 // Type consistency
42032 find mayInstanceOfEClass_class(problem,interpretation,source);
42033 find mayInstanceOfEReference_class(problem,interpretation,target);
42034} or {
42035 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
42036}
42037/**
42038 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
42039 */
42040private pattern mustInRelationeAttributes_reference_EClass(
42041 problem:LogicProblem, interpretation:PartialInterpretation,
42042 source: DefinedElement, target:DefinedElement)
42043{
42044 find interpretation(problem,interpretation);
42045 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42046 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
42047 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42048 BinaryElementRelationLink.param1(link,source);
42049 BinaryElementRelationLink.param2(link,target);
42050}
42051/**
42052 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
42053 */
42054private pattern mayInRelationeAttributes_reference_EClass(
42055 problem:LogicProblem, interpretation:PartialInterpretation,
42056 source: DefinedElement, target:DefinedElement)
42057{
42058 find interpretation(problem,interpretation);
42059 // The two endpoint of the link have to exist
42060 find mayExist(problem, interpretation, source);
42061 find mayExist(problem, interpretation, target);
42062 // Type consistency
42063 find mayInstanceOfEClass_class(problem,interpretation,source);
42064 find mayInstanceOfEAttribute_class(problem,interpretation,target);
42065} or {
42066 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
42067}
42068/**
42069 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
42070 */
42071private pattern mustInRelationeAllContainments_reference_EClass(
42072 problem:LogicProblem, interpretation:PartialInterpretation,
42073 source: DefinedElement, target:DefinedElement)
42074{
42075 find interpretation(problem,interpretation);
42076 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42077 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
42078 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42079 BinaryElementRelationLink.param1(link,source);
42080 BinaryElementRelationLink.param2(link,target);
42081}
42082/**
42083 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
42084 */
42085private pattern mayInRelationeAllContainments_reference_EClass(
42086 problem:LogicProblem, interpretation:PartialInterpretation,
42087 source: DefinedElement, target:DefinedElement)
42088{
42089 find interpretation(problem,interpretation);
42090 // The two endpoint of the link have to exist
42091 find mayExist(problem, interpretation, source);
42092 find mayExist(problem, interpretation, target);
42093 // Type consistency
42094 find mayInstanceOfEClass_class(problem,interpretation,source);
42095 find mayInstanceOfEReference_class(problem,interpretation,target);
42096} or {
42097 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
42098}
42099/**
42100 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
42101 */
42102private pattern mustInRelationeAllOperations_reference_EClass(
42103 problem:LogicProblem, interpretation:PartialInterpretation,
42104 source: DefinedElement, target:DefinedElement)
42105{
42106 find interpretation(problem,interpretation);
42107 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42108 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
42109 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42110 BinaryElementRelationLink.param1(link,source);
42111 BinaryElementRelationLink.param2(link,target);
42112}
42113/**
42114 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
42115 */
42116private pattern mayInRelationeAllOperations_reference_EClass(
42117 problem:LogicProblem, interpretation:PartialInterpretation,
42118 source: DefinedElement, target:DefinedElement)
42119{
42120 find interpretation(problem,interpretation);
42121 // The two endpoint of the link have to exist
42122 find mayExist(problem, interpretation, source);
42123 find mayExist(problem, interpretation, target);
42124 // Type consistency
42125 find mayInstanceOfEClass_class(problem,interpretation,source);
42126 find mayInstanceOfEOperation_class(problem,interpretation,target);
42127} or {
42128 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
42129}
42130/**
42131 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
42132 */
42133private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
42134 problem:LogicProblem, interpretation:PartialInterpretation,
42135 source: DefinedElement, target:DefinedElement)
42136{
42137 find interpretation(problem,interpretation);
42138 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42139 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
42140 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42141 BinaryElementRelationLink.param1(link,source);
42142 BinaryElementRelationLink.param2(link,target);
42143}
42144/**
42145 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
42146 */
42147private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
42148 problem:LogicProblem, interpretation:PartialInterpretation,
42149 source: DefinedElement, target:DefinedElement)
42150{
42151 find interpretation(problem,interpretation);
42152 // The two endpoint of the link have to exist
42153 find mayExist(problem, interpretation, source);
42154 find mayExist(problem, interpretation, target);
42155 // Type consistency
42156 find mayInstanceOfEClass_class(problem,interpretation,source);
42157 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
42158} or {
42159 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
42160}
42161/**
42162 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
42163 */
42164private pattern mustInRelationeAllSuperTypes_reference_EClass(
42165 problem:LogicProblem, interpretation:PartialInterpretation,
42166 source: DefinedElement, target:DefinedElement)
42167{
42168 find interpretation(problem,interpretation);
42169 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42170 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
42171 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42172 BinaryElementRelationLink.param1(link,source);
42173 BinaryElementRelationLink.param2(link,target);
42174}
42175/**
42176 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
42177 */
42178private pattern mayInRelationeAllSuperTypes_reference_EClass(
42179 problem:LogicProblem, interpretation:PartialInterpretation,
42180 source: DefinedElement, target:DefinedElement)
42181{
42182 find interpretation(problem,interpretation);
42183 // The two endpoint of the link have to exist
42184 find mayExist(problem, interpretation, source);
42185 find mayExist(problem, interpretation, target);
42186 // Type consistency
42187 find mayInstanceOfEClass_class(problem,interpretation,source);
42188 find mayInstanceOfEClass_class(problem,interpretation,target);
42189} or {
42190 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
42191}
42192/**
42193 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
42194 */
42195private pattern mustInRelationeIDAttribute_reference_EClass(
42196 problem:LogicProblem, interpretation:PartialInterpretation,
42197 source: DefinedElement, target:DefinedElement)
42198{
42199 find interpretation(problem,interpretation);
42200 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42201 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
42202 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42203 BinaryElementRelationLink.param1(link,source);
42204 BinaryElementRelationLink.param2(link,target);
42205}
42206/**
42207 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
42208 */
42209private pattern mayInRelationeIDAttribute_reference_EClass(
42210 problem:LogicProblem, interpretation:PartialInterpretation,
42211 source: DefinedElement, target:DefinedElement)
42212{
42213 find interpretation(problem,interpretation);
42214 // The two endpoint of the link have to exist
42215 find mayExist(problem, interpretation, source);
42216 find mayExist(problem, interpretation, target);
42217 // Type consistency
42218 find mayInstanceOfEClass_class(problem,interpretation,source);
42219 find mayInstanceOfEAttribute_class(problem,interpretation,target);
42220 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42221 // the upper bound of the multiplicity should be considered.
42222 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
42223 check(numberOfExistingReferences < 1);
42224} or {
42225 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
42226}
42227/**
42228 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
42229 */
42230private pattern mustInRelationeStructuralFeatures_reference_EClass(
42231 problem:LogicProblem, interpretation:PartialInterpretation,
42232 source: DefinedElement, target:DefinedElement)
42233{
42234 find interpretation(problem,interpretation);
42235 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42236 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
42237 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42238 BinaryElementRelationLink.param1(link,source);
42239 BinaryElementRelationLink.param2(link,target);
42240}
42241/**
42242 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
42243 */
42244private pattern mayInRelationeStructuralFeatures_reference_EClass(
42245 problem:LogicProblem, interpretation:PartialInterpretation,
42246 source: DefinedElement, target:DefinedElement)
42247{
42248 find interpretation(problem,interpretation);
42249 // The two endpoint of the link have to exist
42250 find mayExist(problem, interpretation, source);
42251 find mayExist(problem, interpretation, target);
42252 // Type consistency
42253 find mayInstanceOfEClass_class(problem,interpretation,source);
42254 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
42255 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42256 // the upper bound of the opposite reference multiplicity should be considered.
42257 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
42258 check(numberOfExistingOppositeReferences < 1);
42259 // The reference is containment, then a new reference cannot be create if:
42260 // 1. Multiple parents
42261 neg find mustContains4(problem,interpretation,_,target);
42262 // 2. Circle in the containment hierarchy
42263 neg find mustTransitiveContains(source,target);
42264} or {
42265 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
42266}
42267/**
42268 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
42269 */
42270private pattern mustInRelationeGenericSuperTypes_reference_EClass(
42271 problem:LogicProblem, interpretation:PartialInterpretation,
42272 source: DefinedElement, target:DefinedElement)
42273{
42274 find interpretation(problem,interpretation);
42275 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42276 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
42277 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42278 BinaryElementRelationLink.param1(link,source);
42279 BinaryElementRelationLink.param2(link,target);
42280}
42281/**
42282 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
42283 */
42284private pattern mayInRelationeGenericSuperTypes_reference_EClass(
42285 problem:LogicProblem, interpretation:PartialInterpretation,
42286 source: DefinedElement, target:DefinedElement)
42287{
42288 find interpretation(problem,interpretation);
42289 // The two endpoint of the link have to exist
42290 find mayExist(problem, interpretation, source);
42291 find mayExist(problem, interpretation, target);
42292 // Type consistency
42293 find mayInstanceOfEClass_class(problem,interpretation,source);
42294 find mayInstanceOfEGenericType_class(problem,interpretation,target);
42295 // The reference is containment, then a new reference cannot be create if:
42296 // 1. Multiple parents
42297 neg find mustContains4(problem,interpretation,_,target);
42298 // 2. Circle in the containment hierarchy
42299 neg find mustTransitiveContains(source,target);
42300} or {
42301 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
42302}
42303/**
42304 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
42305 */
42306private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
42307 problem:LogicProblem, interpretation:PartialInterpretation,
42308 source: DefinedElement, target:DefinedElement)
42309{
42310 find interpretation(problem,interpretation);
42311 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42312 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
42313 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42314 BinaryElementRelationLink.param1(link,source);
42315 BinaryElementRelationLink.param2(link,target);
42316}
42317/**
42318 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
42319 */
42320private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
42321 problem:LogicProblem, interpretation:PartialInterpretation,
42322 source: DefinedElement, target:DefinedElement)
42323{
42324 find interpretation(problem,interpretation);
42325 // The two endpoint of the link have to exist
42326 find mayExist(problem, interpretation, source);
42327 find mayExist(problem, interpretation, target);
42328 // Type consistency
42329 find mayInstanceOfEClass_class(problem,interpretation,source);
42330 find mayInstanceOfEGenericType_class(problem,interpretation,target);
42331} or {
42332 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
42333}
42334/**
42335 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
42336 */
42337private pattern mustInRelationePackage_reference_EClassifier(
42338 problem:LogicProblem, interpretation:PartialInterpretation,
42339 source: DefinedElement, target:DefinedElement)
42340{
42341 find interpretation(problem,interpretation);
42342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
42344 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42345 BinaryElementRelationLink.param1(link,source);
42346 BinaryElementRelationLink.param2(link,target);
42347}
42348/**
42349 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
42350 */
42351private pattern mayInRelationePackage_reference_EClassifier(
42352 problem:LogicProblem, interpretation:PartialInterpretation,
42353 source: DefinedElement, target:DefinedElement)
42354{
42355 find interpretation(problem,interpretation);
42356 // The two endpoint of the link have to exist
42357 find mayExist(problem, interpretation, source);
42358 find mayExist(problem, interpretation, target);
42359 // Type consistency
42360 find mayInstanceOfEClassifier_class(problem,interpretation,source);
42361 find mayInstanceOfEPackage_class(problem,interpretation,target);
42362 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42363 // the upper bound of the multiplicity should be considered.
42364 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
42365 check(numberOfExistingReferences < 1);
42366 // The eOpposite of the reference is containment, then a referene cannot be created if
42367 // 1. Multiple parents
42368 neg find mustContains4(problem,interpretation,source,_);
42369 // 2. Circle in the containment hierarchy
42370 neg find mustTransitiveContains(source,target);
42371} or {
42372 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
42373}
42374/**
42375 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
42376 */
42377private pattern mustInRelationeTypeParameters_reference_EClassifier(
42378 problem:LogicProblem, interpretation:PartialInterpretation,
42379 source: DefinedElement, target:DefinedElement)
42380{
42381 find interpretation(problem,interpretation);
42382 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42383 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
42384 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42385 BinaryElementRelationLink.param1(link,source);
42386 BinaryElementRelationLink.param2(link,target);
42387}
42388/**
42389 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
42390 */
42391private pattern mayInRelationeTypeParameters_reference_EClassifier(
42392 problem:LogicProblem, interpretation:PartialInterpretation,
42393 source: DefinedElement, target:DefinedElement)
42394{
42395 find interpretation(problem,interpretation);
42396 // The two endpoint of the link have to exist
42397 find mayExist(problem, interpretation, source);
42398 find mayExist(problem, interpretation, target);
42399 // Type consistency
42400 find mayInstanceOfEClassifier_class(problem,interpretation,source);
42401 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
42402 // The reference is containment, then a new reference cannot be create if:
42403 // 1. Multiple parents
42404 neg find mustContains4(problem,interpretation,_,target);
42405 // 2. Circle in the containment hierarchy
42406 neg find mustTransitiveContains(source,target);
42407} or {
42408 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
42409}
42410/**
42411 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
42412 */
42413private pattern mustInRelationeLiterals_reference_EEnum(
42414 problem:LogicProblem, interpretation:PartialInterpretation,
42415 source: DefinedElement, target:DefinedElement)
42416{
42417 find interpretation(problem,interpretation);
42418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
42420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42421 BinaryElementRelationLink.param1(link,source);
42422 BinaryElementRelationLink.param2(link,target);
42423}
42424/**
42425 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
42426 */
42427private pattern mayInRelationeLiterals_reference_EEnum(
42428 problem:LogicProblem, interpretation:PartialInterpretation,
42429 source: DefinedElement, target:DefinedElement)
42430{
42431 find interpretation(problem,interpretation);
42432 // The two endpoint of the link have to exist
42433 find mayExist(problem, interpretation, source);
42434 find mayExist(problem, interpretation, target);
42435 // Type consistency
42436 find mayInstanceOfEEnum_class(problem,interpretation,source);
42437 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
42438 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42439 // the upper bound of the opposite reference multiplicity should be considered.
42440 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
42441 check(numberOfExistingOppositeReferences < 1);
42442 // The reference is containment, then a new reference cannot be create if:
42443 // 1. Multiple parents
42444 neg find mustContains4(problem,interpretation,_,target);
42445 // 2. Circle in the containment hierarchy
42446 neg find mustTransitiveContains(source,target);
42447} or {
42448 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
42449}
42450/**
42451 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
42452 */
42453private pattern mustInRelationeEnum_reference_EEnumLiteral(
42454 problem:LogicProblem, interpretation:PartialInterpretation,
42455 source: DefinedElement, target:DefinedElement)
42456{
42457 find interpretation(problem,interpretation);
42458 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42459 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
42460 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42461 BinaryElementRelationLink.param1(link,source);
42462 BinaryElementRelationLink.param2(link,target);
42463}
42464/**
42465 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
42466 */
42467private pattern mayInRelationeEnum_reference_EEnumLiteral(
42468 problem:LogicProblem, interpretation:PartialInterpretation,
42469 source: DefinedElement, target:DefinedElement)
42470{
42471 find interpretation(problem,interpretation);
42472 // The two endpoint of the link have to exist
42473 find mayExist(problem, interpretation, source);
42474 find mayExist(problem, interpretation, target);
42475 // Type consistency
42476 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
42477 find mayInstanceOfEEnum_class(problem,interpretation,target);
42478 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42479 // the upper bound of the multiplicity should be considered.
42480 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
42481 check(numberOfExistingReferences < 1);
42482 // The eOpposite of the reference is containment, then a referene cannot be created if
42483 // 1. Multiple parents
42484 neg find mustContains4(problem,interpretation,source,_);
42485 // 2. Circle in the containment hierarchy
42486 neg find mustTransitiveContains(source,target);
42487} or {
42488 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
42489}
42490/**
42491 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
42492 */
42493private pattern mustInRelationeAnnotations_reference_EModelElement(
42494 problem:LogicProblem, interpretation:PartialInterpretation,
42495 source: DefinedElement, target:DefinedElement)
42496{
42497 find interpretation(problem,interpretation);
42498 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42499 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
42500 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42501 BinaryElementRelationLink.param1(link,source);
42502 BinaryElementRelationLink.param2(link,target);
42503}
42504/**
42505 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
42506 */
42507private pattern mayInRelationeAnnotations_reference_EModelElement(
42508 problem:LogicProblem, interpretation:PartialInterpretation,
42509 source: DefinedElement, target:DefinedElement)
42510{
42511 find interpretation(problem,interpretation);
42512 // The two endpoint of the link have to exist
42513 find mayExist(problem, interpretation, source);
42514 find mayExist(problem, interpretation, target);
42515 // Type consistency
42516 find mayInstanceOfEModelElement_class(problem,interpretation,source);
42517 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
42518 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42519 // the upper bound of the opposite reference multiplicity should be considered.
42520 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
42521 check(numberOfExistingOppositeReferences < 1);
42522 // The reference is containment, then a new reference cannot be create if:
42523 // 1. Multiple parents
42524 neg find mustContains4(problem,interpretation,_,target);
42525 // 2. Circle in the containment hierarchy
42526 neg find mustTransitiveContains(source,target);
42527} or {
42528 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
42529}
42530/**
42531 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
42532 */
42533private pattern mustInRelationeContainingClass_reference_EOperation(
42534 problem:LogicProblem, interpretation:PartialInterpretation,
42535 source: DefinedElement, target:DefinedElement)
42536{
42537 find interpretation(problem,interpretation);
42538 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42539 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
42540 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42541 BinaryElementRelationLink.param1(link,source);
42542 BinaryElementRelationLink.param2(link,target);
42543}
42544/**
42545 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
42546 */
42547private pattern mayInRelationeContainingClass_reference_EOperation(
42548 problem:LogicProblem, interpretation:PartialInterpretation,
42549 source: DefinedElement, target:DefinedElement)
42550{
42551 find interpretation(problem,interpretation);
42552 // The two endpoint of the link have to exist
42553 find mayExist(problem, interpretation, source);
42554 find mayExist(problem, interpretation, target);
42555 // Type consistency
42556 find mayInstanceOfEOperation_class(problem,interpretation,source);
42557 find mayInstanceOfEClass_class(problem,interpretation,target);
42558 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42559 // the upper bound of the multiplicity should be considered.
42560 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
42561 check(numberOfExistingReferences < 1);
42562 // The eOpposite of the reference is containment, then a referene cannot be created if
42563 // 1. Multiple parents
42564 neg find mustContains4(problem,interpretation,source,_);
42565 // 2. Circle in the containment hierarchy
42566 neg find mustTransitiveContains(source,target);
42567} or {
42568 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
42569}
42570/**
42571 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
42572 */
42573private pattern mustInRelationeTypeParameters_reference_EOperation(
42574 problem:LogicProblem, interpretation:PartialInterpretation,
42575 source: DefinedElement, target:DefinedElement)
42576{
42577 find interpretation(problem,interpretation);
42578 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42579 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
42580 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42581 BinaryElementRelationLink.param1(link,source);
42582 BinaryElementRelationLink.param2(link,target);
42583}
42584/**
42585 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
42586 */
42587private pattern mayInRelationeTypeParameters_reference_EOperation(
42588 problem:LogicProblem, interpretation:PartialInterpretation,
42589 source: DefinedElement, target:DefinedElement)
42590{
42591 find interpretation(problem,interpretation);
42592 // The two endpoint of the link have to exist
42593 find mayExist(problem, interpretation, source);
42594 find mayExist(problem, interpretation, target);
42595 // Type consistency
42596 find mayInstanceOfEOperation_class(problem,interpretation,source);
42597 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
42598 // The reference is containment, then a new reference cannot be create if:
42599 // 1. Multiple parents
42600 neg find mustContains4(problem,interpretation,_,target);
42601 // 2. Circle in the containment hierarchy
42602 neg find mustTransitiveContains(source,target);
42603} or {
42604 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
42605}
42606/**
42607 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
42608 */
42609private pattern mustInRelationeParameters_reference_EOperation(
42610 problem:LogicProblem, interpretation:PartialInterpretation,
42611 source: DefinedElement, target:DefinedElement)
42612{
42613 find interpretation(problem,interpretation);
42614 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42615 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
42616 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42617 BinaryElementRelationLink.param1(link,source);
42618 BinaryElementRelationLink.param2(link,target);
42619}
42620/**
42621 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
42622 */
42623private pattern mayInRelationeParameters_reference_EOperation(
42624 problem:LogicProblem, interpretation:PartialInterpretation,
42625 source: DefinedElement, target:DefinedElement)
42626{
42627 find interpretation(problem,interpretation);
42628 // The two endpoint of the link have to exist
42629 find mayExist(problem, interpretation, source);
42630 find mayExist(problem, interpretation, target);
42631 // Type consistency
42632 find mayInstanceOfEOperation_class(problem,interpretation,source);
42633 find mayInstanceOfEParameter_class(problem,interpretation,target);
42634 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42635 // the upper bound of the opposite reference multiplicity should be considered.
42636 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
42637 check(numberOfExistingOppositeReferences < 1);
42638 // The reference is containment, then a new reference cannot be create if:
42639 // 1. Multiple parents
42640 neg find mustContains4(problem,interpretation,_,target);
42641 // 2. Circle in the containment hierarchy
42642 neg find mustTransitiveContains(source,target);
42643} or {
42644 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
42645}
42646/**
42647 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
42648 */
42649private pattern mustInRelationeExceptions_reference_EOperation(
42650 problem:LogicProblem, interpretation:PartialInterpretation,
42651 source: DefinedElement, target:DefinedElement)
42652{
42653 find interpretation(problem,interpretation);
42654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
42656 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42657 BinaryElementRelationLink.param1(link,source);
42658 BinaryElementRelationLink.param2(link,target);
42659}
42660/**
42661 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
42662 */
42663private pattern mayInRelationeExceptions_reference_EOperation(
42664 problem:LogicProblem, interpretation:PartialInterpretation,
42665 source: DefinedElement, target:DefinedElement)
42666{
42667 find interpretation(problem,interpretation);
42668 // The two endpoint of the link have to exist
42669 find mayExist(problem, interpretation, source);
42670 find mayExist(problem, interpretation, target);
42671 // Type consistency
42672 find mayInstanceOfEOperation_class(problem,interpretation,source);
42673 find mayInstanceOfEClassifier_class(problem,interpretation,target);
42674} or {
42675 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
42676}
42677/**
42678 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
42679 */
42680private pattern mustInRelationeGenericExceptions_reference_EOperation(
42681 problem:LogicProblem, interpretation:PartialInterpretation,
42682 source: DefinedElement, target:DefinedElement)
42683{
42684 find interpretation(problem,interpretation);
42685 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42686 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
42687 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42688 BinaryElementRelationLink.param1(link,source);
42689 BinaryElementRelationLink.param2(link,target);
42690}
42691/**
42692 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
42693 */
42694private pattern mayInRelationeGenericExceptions_reference_EOperation(
42695 problem:LogicProblem, interpretation:PartialInterpretation,
42696 source: DefinedElement, target:DefinedElement)
42697{
42698 find interpretation(problem,interpretation);
42699 // The two endpoint of the link have to exist
42700 find mayExist(problem, interpretation, source);
42701 find mayExist(problem, interpretation, target);
42702 // Type consistency
42703 find mayInstanceOfEOperation_class(problem,interpretation,source);
42704 find mayInstanceOfEGenericType_class(problem,interpretation,target);
42705 // The reference is containment, then a new reference cannot be create if:
42706 // 1. Multiple parents
42707 neg find mustContains4(problem,interpretation,_,target);
42708 // 2. Circle in the containment hierarchy
42709 neg find mustTransitiveContains(source,target);
42710} or {
42711 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
42712}
42713/**
42714 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
42715 */
42716private pattern mustInRelationeClassifiers_reference_EPackage(
42717 problem:LogicProblem, interpretation:PartialInterpretation,
42718 source: DefinedElement, target:DefinedElement)
42719{
42720 find interpretation(problem,interpretation);
42721 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42722 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
42723 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42724 BinaryElementRelationLink.param1(link,source);
42725 BinaryElementRelationLink.param2(link,target);
42726}
42727/**
42728 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
42729 */
42730private pattern mayInRelationeClassifiers_reference_EPackage(
42731 problem:LogicProblem, interpretation:PartialInterpretation,
42732 source: DefinedElement, target:DefinedElement)
42733{
42734 find interpretation(problem,interpretation);
42735 // The two endpoint of the link have to exist
42736 find mayExist(problem, interpretation, source);
42737 find mayExist(problem, interpretation, target);
42738 // Type consistency
42739 find mayInstanceOfEPackage_class(problem,interpretation,source);
42740 find mayInstanceOfEClassifier_class(problem,interpretation,target);
42741 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42742 // the upper bound of the opposite reference multiplicity should be considered.
42743 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
42744 check(numberOfExistingOppositeReferences < 1);
42745 // The reference is containment, then a new reference cannot be create if:
42746 // 1. Multiple parents
42747 neg find mustContains4(problem,interpretation,_,target);
42748 // 2. Circle in the containment hierarchy
42749 neg find mustTransitiveContains(source,target);
42750} or {
42751 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
42752}
42753/**
42754 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
42755 */
42756private pattern mustInRelationeSubpackages_reference_EPackage(
42757 problem:LogicProblem, interpretation:PartialInterpretation,
42758 source: DefinedElement, target:DefinedElement)
42759{
42760 find interpretation(problem,interpretation);
42761 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42762 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
42763 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42764 BinaryElementRelationLink.param1(link,source);
42765 BinaryElementRelationLink.param2(link,target);
42766}
42767/**
42768 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
42769 */
42770private pattern mayInRelationeSubpackages_reference_EPackage(
42771 problem:LogicProblem, interpretation:PartialInterpretation,
42772 source: DefinedElement, target:DefinedElement)
42773{
42774 find interpretation(problem,interpretation);
42775 // The two endpoint of the link have to exist
42776 find mayExist(problem, interpretation, source);
42777 find mayExist(problem, interpretation, target);
42778 // Type consistency
42779 find mayInstanceOfEPackage_class(problem,interpretation,source);
42780 find mayInstanceOfEPackage_class(problem,interpretation,target);
42781 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
42782 // the upper bound of the opposite reference multiplicity should be considered.
42783 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
42784 check(numberOfExistingOppositeReferences < 1);
42785 // The reference is containment, then a new reference cannot be create if:
42786 // 1. Multiple parents
42787 neg find mustContains4(problem,interpretation,_,target);
42788 // 2. Circle in the containment hierarchy
42789 neg find mustTransitiveContains(source,target);
42790} or {
42791 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
42792}
42793/**
42794 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
42795 */
42796private pattern mustInRelationeSuperPackage_reference_EPackage(
42797 problem:LogicProblem, interpretation:PartialInterpretation,
42798 source: DefinedElement, target:DefinedElement)
42799{
42800 find interpretation(problem,interpretation);
42801 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42802 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
42803 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42804 BinaryElementRelationLink.param1(link,source);
42805 BinaryElementRelationLink.param2(link,target);
42806}
42807/**
42808 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
42809 */
42810private pattern mayInRelationeSuperPackage_reference_EPackage(
42811 problem:LogicProblem, interpretation:PartialInterpretation,
42812 source: DefinedElement, target:DefinedElement)
42813{
42814 find interpretation(problem,interpretation);
42815 // The two endpoint of the link have to exist
42816 find mayExist(problem, interpretation, source);
42817 find mayExist(problem, interpretation, target);
42818 // Type consistency
42819 find mayInstanceOfEPackage_class(problem,interpretation,source);
42820 find mayInstanceOfEPackage_class(problem,interpretation,target);
42821 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42822 // the upper bound of the multiplicity should be considered.
42823 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
42824 check(numberOfExistingReferences < 1);
42825 // The eOpposite of the reference is containment, then a referene cannot be created if
42826 // 1. Multiple parents
42827 neg find mustContains4(problem,interpretation,source,_);
42828 // 2. Circle in the containment hierarchy
42829 neg find mustTransitiveContains(source,target);
42830} or {
42831 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
42832}
42833/**
42834 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
42835 */
42836private pattern mustInRelationeOperation_reference_EParameter(
42837 problem:LogicProblem, interpretation:PartialInterpretation,
42838 source: DefinedElement, target:DefinedElement)
42839{
42840 find interpretation(problem,interpretation);
42841 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42842 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
42843 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42844 BinaryElementRelationLink.param1(link,source);
42845 BinaryElementRelationLink.param2(link,target);
42846}
42847/**
42848 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
42849 */
42850private pattern mayInRelationeOperation_reference_EParameter(
42851 problem:LogicProblem, interpretation:PartialInterpretation,
42852 source: DefinedElement, target:DefinedElement)
42853{
42854 find interpretation(problem,interpretation);
42855 // The two endpoint of the link have to exist
42856 find mayExist(problem, interpretation, source);
42857 find mayExist(problem, interpretation, target);
42858 // Type consistency
42859 find mayInstanceOfEParameter_class(problem,interpretation,source);
42860 find mayInstanceOfEOperation_class(problem,interpretation,target);
42861 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42862 // the upper bound of the multiplicity should be considered.
42863 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
42864 check(numberOfExistingReferences < 1);
42865 // The eOpposite of the reference is containment, then a referene cannot be created if
42866 // 1. Multiple parents
42867 neg find mustContains4(problem,interpretation,source,_);
42868 // 2. Circle in the containment hierarchy
42869 neg find mustTransitiveContains(source,target);
42870} or {
42871 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
42872}
42873/**
42874 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
42875 */
42876private pattern mustInRelationeOpposite_reference_EReference(
42877 problem:LogicProblem, interpretation:PartialInterpretation,
42878 source: DefinedElement, target:DefinedElement)
42879{
42880 find interpretation(problem,interpretation);
42881 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42882 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
42883 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42884 BinaryElementRelationLink.param1(link,source);
42885 BinaryElementRelationLink.param2(link,target);
42886}
42887/**
42888 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
42889 */
42890private pattern mayInRelationeOpposite_reference_EReference(
42891 problem:LogicProblem, interpretation:PartialInterpretation,
42892 source: DefinedElement, target:DefinedElement)
42893{
42894 find interpretation(problem,interpretation);
42895 // The two endpoint of the link have to exist
42896 find mayExist(problem, interpretation, source);
42897 find mayExist(problem, interpretation, target);
42898 // Type consistency
42899 find mayInstanceOfEReference_class(problem,interpretation,source);
42900 find mayInstanceOfEReference_class(problem,interpretation,target);
42901 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42902 // the upper bound of the multiplicity should be considered.
42903 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
42904 check(numberOfExistingReferences < 1);
42905} or {
42906 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
42907}
42908/**
42909 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
42910 */
42911private pattern mustInRelationeReferenceType_reference_EReference(
42912 problem:LogicProblem, interpretation:PartialInterpretation,
42913 source: DefinedElement, target:DefinedElement)
42914{
42915 find interpretation(problem,interpretation);
42916 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42917 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
42918 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42919 BinaryElementRelationLink.param1(link,source);
42920 BinaryElementRelationLink.param2(link,target);
42921}
42922/**
42923 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
42924 */
42925private pattern mayInRelationeReferenceType_reference_EReference(
42926 problem:LogicProblem, interpretation:PartialInterpretation,
42927 source: DefinedElement, target:DefinedElement)
42928{
42929 find interpretation(problem,interpretation);
42930 // The two endpoint of the link have to exist
42931 find mayExist(problem, interpretation, source);
42932 find mayExist(problem, interpretation, target);
42933 // Type consistency
42934 find mayInstanceOfEReference_class(problem,interpretation,source);
42935 find mayInstanceOfEClass_class(problem,interpretation,target);
42936 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
42937 // the upper bound of the multiplicity should be considered.
42938 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
42939 check(numberOfExistingReferences < 1);
42940} or {
42941 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
42942}
42943/**
42944 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
42945 */
42946private pattern mustInRelationeKeys_reference_EReference(
42947 problem:LogicProblem, interpretation:PartialInterpretation,
42948 source: DefinedElement, target:DefinedElement)
42949{
42950 find interpretation(problem,interpretation);
42951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
42953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42954 BinaryElementRelationLink.param1(link,source);
42955 BinaryElementRelationLink.param2(link,target);
42956}
42957/**
42958 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
42959 */
42960private pattern mayInRelationeKeys_reference_EReference(
42961 problem:LogicProblem, interpretation:PartialInterpretation,
42962 source: DefinedElement, target:DefinedElement)
42963{
42964 find interpretation(problem,interpretation);
42965 // The two endpoint of the link have to exist
42966 find mayExist(problem, interpretation, source);
42967 find mayExist(problem, interpretation, target);
42968 // Type consistency
42969 find mayInstanceOfEReference_class(problem,interpretation,source);
42970 find mayInstanceOfEAttribute_class(problem,interpretation,target);
42971} or {
42972 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
42973}
42974/**
42975 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
42976 */
42977private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
42978 problem:LogicProblem, interpretation:PartialInterpretation,
42979 source: DefinedElement, target:DefinedElement)
42980{
42981 find interpretation(problem,interpretation);
42982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
42983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
42984 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
42985 BinaryElementRelationLink.param1(link,source);
42986 BinaryElementRelationLink.param2(link,target);
42987}
42988/**
42989 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
42990 */
42991private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
42992 problem:LogicProblem, interpretation:PartialInterpretation,
42993 source: DefinedElement, target:DefinedElement)
42994{
42995 find interpretation(problem,interpretation);
42996 // The two endpoint of the link have to exist
42997 find mayExist(problem, interpretation, source);
42998 find mayExist(problem, interpretation, target);
42999 // Type consistency
43000 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43001 find mayInstanceOfEClass_class(problem,interpretation,target);
43002 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43003 // the upper bound of the multiplicity should be considered.
43004 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
43005 check(numberOfExistingReferences < 1);
43006 // The eOpposite of the reference is containment, then a referene cannot be created if
43007 // 1. Multiple parents
43008 neg find mustContains4(problem,interpretation,source,_);
43009 // 2. Circle in the containment hierarchy
43010 neg find mustTransitiveContains(source,target);
43011} or {
43012 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
43013}
43014/**
43015 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
43016 */
43017private pattern mustInRelationeType_reference_ETypedElement(
43018 problem:LogicProblem, interpretation:PartialInterpretation,
43019 source: DefinedElement, target:DefinedElement)
43020{
43021 find interpretation(problem,interpretation);
43022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
43024 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43025 BinaryElementRelationLink.param1(link,source);
43026 BinaryElementRelationLink.param2(link,target);
43027}
43028/**
43029 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
43030 */
43031private pattern mayInRelationeType_reference_ETypedElement(
43032 problem:LogicProblem, interpretation:PartialInterpretation,
43033 source: DefinedElement, target:DefinedElement)
43034{
43035 find interpretation(problem,interpretation);
43036 // The two endpoint of the link have to exist
43037 find mayExist(problem, interpretation, source);
43038 find mayExist(problem, interpretation, target);
43039 // Type consistency
43040 find mayInstanceOfETypedElement_class(problem,interpretation,source);
43041 find mayInstanceOfEClassifier_class(problem,interpretation,target);
43042 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43043 // the upper bound of the multiplicity should be considered.
43044 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
43045 check(numberOfExistingReferences < 1);
43046} or {
43047 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
43048}
43049/**
43050 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
43051 */
43052private pattern mustInRelationeGenericType_reference_ETypedElement(
43053 problem:LogicProblem, interpretation:PartialInterpretation,
43054 source: DefinedElement, target:DefinedElement)
43055{
43056 find interpretation(problem,interpretation);
43057 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43058 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
43059 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43060 BinaryElementRelationLink.param1(link,source);
43061 BinaryElementRelationLink.param2(link,target);
43062}
43063/**
43064 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
43065 */
43066private pattern mayInRelationeGenericType_reference_ETypedElement(
43067 problem:LogicProblem, interpretation:PartialInterpretation,
43068 source: DefinedElement, target:DefinedElement)
43069{
43070 find interpretation(problem,interpretation);
43071 // The two endpoint of the link have to exist
43072 find mayExist(problem, interpretation, source);
43073 find mayExist(problem, interpretation, target);
43074 // Type consistency
43075 find mayInstanceOfETypedElement_class(problem,interpretation,source);
43076 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43077 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43078 // the upper bound of the multiplicity should be considered.
43079 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
43080 check(numberOfExistingReferences < 1);
43081 // The reference is containment, then a new reference cannot be create if:
43082 // 1. Multiple parents
43083 neg find mustContains4(problem,interpretation,_,target);
43084 // 2. Circle in the containment hierarchy
43085 neg find mustTransitiveContains(source,target);
43086} or {
43087 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
43088}
43089/**
43090 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
43091 */
43092private pattern mustInRelationeUpperBound_reference_EGenericType(
43093 problem:LogicProblem, interpretation:PartialInterpretation,
43094 source: DefinedElement, target:DefinedElement)
43095{
43096 find interpretation(problem,interpretation);
43097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
43099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43100 BinaryElementRelationLink.param1(link,source);
43101 BinaryElementRelationLink.param2(link,target);
43102}
43103/**
43104 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
43105 */
43106private pattern mayInRelationeUpperBound_reference_EGenericType(
43107 problem:LogicProblem, interpretation:PartialInterpretation,
43108 source: DefinedElement, target:DefinedElement)
43109{
43110 find interpretation(problem,interpretation);
43111 // The two endpoint of the link have to exist
43112 find mayExist(problem, interpretation, source);
43113 find mayExist(problem, interpretation, target);
43114 // Type consistency
43115 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43116 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43117 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43118 // the upper bound of the multiplicity should be considered.
43119 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
43120 check(numberOfExistingReferences < 1);
43121 // The reference is containment, then a new reference cannot be create if:
43122 // 1. Multiple parents
43123 neg find mustContains4(problem,interpretation,_,target);
43124 // 2. Circle in the containment hierarchy
43125 neg find mustTransitiveContains(source,target);
43126} or {
43127 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
43128}
43129/**
43130 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
43131 */
43132private pattern mustInRelationeTypeArguments_reference_EGenericType(
43133 problem:LogicProblem, interpretation:PartialInterpretation,
43134 source: DefinedElement, target:DefinedElement)
43135{
43136 find interpretation(problem,interpretation);
43137 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43138 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
43139 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43140 BinaryElementRelationLink.param1(link,source);
43141 BinaryElementRelationLink.param2(link,target);
43142}
43143/**
43144 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
43145 */
43146private pattern mayInRelationeTypeArguments_reference_EGenericType(
43147 problem:LogicProblem, interpretation:PartialInterpretation,
43148 source: DefinedElement, target:DefinedElement)
43149{
43150 find interpretation(problem,interpretation);
43151 // The two endpoint of the link have to exist
43152 find mayExist(problem, interpretation, source);
43153 find mayExist(problem, interpretation, target);
43154 // Type consistency
43155 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43156 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43157 // The reference is containment, then a new reference cannot be create if:
43158 // 1. Multiple parents
43159 neg find mustContains4(problem,interpretation,_,target);
43160 // 2. Circle in the containment hierarchy
43161 neg find mustTransitiveContains(source,target);
43162} or {
43163 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
43164}
43165/**
43166 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
43167 */
43168private pattern mustInRelationeRawType_reference_EGenericType(
43169 problem:LogicProblem, interpretation:PartialInterpretation,
43170 source: DefinedElement, target:DefinedElement)
43171{
43172 find interpretation(problem,interpretation);
43173 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43174 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
43175 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43176 BinaryElementRelationLink.param1(link,source);
43177 BinaryElementRelationLink.param2(link,target);
43178}
43179/**
43180 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
43181 */
43182private pattern mayInRelationeRawType_reference_EGenericType(
43183 problem:LogicProblem, interpretation:PartialInterpretation,
43184 source: DefinedElement, target:DefinedElement)
43185{
43186 find interpretation(problem,interpretation);
43187 // The two endpoint of the link have to exist
43188 find mayExist(problem, interpretation, source);
43189 find mayExist(problem, interpretation, target);
43190 // Type consistency
43191 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43192 find mayInstanceOfEClassifier_class(problem,interpretation,target);
43193 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43194 // the upper bound of the multiplicity should be considered.
43195 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
43196 check(numberOfExistingReferences < 1);
43197} or {
43198 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
43199}
43200/**
43201 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
43202 */
43203private pattern mustInRelationeLowerBound_reference_EGenericType(
43204 problem:LogicProblem, interpretation:PartialInterpretation,
43205 source: DefinedElement, target:DefinedElement)
43206{
43207 find interpretation(problem,interpretation);
43208 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43209 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
43210 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43211 BinaryElementRelationLink.param1(link,source);
43212 BinaryElementRelationLink.param2(link,target);
43213}
43214/**
43215 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
43216 */
43217private pattern mayInRelationeLowerBound_reference_EGenericType(
43218 problem:LogicProblem, interpretation:PartialInterpretation,
43219 source: DefinedElement, target:DefinedElement)
43220{
43221 find interpretation(problem,interpretation);
43222 // The two endpoint of the link have to exist
43223 find mayExist(problem, interpretation, source);
43224 find mayExist(problem, interpretation, target);
43225 // Type consistency
43226 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43227 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43228 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43229 // the upper bound of the multiplicity should be considered.
43230 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
43231 check(numberOfExistingReferences < 1);
43232 // The reference is containment, then a new reference cannot be create if:
43233 // 1. Multiple parents
43234 neg find mustContains4(problem,interpretation,_,target);
43235 // 2. Circle in the containment hierarchy
43236 neg find mustTransitiveContains(source,target);
43237} or {
43238 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
43239}
43240/**
43241 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
43242 */
43243private pattern mustInRelationeTypeParameter_reference_EGenericType(
43244 problem:LogicProblem, interpretation:PartialInterpretation,
43245 source: DefinedElement, target:DefinedElement)
43246{
43247 find interpretation(problem,interpretation);
43248 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43249 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
43250 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43251 BinaryElementRelationLink.param1(link,source);
43252 BinaryElementRelationLink.param2(link,target);
43253}
43254/**
43255 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
43256 */
43257private pattern mayInRelationeTypeParameter_reference_EGenericType(
43258 problem:LogicProblem, interpretation:PartialInterpretation,
43259 source: DefinedElement, target:DefinedElement)
43260{
43261 find interpretation(problem,interpretation);
43262 // The two endpoint of the link have to exist
43263 find mayExist(problem, interpretation, source);
43264 find mayExist(problem, interpretation, target);
43265 // Type consistency
43266 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43267 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
43268 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43269 // the upper bound of the multiplicity should be considered.
43270 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
43271 check(numberOfExistingReferences < 1);
43272} or {
43273 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
43274}
43275/**
43276 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
43277 */
43278private pattern mustInRelationeClassifier_reference_EGenericType(
43279 problem:LogicProblem, interpretation:PartialInterpretation,
43280 source: DefinedElement, target:DefinedElement)
43281{
43282 find interpretation(problem,interpretation);
43283 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43284 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
43285 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43286 BinaryElementRelationLink.param1(link,source);
43287 BinaryElementRelationLink.param2(link,target);
43288}
43289/**
43290 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
43291 */
43292private pattern mayInRelationeClassifier_reference_EGenericType(
43293 problem:LogicProblem, interpretation:PartialInterpretation,
43294 source: DefinedElement, target:DefinedElement)
43295{
43296 find interpretation(problem,interpretation);
43297 // The two endpoint of the link have to exist
43298 find mayExist(problem, interpretation, source);
43299 find mayExist(problem, interpretation, target);
43300 // Type consistency
43301 find mayInstanceOfEGenericType_class(problem,interpretation,source);
43302 find mayInstanceOfEClassifier_class(problem,interpretation,target);
43303 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43304 // the upper bound of the multiplicity should be considered.
43305 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
43306 check(numberOfExistingReferences < 1);
43307} or {
43308 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
43309}
43310/**
43311 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
43312 */
43313private pattern mustInRelationeBounds_reference_ETypeParameter(
43314 problem:LogicProblem, interpretation:PartialInterpretation,
43315 source: DefinedElement, target:DefinedElement)
43316{
43317 find interpretation(problem,interpretation);
43318 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43319 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
43320 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43321 BinaryElementRelationLink.param1(link,source);
43322 BinaryElementRelationLink.param2(link,target);
43323}
43324/**
43325 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
43326 */
43327private pattern mayInRelationeBounds_reference_ETypeParameter(
43328 problem:LogicProblem, interpretation:PartialInterpretation,
43329 source: DefinedElement, target:DefinedElement)
43330{
43331 find interpretation(problem,interpretation);
43332 // The two endpoint of the link have to exist
43333 find mayExist(problem, interpretation, source);
43334 find mayExist(problem, interpretation, target);
43335 // Type consistency
43336 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
43337 find mayInstanceOfEGenericType_class(problem,interpretation,target);
43338 // The reference is containment, then a new reference cannot be create if:
43339 // 1. Multiple parents
43340 neg find mustContains4(problem,interpretation,_,target);
43341 // 2. Circle in the containment hierarchy
43342 neg find mustTransitiveContains(source,target);
43343} or {
43344 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
43345}
43346/**
43347 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
43348 */
43349private pattern mustInRelationiD_attribute_EAttribute(
43350 problem:LogicProblem, interpretation:PartialInterpretation,
43351 source: DefinedElement, target:DefinedElement)
43352{
43353 find interpretation(problem,interpretation);
43354 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43355 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
43356 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43357 BinaryElementRelationLink.param1(link,source);
43358 BinaryElementRelationLink.param2(link,target);
43359}
43360/**
43361 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
43362 */
43363private pattern mayInRelationiD_attribute_EAttribute(
43364 problem:LogicProblem, interpretation:PartialInterpretation,
43365 source: DefinedElement, target:DefinedElement)
43366{
43367 find interpretation(problem,interpretation);
43368 // The two endpoint of the link have to exist
43369 find mayExist(problem, interpretation, source);
43370 find mayExist(problem, interpretation, target);
43371 // Type consistency
43372 find mayInstanceOfEAttribute_class(problem,interpretation,source);
43373 BooleanElement(target);
43374 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43375 // the upper bound of the multiplicity should be considered.
43376 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
43377 check(numberOfExistingReferences < 1);
43378} or {
43379 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
43380}
43381/**
43382 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
43383 */
43384private pattern mustInRelationsource_attribute_EAnnotation(
43385 problem:LogicProblem, interpretation:PartialInterpretation,
43386 source: DefinedElement, target:DefinedElement)
43387{
43388 find interpretation(problem,interpretation);
43389 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43390 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
43391 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43392 BinaryElementRelationLink.param1(link,source);
43393 BinaryElementRelationLink.param2(link,target);
43394}
43395/**
43396 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
43397 */
43398private pattern mayInRelationsource_attribute_EAnnotation(
43399 problem:LogicProblem, interpretation:PartialInterpretation,
43400 source: DefinedElement, target:DefinedElement)
43401{
43402 find interpretation(problem,interpretation);
43403 // The two endpoint of the link have to exist
43404 find mayExist(problem, interpretation, source);
43405 find mayExist(problem, interpretation, target);
43406 // Type consistency
43407 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
43408 StringElement(target);
43409 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43410 // the upper bound of the multiplicity should be considered.
43411 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
43412 check(numberOfExistingReferences < 1);
43413} or {
43414 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
43415}
43416/**
43417 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
43418 */
43419private pattern mustInRelationabstract_attribute_EClass(
43420 problem:LogicProblem, interpretation:PartialInterpretation,
43421 source: DefinedElement, target:DefinedElement)
43422{
43423 find interpretation(problem,interpretation);
43424 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43425 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
43426 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43427 BinaryElementRelationLink.param1(link,source);
43428 BinaryElementRelationLink.param2(link,target);
43429}
43430/**
43431 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
43432 */
43433private pattern mayInRelationabstract_attribute_EClass(
43434 problem:LogicProblem, interpretation:PartialInterpretation,
43435 source: DefinedElement, target:DefinedElement)
43436{
43437 find interpretation(problem,interpretation);
43438 // The two endpoint of the link have to exist
43439 find mayExist(problem, interpretation, source);
43440 find mayExist(problem, interpretation, target);
43441 // Type consistency
43442 find mayInstanceOfEClass_class(problem,interpretation,source);
43443 BooleanElement(target);
43444 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43445 // the upper bound of the multiplicity should be considered.
43446 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
43447 check(numberOfExistingReferences < 1);
43448} or {
43449 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
43450}
43451/**
43452 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
43453 */
43454private pattern mustInRelationinterface_attribute_EClass(
43455 problem:LogicProblem, interpretation:PartialInterpretation,
43456 source: DefinedElement, target:DefinedElement)
43457{
43458 find interpretation(problem,interpretation);
43459 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43460 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
43461 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43462 BinaryElementRelationLink.param1(link,source);
43463 BinaryElementRelationLink.param2(link,target);
43464}
43465/**
43466 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
43467 */
43468private pattern mayInRelationinterface_attribute_EClass(
43469 problem:LogicProblem, interpretation:PartialInterpretation,
43470 source: DefinedElement, target:DefinedElement)
43471{
43472 find interpretation(problem,interpretation);
43473 // The two endpoint of the link have to exist
43474 find mayExist(problem, interpretation, source);
43475 find mayExist(problem, interpretation, target);
43476 // Type consistency
43477 find mayInstanceOfEClass_class(problem,interpretation,source);
43478 BooleanElement(target);
43479 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43480 // the upper bound of the multiplicity should be considered.
43481 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
43482 check(numberOfExistingReferences < 1);
43483} or {
43484 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
43485}
43486/**
43487 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
43488 */
43489private pattern mustInRelationinstanceClassName_attribute_EClassifier(
43490 problem:LogicProblem, interpretation:PartialInterpretation,
43491 source: DefinedElement, target:DefinedElement)
43492{
43493 find interpretation(problem,interpretation);
43494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
43496 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43497 BinaryElementRelationLink.param1(link,source);
43498 BinaryElementRelationLink.param2(link,target);
43499}
43500/**
43501 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
43502 */
43503private pattern mayInRelationinstanceClassName_attribute_EClassifier(
43504 problem:LogicProblem, interpretation:PartialInterpretation,
43505 source: DefinedElement, target:DefinedElement)
43506{
43507 find interpretation(problem,interpretation);
43508 // The two endpoint of the link have to exist
43509 find mayExist(problem, interpretation, source);
43510 find mayExist(problem, interpretation, target);
43511 // Type consistency
43512 find mayInstanceOfEClassifier_class(problem,interpretation,source);
43513 StringElement(target);
43514 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43515 // the upper bound of the multiplicity should be considered.
43516 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
43517 check(numberOfExistingReferences < 1);
43518} or {
43519 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
43520}
43521/**
43522 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
43523 */
43524private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
43525 problem:LogicProblem, interpretation:PartialInterpretation,
43526 source: DefinedElement, target:DefinedElement)
43527{
43528 find interpretation(problem,interpretation);
43529 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43530 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
43531 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43532 BinaryElementRelationLink.param1(link,source);
43533 BinaryElementRelationLink.param2(link,target);
43534}
43535/**
43536 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
43537 */
43538private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
43539 problem:LogicProblem, interpretation:PartialInterpretation,
43540 source: DefinedElement, target:DefinedElement)
43541{
43542 find interpretation(problem,interpretation);
43543 // The two endpoint of the link have to exist
43544 find mayExist(problem, interpretation, source);
43545 find mayExist(problem, interpretation, target);
43546 // Type consistency
43547 find mayInstanceOfEClassifier_class(problem,interpretation,source);
43548 StringElement(target);
43549 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43550 // the upper bound of the multiplicity should be considered.
43551 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
43552 check(numberOfExistingReferences < 1);
43553} or {
43554 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
43555}
43556/**
43557 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
43558 */
43559private pattern mustInRelationserializable_attribute_EDataType(
43560 problem:LogicProblem, interpretation:PartialInterpretation,
43561 source: DefinedElement, target:DefinedElement)
43562{
43563 find interpretation(problem,interpretation);
43564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
43566 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43567 BinaryElementRelationLink.param1(link,source);
43568 BinaryElementRelationLink.param2(link,target);
43569}
43570/**
43571 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
43572 */
43573private pattern mayInRelationserializable_attribute_EDataType(
43574 problem:LogicProblem, interpretation:PartialInterpretation,
43575 source: DefinedElement, target:DefinedElement)
43576{
43577 find interpretation(problem,interpretation);
43578 // The two endpoint of the link have to exist
43579 find mayExist(problem, interpretation, source);
43580 find mayExist(problem, interpretation, target);
43581 // Type consistency
43582 find mayInstanceOfEDataType_class(problem,interpretation,source);
43583 BooleanElement(target);
43584 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43585 // the upper bound of the multiplicity should be considered.
43586 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
43587 check(numberOfExistingReferences < 1);
43588} or {
43589 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
43590}
43591/**
43592 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
43593 */
43594private pattern mustInRelationvalue_attribute_EEnumLiteral(
43595 problem:LogicProblem, interpretation:PartialInterpretation,
43596 source: DefinedElement, target:DefinedElement)
43597{
43598 find interpretation(problem,interpretation);
43599 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43600 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
43601 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43602 BinaryElementRelationLink.param1(link,source);
43603 BinaryElementRelationLink.param2(link,target);
43604}
43605/**
43606 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
43607 */
43608private pattern mayInRelationvalue_attribute_EEnumLiteral(
43609 problem:LogicProblem, interpretation:PartialInterpretation,
43610 source: DefinedElement, target:DefinedElement)
43611{
43612 find interpretation(problem,interpretation);
43613 // The two endpoint of the link have to exist
43614 find mayExist(problem, interpretation, source);
43615 find mayExist(problem, interpretation, target);
43616 // Type consistency
43617 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
43618 IntegerElement(target);
43619 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43620 // the upper bound of the multiplicity should be considered.
43621 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
43622 check(numberOfExistingReferences < 1);
43623} or {
43624 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
43625}
43626/**
43627 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
43628 */
43629private pattern mustInRelationliteral_attribute_EEnumLiteral(
43630 problem:LogicProblem, interpretation:PartialInterpretation,
43631 source: DefinedElement, target:DefinedElement)
43632{
43633 find interpretation(problem,interpretation);
43634 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43635 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
43636 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43637 BinaryElementRelationLink.param1(link,source);
43638 BinaryElementRelationLink.param2(link,target);
43639}
43640/**
43641 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
43642 */
43643private pattern mayInRelationliteral_attribute_EEnumLiteral(
43644 problem:LogicProblem, interpretation:PartialInterpretation,
43645 source: DefinedElement, target:DefinedElement)
43646{
43647 find interpretation(problem,interpretation);
43648 // The two endpoint of the link have to exist
43649 find mayExist(problem, interpretation, source);
43650 find mayExist(problem, interpretation, target);
43651 // Type consistency
43652 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
43653 StringElement(target);
43654 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43655 // the upper bound of the multiplicity should be considered.
43656 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
43657 check(numberOfExistingReferences < 1);
43658} or {
43659 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
43660}
43661/**
43662 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
43663 */
43664private pattern mustInRelationname_attribute_ENamedElement(
43665 problem:LogicProblem, interpretation:PartialInterpretation,
43666 source: DefinedElement, target:DefinedElement)
43667{
43668 find interpretation(problem,interpretation);
43669 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43670 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
43671 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43672 BinaryElementRelationLink.param1(link,source);
43673 BinaryElementRelationLink.param2(link,target);
43674}
43675/**
43676 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
43677 */
43678private pattern mayInRelationname_attribute_ENamedElement(
43679 problem:LogicProblem, interpretation:PartialInterpretation,
43680 source: DefinedElement, target:DefinedElement)
43681{
43682 find interpretation(problem,interpretation);
43683 // The two endpoint of the link have to exist
43684 find mayExist(problem, interpretation, source);
43685 find mayExist(problem, interpretation, target);
43686 // Type consistency
43687 find mayInstanceOfENamedElement_class(problem,interpretation,source);
43688 StringElement(target);
43689 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43690 // the upper bound of the multiplicity should be considered.
43691 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
43692 check(numberOfExistingReferences < 1);
43693} or {
43694 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
43695}
43696/**
43697 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
43698 */
43699private pattern mustInRelationnsURI_attribute_EPackage(
43700 problem:LogicProblem, interpretation:PartialInterpretation,
43701 source: DefinedElement, target:DefinedElement)
43702{
43703 find interpretation(problem,interpretation);
43704 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43705 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
43706 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43707 BinaryElementRelationLink.param1(link,source);
43708 BinaryElementRelationLink.param2(link,target);
43709}
43710/**
43711 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
43712 */
43713private pattern mayInRelationnsURI_attribute_EPackage(
43714 problem:LogicProblem, interpretation:PartialInterpretation,
43715 source: DefinedElement, target:DefinedElement)
43716{
43717 find interpretation(problem,interpretation);
43718 // The two endpoint of the link have to exist
43719 find mayExist(problem, interpretation, source);
43720 find mayExist(problem, interpretation, target);
43721 // Type consistency
43722 find mayInstanceOfEPackage_class(problem,interpretation,source);
43723 StringElement(target);
43724 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43725 // the upper bound of the multiplicity should be considered.
43726 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
43727 check(numberOfExistingReferences < 1);
43728} or {
43729 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
43730}
43731/**
43732 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
43733 */
43734private pattern mustInRelationnsPrefix_attribute_EPackage(
43735 problem:LogicProblem, interpretation:PartialInterpretation,
43736 source: DefinedElement, target:DefinedElement)
43737{
43738 find interpretation(problem,interpretation);
43739 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43740 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
43741 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43742 BinaryElementRelationLink.param1(link,source);
43743 BinaryElementRelationLink.param2(link,target);
43744}
43745/**
43746 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
43747 */
43748private pattern mayInRelationnsPrefix_attribute_EPackage(
43749 problem:LogicProblem, interpretation:PartialInterpretation,
43750 source: DefinedElement, target:DefinedElement)
43751{
43752 find interpretation(problem,interpretation);
43753 // The two endpoint of the link have to exist
43754 find mayExist(problem, interpretation, source);
43755 find mayExist(problem, interpretation, target);
43756 // Type consistency
43757 find mayInstanceOfEPackage_class(problem,interpretation,source);
43758 StringElement(target);
43759 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43760 // the upper bound of the multiplicity should be considered.
43761 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
43762 check(numberOfExistingReferences < 1);
43763} or {
43764 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
43765}
43766/**
43767 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
43768 */
43769private pattern mustInRelationcontainment_attribute_EReference(
43770 problem:LogicProblem, interpretation:PartialInterpretation,
43771 source: DefinedElement, target:DefinedElement)
43772{
43773 find interpretation(problem,interpretation);
43774 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43775 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
43776 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43777 BinaryElementRelationLink.param1(link,source);
43778 BinaryElementRelationLink.param2(link,target);
43779}
43780/**
43781 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
43782 */
43783private pattern mayInRelationcontainment_attribute_EReference(
43784 problem:LogicProblem, interpretation:PartialInterpretation,
43785 source: DefinedElement, target:DefinedElement)
43786{
43787 find interpretation(problem,interpretation);
43788 // The two endpoint of the link have to exist
43789 find mayExist(problem, interpretation, source);
43790 find mayExist(problem, interpretation, target);
43791 // Type consistency
43792 find mayInstanceOfEReference_class(problem,interpretation,source);
43793 BooleanElement(target);
43794 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43795 // the upper bound of the multiplicity should be considered.
43796 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
43797 check(numberOfExistingReferences < 1);
43798} or {
43799 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
43800}
43801/**
43802 * Matcher for detecting tuples t where []container attribute EReference(source,target)
43803 */
43804private pattern mustInRelationcontainer_attribute_EReference(
43805 problem:LogicProblem, interpretation:PartialInterpretation,
43806 source: DefinedElement, target:DefinedElement)
43807{
43808 find interpretation(problem,interpretation);
43809 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43810 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
43811 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43812 BinaryElementRelationLink.param1(link,source);
43813 BinaryElementRelationLink.param2(link,target);
43814}
43815/**
43816 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
43817 */
43818private pattern mayInRelationcontainer_attribute_EReference(
43819 problem:LogicProblem, interpretation:PartialInterpretation,
43820 source: DefinedElement, target:DefinedElement)
43821{
43822 find interpretation(problem,interpretation);
43823 // The two endpoint of the link have to exist
43824 find mayExist(problem, interpretation, source);
43825 find mayExist(problem, interpretation, target);
43826 // Type consistency
43827 find mayInstanceOfEReference_class(problem,interpretation,source);
43828 BooleanElement(target);
43829 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43830 // the upper bound of the multiplicity should be considered.
43831 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
43832 check(numberOfExistingReferences < 1);
43833} or {
43834 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
43835}
43836/**
43837 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
43838 */
43839private pattern mustInRelationresolveProxies_attribute_EReference(
43840 problem:LogicProblem, interpretation:PartialInterpretation,
43841 source: DefinedElement, target:DefinedElement)
43842{
43843 find interpretation(problem,interpretation);
43844 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43845 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
43846 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43847 BinaryElementRelationLink.param1(link,source);
43848 BinaryElementRelationLink.param2(link,target);
43849}
43850/**
43851 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
43852 */
43853private pattern mayInRelationresolveProxies_attribute_EReference(
43854 problem:LogicProblem, interpretation:PartialInterpretation,
43855 source: DefinedElement, target:DefinedElement)
43856{
43857 find interpretation(problem,interpretation);
43858 // The two endpoint of the link have to exist
43859 find mayExist(problem, interpretation, source);
43860 find mayExist(problem, interpretation, target);
43861 // Type consistency
43862 find mayInstanceOfEReference_class(problem,interpretation,source);
43863 BooleanElement(target);
43864 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43865 // the upper bound of the multiplicity should be considered.
43866 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
43867 check(numberOfExistingReferences < 1);
43868} or {
43869 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
43870}
43871/**
43872 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
43873 */
43874private pattern mustInRelationchangeable_attribute_EStructuralFeature(
43875 problem:LogicProblem, interpretation:PartialInterpretation,
43876 source: DefinedElement, target:DefinedElement)
43877{
43878 find interpretation(problem,interpretation);
43879 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43880 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
43881 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43882 BinaryElementRelationLink.param1(link,source);
43883 BinaryElementRelationLink.param2(link,target);
43884}
43885/**
43886 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
43887 */
43888private pattern mayInRelationchangeable_attribute_EStructuralFeature(
43889 problem:LogicProblem, interpretation:PartialInterpretation,
43890 source: DefinedElement, target:DefinedElement)
43891{
43892 find interpretation(problem,interpretation);
43893 // The two endpoint of the link have to exist
43894 find mayExist(problem, interpretation, source);
43895 find mayExist(problem, interpretation, target);
43896 // Type consistency
43897 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43898 BooleanElement(target);
43899 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43900 // the upper bound of the multiplicity should be considered.
43901 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
43902 check(numberOfExistingReferences < 1);
43903} or {
43904 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
43905}
43906/**
43907 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
43908 */
43909private pattern mustInRelationvolatile_attribute_EStructuralFeature(
43910 problem:LogicProblem, interpretation:PartialInterpretation,
43911 source: DefinedElement, target:DefinedElement)
43912{
43913 find interpretation(problem,interpretation);
43914 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43915 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
43916 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43917 BinaryElementRelationLink.param1(link,source);
43918 BinaryElementRelationLink.param2(link,target);
43919}
43920/**
43921 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
43922 */
43923private pattern mayInRelationvolatile_attribute_EStructuralFeature(
43924 problem:LogicProblem, interpretation:PartialInterpretation,
43925 source: DefinedElement, target:DefinedElement)
43926{
43927 find interpretation(problem,interpretation);
43928 // The two endpoint of the link have to exist
43929 find mayExist(problem, interpretation, source);
43930 find mayExist(problem, interpretation, target);
43931 // Type consistency
43932 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43933 BooleanElement(target);
43934 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43935 // the upper bound of the multiplicity should be considered.
43936 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
43937 check(numberOfExistingReferences < 1);
43938} or {
43939 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
43940}
43941/**
43942 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
43943 */
43944private pattern mustInRelationtransient_attribute_EStructuralFeature(
43945 problem:LogicProblem, interpretation:PartialInterpretation,
43946 source: DefinedElement, target:DefinedElement)
43947{
43948 find interpretation(problem,interpretation);
43949 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43950 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
43951 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43952 BinaryElementRelationLink.param1(link,source);
43953 BinaryElementRelationLink.param2(link,target);
43954}
43955/**
43956 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
43957 */
43958private pattern mayInRelationtransient_attribute_EStructuralFeature(
43959 problem:LogicProblem, interpretation:PartialInterpretation,
43960 source: DefinedElement, target:DefinedElement)
43961{
43962 find interpretation(problem,interpretation);
43963 // The two endpoint of the link have to exist
43964 find mayExist(problem, interpretation, source);
43965 find mayExist(problem, interpretation, target);
43966 // Type consistency
43967 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
43968 BooleanElement(target);
43969 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
43970 // the upper bound of the multiplicity should be considered.
43971 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
43972 check(numberOfExistingReferences < 1);
43973} or {
43974 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
43975}
43976/**
43977 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
43978 */
43979private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
43980 problem:LogicProblem, interpretation:PartialInterpretation,
43981 source: DefinedElement, target:DefinedElement)
43982{
43983 find interpretation(problem,interpretation);
43984 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
43985 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
43986 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
43987 BinaryElementRelationLink.param1(link,source);
43988 BinaryElementRelationLink.param2(link,target);
43989}
43990/**
43991 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
43992 */
43993private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
43994 problem:LogicProblem, interpretation:PartialInterpretation,
43995 source: DefinedElement, target:DefinedElement)
43996{
43997 find interpretation(problem,interpretation);
43998 // The two endpoint of the link have to exist
43999 find mayExist(problem, interpretation, source);
44000 find mayExist(problem, interpretation, target);
44001 // Type consistency
44002 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
44003 StringElement(target);
44004 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44005 // the upper bound of the multiplicity should be considered.
44006 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
44007 check(numberOfExistingReferences < 1);
44008} or {
44009 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
44010}
44011/**
44012 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
44013 */
44014private pattern mustInRelationunsettable_attribute_EStructuralFeature(
44015 problem:LogicProblem, interpretation:PartialInterpretation,
44016 source: DefinedElement, target:DefinedElement)
44017{
44018 find interpretation(problem,interpretation);
44019 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44020 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
44021 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44022 BinaryElementRelationLink.param1(link,source);
44023 BinaryElementRelationLink.param2(link,target);
44024}
44025/**
44026 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
44027 */
44028private pattern mayInRelationunsettable_attribute_EStructuralFeature(
44029 problem:LogicProblem, interpretation:PartialInterpretation,
44030 source: DefinedElement, target:DefinedElement)
44031{
44032 find interpretation(problem,interpretation);
44033 // The two endpoint of the link have to exist
44034 find mayExist(problem, interpretation, source);
44035 find mayExist(problem, interpretation, target);
44036 // Type consistency
44037 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
44038 BooleanElement(target);
44039 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44040 // the upper bound of the multiplicity should be considered.
44041 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
44042 check(numberOfExistingReferences < 1);
44043} or {
44044 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
44045}
44046/**
44047 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
44048 */
44049private pattern mustInRelationderived_attribute_EStructuralFeature(
44050 problem:LogicProblem, interpretation:PartialInterpretation,
44051 source: DefinedElement, target:DefinedElement)
44052{
44053 find interpretation(problem,interpretation);
44054 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44055 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
44056 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44057 BinaryElementRelationLink.param1(link,source);
44058 BinaryElementRelationLink.param2(link,target);
44059}
44060/**
44061 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
44062 */
44063private pattern mayInRelationderived_attribute_EStructuralFeature(
44064 problem:LogicProblem, interpretation:PartialInterpretation,
44065 source: DefinedElement, target:DefinedElement)
44066{
44067 find interpretation(problem,interpretation);
44068 // The two endpoint of the link have to exist
44069 find mayExist(problem, interpretation, source);
44070 find mayExist(problem, interpretation, target);
44071 // Type consistency
44072 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
44073 BooleanElement(target);
44074 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44075 // the upper bound of the multiplicity should be considered.
44076 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
44077 check(numberOfExistingReferences < 1);
44078} or {
44079 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
44080}
44081/**
44082 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
44083 */
44084private pattern mustInRelationordered_attribute_ETypedElement(
44085 problem:LogicProblem, interpretation:PartialInterpretation,
44086 source: DefinedElement, target:DefinedElement)
44087{
44088 find interpretation(problem,interpretation);
44089 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44090 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
44091 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44092 BinaryElementRelationLink.param1(link,source);
44093 BinaryElementRelationLink.param2(link,target);
44094}
44095/**
44096 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
44097 */
44098private pattern mayInRelationordered_attribute_ETypedElement(
44099 problem:LogicProblem, interpretation:PartialInterpretation,
44100 source: DefinedElement, target:DefinedElement)
44101{
44102 find interpretation(problem,interpretation);
44103 // The two endpoint of the link have to exist
44104 find mayExist(problem, interpretation, source);
44105 find mayExist(problem, interpretation, target);
44106 // Type consistency
44107 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44108 BooleanElement(target);
44109 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44110 // the upper bound of the multiplicity should be considered.
44111 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
44112 check(numberOfExistingReferences < 1);
44113} or {
44114 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
44115}
44116/**
44117 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
44118 */
44119private pattern mustInRelationunique_attribute_ETypedElement(
44120 problem:LogicProblem, interpretation:PartialInterpretation,
44121 source: DefinedElement, target:DefinedElement)
44122{
44123 find interpretation(problem,interpretation);
44124 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44125 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
44126 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44127 BinaryElementRelationLink.param1(link,source);
44128 BinaryElementRelationLink.param2(link,target);
44129}
44130/**
44131 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
44132 */
44133private pattern mayInRelationunique_attribute_ETypedElement(
44134 problem:LogicProblem, interpretation:PartialInterpretation,
44135 source: DefinedElement, target:DefinedElement)
44136{
44137 find interpretation(problem,interpretation);
44138 // The two endpoint of the link have to exist
44139 find mayExist(problem, interpretation, source);
44140 find mayExist(problem, interpretation, target);
44141 // Type consistency
44142 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44143 BooleanElement(target);
44144 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44145 // the upper bound of the multiplicity should be considered.
44146 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
44147 check(numberOfExistingReferences < 1);
44148} or {
44149 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
44150}
44151/**
44152 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
44153 */
44154private pattern mustInRelationlowerBound_attribute_ETypedElement(
44155 problem:LogicProblem, interpretation:PartialInterpretation,
44156 source: DefinedElement, target:DefinedElement)
44157{
44158 find interpretation(problem,interpretation);
44159 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44160 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
44161 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44162 BinaryElementRelationLink.param1(link,source);
44163 BinaryElementRelationLink.param2(link,target);
44164}
44165/**
44166 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
44167 */
44168private pattern mayInRelationlowerBound_attribute_ETypedElement(
44169 problem:LogicProblem, interpretation:PartialInterpretation,
44170 source: DefinedElement, target:DefinedElement)
44171{
44172 find interpretation(problem,interpretation);
44173 // The two endpoint of the link have to exist
44174 find mayExist(problem, interpretation, source);
44175 find mayExist(problem, interpretation, target);
44176 // Type consistency
44177 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44178 IntegerElement(target);
44179 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44180 // the upper bound of the multiplicity should be considered.
44181 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
44182 check(numberOfExistingReferences < 1);
44183} or {
44184 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
44185}
44186/**
44187 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
44188 */
44189private pattern mustInRelationupperBound_attribute_ETypedElement(
44190 problem:LogicProblem, interpretation:PartialInterpretation,
44191 source: DefinedElement, target:DefinedElement)
44192{
44193 find interpretation(problem,interpretation);
44194 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44195 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
44196 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44197 BinaryElementRelationLink.param1(link,source);
44198 BinaryElementRelationLink.param2(link,target);
44199}
44200/**
44201 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
44202 */
44203private pattern mayInRelationupperBound_attribute_ETypedElement(
44204 problem:LogicProblem, interpretation:PartialInterpretation,
44205 source: DefinedElement, target:DefinedElement)
44206{
44207 find interpretation(problem,interpretation);
44208 // The two endpoint of the link have to exist
44209 find mayExist(problem, interpretation, source);
44210 find mayExist(problem, interpretation, target);
44211 // Type consistency
44212 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44213 IntegerElement(target);
44214 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44215 // the upper bound of the multiplicity should be considered.
44216 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
44217 check(numberOfExistingReferences < 1);
44218} or {
44219 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
44220}
44221/**
44222 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
44223 */
44224private pattern mustInRelationmany_attribute_ETypedElement(
44225 problem:LogicProblem, interpretation:PartialInterpretation,
44226 source: DefinedElement, target:DefinedElement)
44227{
44228 find interpretation(problem,interpretation);
44229 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44230 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
44231 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44232 BinaryElementRelationLink.param1(link,source);
44233 BinaryElementRelationLink.param2(link,target);
44234}
44235/**
44236 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
44237 */
44238private pattern mayInRelationmany_attribute_ETypedElement(
44239 problem:LogicProblem, interpretation:PartialInterpretation,
44240 source: DefinedElement, target:DefinedElement)
44241{
44242 find interpretation(problem,interpretation);
44243 // The two endpoint of the link have to exist
44244 find mayExist(problem, interpretation, source);
44245 find mayExist(problem, interpretation, target);
44246 // Type consistency
44247 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44248 BooleanElement(target);
44249 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44250 // the upper bound of the multiplicity should be considered.
44251 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
44252 check(numberOfExistingReferences < 1);
44253} or {
44254 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
44255}
44256/**
44257 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
44258 */
44259private pattern mustInRelationrequired_attribute_ETypedElement(
44260 problem:LogicProblem, interpretation:PartialInterpretation,
44261 source: DefinedElement, target:DefinedElement)
44262{
44263 find interpretation(problem,interpretation);
44264 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44265 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
44266 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44267 BinaryElementRelationLink.param1(link,source);
44268 BinaryElementRelationLink.param2(link,target);
44269}
44270/**
44271 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
44272 */
44273private pattern mayInRelationrequired_attribute_ETypedElement(
44274 problem:LogicProblem, interpretation:PartialInterpretation,
44275 source: DefinedElement, target:DefinedElement)
44276{
44277 find interpretation(problem,interpretation);
44278 // The two endpoint of the link have to exist
44279 find mayExist(problem, interpretation, source);
44280 find mayExist(problem, interpretation, target);
44281 // Type consistency
44282 find mayInstanceOfETypedElement_class(problem,interpretation,source);
44283 BooleanElement(target);
44284 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44285 // the upper bound of the multiplicity should be considered.
44286 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
44287 check(numberOfExistingReferences < 1);
44288} or {
44289 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
44290}
44291/**
44292 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
44293 */
44294private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
44295 problem:LogicProblem, interpretation:PartialInterpretation,
44296 source: DefinedElement, target:DefinedElement)
44297{
44298 find interpretation(problem,interpretation);
44299 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44300 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
44301 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44302 BinaryElementRelationLink.param1(link,source);
44303 BinaryElementRelationLink.param2(link,target);
44304}
44305/**
44306 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
44307 */
44308private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
44309 problem:LogicProblem, interpretation:PartialInterpretation,
44310 source: DefinedElement, target:DefinedElement)
44311{
44312 find interpretation(problem,interpretation);
44313 // The two endpoint of the link have to exist
44314 find mayExist(problem, interpretation, source);
44315 find mayExist(problem, interpretation, target);
44316 // Type consistency
44317 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
44318 StringElement(target);
44319 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44320 // the upper bound of the multiplicity should be considered.
44321 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
44322 check(numberOfExistingReferences < 1);
44323} or {
44324 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
44325}
44326/**
44327 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
44328 */
44329private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
44330 problem:LogicProblem, interpretation:PartialInterpretation,
44331 source: DefinedElement, target:DefinedElement)
44332{
44333 find interpretation(problem,interpretation);
44334 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44335 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
44336 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
44337 BinaryElementRelationLink.param1(link,source);
44338 BinaryElementRelationLink.param2(link,target);
44339}
44340/**
44341 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
44342 */
44343private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
44344 problem:LogicProblem, interpretation:PartialInterpretation,
44345 source: DefinedElement, target:DefinedElement)
44346{
44347 find interpretation(problem,interpretation);
44348 // The two endpoint of the link have to exist
44349 find mayExist(problem, interpretation, source);
44350 find mayExist(problem, interpretation, target);
44351 // Type consistency
44352 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
44353 StringElement(target);
44354 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
44355 // the upper bound of the multiplicity should be considered.
44356 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
44357 check(numberOfExistingReferences < 1);
44358} or {
44359 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
44360}
44361
44362//////////
44363// 1.3 Relation Definition Indexers
44364//////////
44365
44366//////////
44367// 1.4 Containment Indexer
44368//////////
44369private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
44370 find mustContains4(_,_,source,target);
44371}
44372
44373private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
44374 source: DefinedElement, target: DefinedElement)
44375 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
44376
44377 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
44378
44379 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
44380
44381 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
44382
44383 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
44384
44385 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
44386
44387 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
44388
44389 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
44390
44391 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
44392
44393 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
44394
44395 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
44396
44397 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
44398
44399 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
44400
44401 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
44402
44403 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
44404
44405 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
44406
44407 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
44408
44409 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
44410
44411private pattern mustTransitiveContains(source,target) {
44412 find mustContains2+(source,target);
44413}
44414
44415//////////
44416// 2. Invalidation Indexers
44417//////////
44418// 2.1 Invalidated by WF Queries
44419//////////
44420
44421//////////
44422// 3. Unfinishedness Indexers
44423//////////
44424// 3.1 Unfinishedness Measured by Multiplicity
44425//////////
44426pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
44427 find interpretation(problem,interpretation);
44428 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44429 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
44430 find mustInstanceOfEAttribute_class(problem,interpretation,object);
44431 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
44432 check(numberOfExistingReferences < 1);
44433 missingMultiplicity == eval(1-numberOfExistingReferences);
44434}
44435pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
44436 find interpretation(problem,interpretation);
44437 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44438 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
44439 find mustInstanceOfEReference_class(problem,interpretation,object);
44440 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
44441 check(numberOfExistingReferences < 1);
44442 missingMultiplicity == eval(1-numberOfExistingReferences);
44443}
44444pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
44445 find interpretation(problem,interpretation);
44446 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
44447 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
44448 find mustInstanceOfEGenericType_class(problem,interpretation,object);
44449 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
44450 check(numberOfExistingReferences < 1);
44451 missingMultiplicity == eval(1-numberOfExistingReferences);
44452}
44453
44454//////////
44455// 3.2 Unfinishedness Measured by WF Queries
44456//////////
44457
44458//////////
44459// 4. Refinement Indexers
44460//////////
44461// 4.1 Object constructors
44462//////////
44463private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
44464{
44465 find interpretation(problem,interpretation);
44466 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
44467 find mustExist(problem, interpretation, root);
44468}or{
44469 find interpretation(problem,interpretation);
44470 find mustInstanceOfETypedElement_class(problem,interpretation,root);
44471 find mustExist(problem, interpretation, root);
44472}or{
44473 find interpretation(problem,interpretation);
44474 find mustInstanceOfEClass_class(problem,interpretation,root);
44475 find mustExist(problem, interpretation, root);
44476}or{
44477 find interpretation(problem,interpretation);
44478 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
44479 find mustExist(problem, interpretation, root);
44480}or{
44481 find interpretation(problem,interpretation);
44482 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
44483 find mustExist(problem, interpretation, root);
44484}or{
44485 find interpretation(problem,interpretation);
44486 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
44487 find mustExist(problem, interpretation, root);
44488}or{
44489 find interpretation(problem,interpretation);
44490 find mustInstanceOfEAttribute_class(problem,interpretation,root);
44491 find mustExist(problem, interpretation, root);
44492}or{
44493 find interpretation(problem,interpretation);
44494 find mustInstanceOfEObject_class(problem,interpretation,root);
44495 find mustExist(problem, interpretation, root);
44496}or{
44497 find interpretation(problem,interpretation);
44498 find mustInstanceOfEClassifier_class(problem,interpretation,root);
44499 find mustExist(problem, interpretation, root);
44500}or{
44501 find interpretation(problem,interpretation);
44502 find mustInstanceOfEGenericType_class(problem,interpretation,root);
44503 find mustExist(problem, interpretation, root);
44504}or{
44505 find interpretation(problem,interpretation);
44506 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
44507 find mustExist(problem, interpretation, root);
44508}or{
44509 find interpretation(problem,interpretation);
44510 find mustInstanceOfEDataType_class(problem,interpretation,root);
44511 find mustExist(problem, interpretation, root);
44512}or{
44513 find interpretation(problem,interpretation);
44514 find mustInstanceOfEOperation_class(problem,interpretation,root);
44515 find mustExist(problem, interpretation, root);
44516}or{
44517 find interpretation(problem,interpretation);
44518 find mustInstanceOfEPackage_class(problem,interpretation,root);
44519 find mustExist(problem, interpretation, root);
44520}or{
44521 find interpretation(problem,interpretation);
44522 find mustInstanceOfEParameter_class(problem,interpretation,root);
44523 find mustExist(problem, interpretation, root);
44524}or{
44525 find interpretation(problem,interpretation);
44526 find mustInstanceOfEModelElement_class(problem,interpretation,root);
44527 find mustExist(problem, interpretation, root);
44528}or{
44529 find interpretation(problem,interpretation);
44530 find mustInstanceOfEReference_class(problem,interpretation,root);
44531 find mustExist(problem, interpretation, root);
44532}or{
44533 find interpretation(problem,interpretation);
44534 find mustInstanceOfEEnum_class(problem,interpretation,root);
44535 find mustExist(problem, interpretation, root);
44536}or{
44537 find interpretation(problem,interpretation);
44538 find mustInstanceOfENamedElement_class(problem,interpretation,root);
44539 find mustExist(problem, interpretation, root);
44540}or{
44541 find interpretation(problem,interpretation);
44542 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
44543 find mustExist(problem, interpretation, root);
44544}or{
44545 find interpretation(problem,interpretation);
44546 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
44547 find mustExist(problem, interpretation, root);
44548}or{
44549 find interpretation(problem,interpretation);
44550 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
44551 find mustExist(problem, interpretation, root);
44552}or{
44553 find interpretation(problem,interpretation);
44554 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
44555 find mustExist(problem, interpretation, root);
44556}or{
44557 find interpretation(problem,interpretation);
44558 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
44559 find mustExist(problem, interpretation, root);
44560}or{
44561 find interpretation(problem,interpretation);
44562 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
44563 find mustExist(problem, interpretation, root);
44564}
44565pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
44566 problem:LogicProblem, interpretation:PartialInterpretation,
44567 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44568 container:DefinedElement)
44569{
44570 find interpretation(problem,interpretation);
44571 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44572 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
44573 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44574 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
44575 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44576 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
44577 find mustInstanceOfEPackage_class(problem,interpretation,container);
44578 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
44579 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
44580 find mustExist(problem, interpretation, container);
44581 neg find mustExist(problem, interpretation, newObject);
44582}
44583pattern createObject_EEnum_class(
44584 problem:LogicProblem, interpretation:PartialInterpretation,
44585 typeInterpretation:PartialComplexTypeInterpretation)
44586{
44587 find interpretation(problem,interpretation);
44588 neg find hasElementInContainment(problem,interpretation);
44589 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44590 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
44591 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
44592 find mayExist(problem, interpretation, newObject);
44593 neg find mustExist(problem, interpretation, newObject);
44594}
44595pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
44596 problem:LogicProblem, interpretation:PartialInterpretation,
44597 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44598 container:DefinedElement)
44599{
44600 find interpretation(problem,interpretation);
44601 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44602 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
44603 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44604 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
44605 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44606 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
44607 find mustInstanceOfEClass_class(problem,interpretation,container);
44608 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
44609 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
44610 find mustExist(problem, interpretation, container);
44611 neg find mustExist(problem, interpretation, newObject);
44612}
44613pattern createObject_EAttribute_class(
44614 problem:LogicProblem, interpretation:PartialInterpretation,
44615 typeInterpretation:PartialComplexTypeInterpretation)
44616{
44617 find interpretation(problem,interpretation);
44618 neg find hasElementInContainment(problem,interpretation);
44619 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44620 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
44621 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
44622 find mayExist(problem, interpretation, newObject);
44623 neg find mustExist(problem, interpretation, newObject);
44624}
44625pattern createObject_EObject_class_by_contents_reference_EAnnotation(
44626 problem:LogicProblem, interpretation:PartialInterpretation,
44627 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44628 container:DefinedElement)
44629{
44630 find interpretation(problem,interpretation);
44631 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44632 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
44633 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44634 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
44635 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
44636 find mayInstanceOfEObject_class(problem,interpretation,newObject);
44637 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
44638 find mustExist(problem, interpretation, container);
44639 neg find mustExist(problem, interpretation, newObject);
44640}
44641pattern createObject_EObject_class(
44642 problem:LogicProblem, interpretation:PartialInterpretation,
44643 typeInterpretation:PartialComplexTypeInterpretation)
44644{
44645 find interpretation(problem,interpretation);
44646 neg find hasElementInContainment(problem,interpretation);
44647 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44648 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
44649 find mayInstanceOfEObject_class(problem,interpretation,newObject);
44650 find mayExist(problem, interpretation, newObject);
44651 neg find mustExist(problem, interpretation, newObject);
44652}
44653pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
44654 problem:LogicProblem, interpretation:PartialInterpretation,
44655 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44656 container:DefinedElement)
44657{
44658 find interpretation(problem,interpretation);
44659 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44660 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
44661 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44662 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
44663 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44664 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
44665 find mustInstanceOfEClass_class(problem,interpretation,container);
44666 find mayInstanceOfEReference_class(problem,interpretation,newObject);
44667 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
44668 find mustExist(problem, interpretation, container);
44669 neg find mustExist(problem, interpretation, newObject);
44670}
44671pattern createObject_EReference_class(
44672 problem:LogicProblem, interpretation:PartialInterpretation,
44673 typeInterpretation:PartialComplexTypeInterpretation)
44674{
44675 find interpretation(problem,interpretation);
44676 neg find hasElementInContainment(problem,interpretation);
44677 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44678 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
44679 find mayInstanceOfEReference_class(problem,interpretation,newObject);
44680 find mayExist(problem, interpretation, newObject);
44681 neg find mustExist(problem, interpretation, newObject);
44682}
44683pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
44684 problem:LogicProblem, interpretation:PartialInterpretation,
44685 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44686 container:DefinedElement)
44687{
44688 find interpretation(problem,interpretation);
44689 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44690 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
44691 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44692 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
44693 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44694 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
44695 find mustInstanceOfEPackage_class(problem,interpretation,container);
44696 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
44697 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
44698 find mustExist(problem, interpretation, container);
44699 neg find mustExist(problem, interpretation, newObject);
44700}
44701pattern createObject_EPackage_class_UndefinedPart(
44702 problem:LogicProblem, interpretation:PartialInterpretation,
44703 typeInterpretation:PartialComplexTypeInterpretation)
44704{
44705 find interpretation(problem,interpretation);
44706 neg find hasElementInContainment(problem,interpretation);
44707 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44708 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
44709 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
44710 find mayExist(problem, interpretation, newObject);
44711 neg find mustExist(problem, interpretation, newObject);
44712}
44713pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
44714 problem:LogicProblem, interpretation:PartialInterpretation,
44715 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44716 container:DefinedElement)
44717{
44718 find interpretation(problem,interpretation);
44719 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44720 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
44721 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44722 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
44723 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44724 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
44725 find mustInstanceOfEModelElement_class(problem,interpretation,container);
44726 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
44727 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
44728 find mustExist(problem, interpretation, container);
44729 neg find mustExist(problem, interpretation, newObject);
44730}
44731pattern createObject_EAnnotation_class(
44732 problem:LogicProblem, interpretation:PartialInterpretation,
44733 typeInterpretation:PartialComplexTypeInterpretation)
44734{
44735 find interpretation(problem,interpretation);
44736 neg find hasElementInContainment(problem,interpretation);
44737 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44738 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
44739 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
44740 find mayExist(problem, interpretation, newObject);
44741 neg find mustExist(problem, interpretation, newObject);
44742}
44743pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
44744 problem:LogicProblem, interpretation:PartialInterpretation,
44745 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44746 container:DefinedElement)
44747{
44748 find interpretation(problem,interpretation);
44749 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44750 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
44751 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44752 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
44753 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44754 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
44755 find mustInstanceOfEOperation_class(problem,interpretation,container);
44756 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
44757 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
44758 find mustExist(problem, interpretation, container);
44759 neg find mustExist(problem, interpretation, newObject);
44760}
44761pattern createObject_EParameter_class(
44762 problem:LogicProblem, interpretation:PartialInterpretation,
44763 typeInterpretation:PartialComplexTypeInterpretation)
44764{
44765 find interpretation(problem,interpretation);
44766 neg find hasElementInContainment(problem,interpretation);
44767 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44768 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
44769 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
44770 find mayExist(problem, interpretation, newObject);
44771 neg find mustExist(problem, interpretation, newObject);
44772}
44773pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
44774 problem:LogicProblem, interpretation:PartialInterpretation,
44775 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44776 container:DefinedElement)
44777{
44778 find interpretation(problem,interpretation);
44779 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44780 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
44781 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44782 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
44783 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44784 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
44785 find mustInstanceOfEPackage_class(problem,interpretation,container);
44786 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
44787 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
44788 find mustExist(problem, interpretation, container);
44789 neg find mustExist(problem, interpretation, newObject);
44790}
44791pattern createObject_EDataType_class(
44792 problem:LogicProblem, interpretation:PartialInterpretation,
44793 typeInterpretation:PartialComplexTypeInterpretation)
44794{
44795 find interpretation(problem,interpretation);
44796 neg find hasElementInContainment(problem,interpretation);
44797 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44798 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
44799 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
44800 find mayExist(problem, interpretation, newObject);
44801 neg find mustExist(problem, interpretation, newObject);
44802}
44803pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
44804 problem:LogicProblem, interpretation:PartialInterpretation,
44805 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44806 container:DefinedElement)
44807{
44808 find interpretation(problem,interpretation);
44809 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44810 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
44811 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44812 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
44813 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44814 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
44815 find mustInstanceOfEClass_class(problem,interpretation,container);
44816 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
44817 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
44818 find mustExist(problem, interpretation, container);
44819 neg find mustExist(problem, interpretation, newObject);
44820}
44821pattern createObject_EOperation_class(
44822 problem:LogicProblem, interpretation:PartialInterpretation,
44823 typeInterpretation:PartialComplexTypeInterpretation)
44824{
44825 find interpretation(problem,interpretation);
44826 neg find hasElementInContainment(problem,interpretation);
44827 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44828 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
44829 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
44830 find mayExist(problem, interpretation, newObject);
44831 neg find mustExist(problem, interpretation, newObject);
44832}
44833pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
44834 problem:LogicProblem, interpretation:PartialInterpretation,
44835 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44836 container:DefinedElement)
44837{
44838 find interpretation(problem,interpretation);
44839 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44840 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
44841 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44842 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
44843 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
44844 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
44845 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
44846 find mustExist(problem, interpretation, container);
44847 neg find mustExist(problem, interpretation, newObject);
44848}
44849pattern createObject_EStringToStringMapEntry_class(
44850 problem:LogicProblem, interpretation:PartialInterpretation,
44851 typeInterpretation:PartialComplexTypeInterpretation)
44852{
44853 find interpretation(problem,interpretation);
44854 neg find hasElementInContainment(problem,interpretation);
44855 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44856 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
44857 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
44858 find mayExist(problem, interpretation, newObject);
44859 neg find mustExist(problem, interpretation, newObject);
44860}
44861pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
44862 problem:LogicProblem, interpretation:PartialInterpretation,
44863 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44864 container:DefinedElement)
44865{
44866 find interpretation(problem,interpretation);
44867 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44868 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
44869 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44870 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
44871 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44872 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
44873 find mustInstanceOfEEnum_class(problem,interpretation,container);
44874 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
44875 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
44876 find mustExist(problem, interpretation, container);
44877 neg find mustExist(problem, interpretation, newObject);
44878}
44879pattern createObject_EEnumLiteral_class(
44880 problem:LogicProblem, interpretation:PartialInterpretation,
44881 typeInterpretation:PartialComplexTypeInterpretation)
44882{
44883 find interpretation(problem,interpretation);
44884 neg find hasElementInContainment(problem,interpretation);
44885 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44886 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
44887 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
44888 find mayExist(problem, interpretation, newObject);
44889 neg find mustExist(problem, interpretation, newObject);
44890}
44891pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
44892 problem:LogicProblem, interpretation:PartialInterpretation,
44893 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44894 container:DefinedElement)
44895{
44896 find interpretation(problem,interpretation);
44897 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44898 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
44899 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44900 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
44901 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
44902 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
44903 find mustInstanceOfEPackage_class(problem,interpretation,container);
44904 find mayInstanceOfEClass_class(problem,interpretation,newObject);
44905 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
44906 find mustExist(problem, interpretation, container);
44907 neg find mustExist(problem, interpretation, newObject);
44908}
44909pattern createObject_EClass_class(
44910 problem:LogicProblem, interpretation:PartialInterpretation,
44911 typeInterpretation:PartialComplexTypeInterpretation)
44912{
44913 find interpretation(problem,interpretation);
44914 neg find hasElementInContainment(problem,interpretation);
44915 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44916 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
44917 find mayInstanceOfEClass_class(problem,interpretation,newObject);
44918 find mayExist(problem, interpretation, newObject);
44919 neg find mustExist(problem, interpretation, newObject);
44920}
44921pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
44922 problem:LogicProblem, interpretation:PartialInterpretation,
44923 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44924 container:DefinedElement)
44925{
44926 find interpretation(problem,interpretation);
44927 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44928 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
44929 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44930 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
44931 find mustInstanceOfEClassifier_class(problem,interpretation,container);
44932 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
44933 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
44934 find mustExist(problem, interpretation, container);
44935 neg find mustExist(problem, interpretation, newObject);
44936}
44937pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
44938 problem:LogicProblem, interpretation:PartialInterpretation,
44939 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44940 container:DefinedElement)
44941{
44942 find interpretation(problem,interpretation);
44943 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44944 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
44945 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44946 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
44947 find mustInstanceOfEOperation_class(problem,interpretation,container);
44948 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
44949 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
44950 find mustExist(problem, interpretation, container);
44951 neg find mustExist(problem, interpretation, newObject);
44952}
44953pattern createObject_ETypeParameter_class(
44954 problem:LogicProblem, interpretation:PartialInterpretation,
44955 typeInterpretation:PartialComplexTypeInterpretation)
44956{
44957 find interpretation(problem,interpretation);
44958 neg find hasElementInContainment(problem,interpretation);
44959 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44960 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
44961 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
44962 find mayExist(problem, interpretation, newObject);
44963 neg find mustExist(problem, interpretation, newObject);
44964}
44965pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
44966 problem:LogicProblem, interpretation:PartialInterpretation,
44967 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44968 container:DefinedElement)
44969{
44970 find interpretation(problem,interpretation);
44971 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44972 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
44973 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44974 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
44975 find mustInstanceOfEClass_class(problem,interpretation,container);
44976 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
44977 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
44978 find mustExist(problem, interpretation, container);
44979 neg find mustExist(problem, interpretation, newObject);
44980}
44981pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
44982 problem:LogicProblem, interpretation:PartialInterpretation,
44983 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
44984 container:DefinedElement)
44985{
44986 find interpretation(problem,interpretation);
44987 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
44988 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
44989 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
44990 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
44991 find mustInstanceOfEOperation_class(problem,interpretation,container);
44992 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
44993 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
44994 find mustExist(problem, interpretation, container);
44995 neg find mustExist(problem, interpretation, newObject);
44996}
44997pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
44998 problem:LogicProblem, interpretation:PartialInterpretation,
44999 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45000 container:DefinedElement)
45001{
45002 find interpretation(problem,interpretation);
45003 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45004 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45005 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45006 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
45007 find mustInstanceOfETypedElement_class(problem,interpretation,container);
45008 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45009 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
45010 find mustExist(problem, interpretation, container);
45011 neg find mustExist(problem, interpretation, newObject);
45012}
45013pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
45014 problem:LogicProblem, interpretation:PartialInterpretation,
45015 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45016 container:DefinedElement)
45017{
45018 find interpretation(problem,interpretation);
45019 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45020 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45021 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45022 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
45023 find mustInstanceOfEGenericType_class(problem,interpretation,container);
45024 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45025 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
45026 find mustExist(problem, interpretation, container);
45027 neg find mustExist(problem, interpretation, newObject);
45028}
45029pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
45030 problem:LogicProblem, interpretation:PartialInterpretation,
45031 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45032 container:DefinedElement)
45033{
45034 find interpretation(problem,interpretation);
45035 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45036 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45037 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45038 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
45039 find mustInstanceOfEGenericType_class(problem,interpretation,container);
45040 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45041 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
45042 find mustExist(problem, interpretation, container);
45043 neg find mustExist(problem, interpretation, newObject);
45044}
45045pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
45046 problem:LogicProblem, interpretation:PartialInterpretation,
45047 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45048 container:DefinedElement)
45049{
45050 find interpretation(problem,interpretation);
45051 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45052 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45053 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45054 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
45055 find mustInstanceOfEGenericType_class(problem,interpretation,container);
45056 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45057 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
45058 find mustExist(problem, interpretation, container);
45059 neg find mustExist(problem, interpretation, newObject);
45060}
45061pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
45062 problem:LogicProblem, interpretation:PartialInterpretation,
45063 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
45064 container:DefinedElement)
45065{
45066 find interpretation(problem,interpretation);
45067 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45068 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45069 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
45070 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
45071 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
45072 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45073 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
45074 find mustExist(problem, interpretation, container);
45075 neg find mustExist(problem, interpretation, newObject);
45076}
45077pattern createObject_EGenericType_class(
45078 problem:LogicProblem, interpretation:PartialInterpretation,
45079 typeInterpretation:PartialComplexTypeInterpretation)
45080{
45081 find interpretation(problem,interpretation);
45082 neg find hasElementInContainment(problem,interpretation);
45083 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
45084 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
45085 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
45086 find mayExist(problem, interpretation, newObject);
45087 neg find mustExist(problem, interpretation, newObject);
45088}
45089
45090//////////
45091// 4.2 Type refinement
45092//////////
45093pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45094 find interpretation(problem,interpretation);
45095 PartialInterpretation.newElements(interpretation,element);
45096 find mayInstanceOfEEnum_class(problem,interpretation,element);
45097 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45098 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45099 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
45100 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45101 neg find mustInstanceOfEClass_class(problem,interpretation,element);
45102 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45103 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45104 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45105 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45106 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45107}
45108pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45109 find interpretation(problem,interpretation);
45110 PartialInterpretation.newElements(interpretation,element);
45111 find mayInstanceOfEAttribute_class(problem,interpretation,element);
45112 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45113 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45114 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
45115 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45116 neg find mustInstanceOfEReference_class(problem,interpretation,element);
45117 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45118 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45119 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45120 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45121 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45122 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45123 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45124}
45125pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45126 find interpretation(problem,interpretation);
45127 PartialInterpretation.newElements(interpretation,element);
45128 find mayInstanceOfEObject_class(problem,interpretation,element);
45129 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45130 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45131 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
45132 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45133}
45134pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45135 find interpretation(problem,interpretation);
45136 PartialInterpretation.newElements(interpretation,element);
45137 find mayInstanceOfEReference_class(problem,interpretation,element);
45138 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45139 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45140 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
45141 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45142 neg find mustInstanceOfEReference_class(problem,interpretation,element);
45143 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45144 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45145 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45146 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45147 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45148 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45149 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45150}
45151pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45152 find interpretation(problem,interpretation);
45153 PartialInterpretation.newElements(interpretation,element);
45154 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
45155 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45156 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45157 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45158 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
45159 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45160 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45161 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45162 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45163 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45164}
45165pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45166 find interpretation(problem,interpretation);
45167 PartialInterpretation.newElements(interpretation,element);
45168 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
45169 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45170 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45171 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
45172 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45173 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45174}
45175pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45176 find interpretation(problem,interpretation);
45177 PartialInterpretation.newElements(interpretation,element);
45178 find mayInstanceOfEParameter_class(problem,interpretation,element);
45179 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45180 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45181 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45182 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45183 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45184 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45185 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45186 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
45187 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45188 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45189 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45190}
45191pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45192 find interpretation(problem,interpretation);
45193 PartialInterpretation.newElements(interpretation,element);
45194 find mayInstanceOfEDataType_class(problem,interpretation,element);
45195 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45196 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45197 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
45198 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45199 neg find mustInstanceOfEClass_class(problem,interpretation,element);
45200 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45201 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45202 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45203 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
45204 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45205 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45206}
45207pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45208 find interpretation(problem,interpretation);
45209 PartialInterpretation.newElements(interpretation,element);
45210 find mayInstanceOfEOperation_class(problem,interpretation,element);
45211 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45212 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45213 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45214 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45215 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45216 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
45217 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45218 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
45219 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45220 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45221 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
45222}
45223pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45224 find interpretation(problem,interpretation);
45225 PartialInterpretation.newElements(interpretation,element);
45226 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45227 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45228 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45229 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
45230 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45231}
45232pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45233 find interpretation(problem,interpretation);
45234 PartialInterpretation.newElements(interpretation,element);
45235 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
45236 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45237 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45238 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45239 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45240 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45241 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45242 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45243 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45244 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45245}
45246pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45247 find interpretation(problem,interpretation);
45248 PartialInterpretation.newElements(interpretation,element);
45249 find mayInstanceOfEClass_class(problem,interpretation,element);
45250 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45251 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45252 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45253 neg find mustInstanceOfEClass_class(problem,interpretation,element);
45254 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45255 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45256 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45257 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
45258 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45259 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45260}
45261pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45262 find interpretation(problem,interpretation);
45263 PartialInterpretation.newElements(interpretation,element);
45264 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
45265 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45266 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
45267 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45268 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
45269 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
45270 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
45271 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
45272 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
45273 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45274}
45275pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
45276 find interpretation(problem,interpretation);
45277 PartialInterpretation.newElements(interpretation,element);
45278 find mayInstanceOfEGenericType_class(problem,interpretation,element);
45279 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
45280 neg find mustInstanceOfEObject_class(problem,interpretation,element);
45281 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
45282 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
45283}
45284
45285//////////
45286// 4.3 Relation refinement
45287//////////
45288pattern refineRelation_eAttributeType_reference_EAttribute(
45289 problem:LogicProblem, interpretation:PartialInterpretation,
45290 relationIterpretation:PartialRelationInterpretation,
45291 from: DefinedElement, to: DefinedElement)
45292{
45293 find interpretation(problem,interpretation);
45294 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45295 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
45296 find mustExist(problem, interpretation, from);
45297 find mustExist(problem, interpretation, to);
45298 find mustInstanceOfEAttribute_class(problem,interpretation,from);
45299 find mustInstanceOfEDataType_class(problem,interpretation,to);
45300 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
45301 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
45302}
45303pattern refineRelation_references_reference_EAnnotation(
45304 problem:LogicProblem, interpretation:PartialInterpretation,
45305 relationIterpretation:PartialRelationInterpretation,
45306 from: DefinedElement, to: DefinedElement)
45307{
45308 find interpretation(problem,interpretation);
45309 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45310 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
45311 find mustExist(problem, interpretation, from);
45312 find mustExist(problem, interpretation, to);
45313 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
45314 find mustInstanceOfEObject_class(problem,interpretation,to);
45315 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
45316 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
45317}
45318pattern refineRelation_eSuperTypes_reference_EClass(
45319 problem:LogicProblem, interpretation:PartialInterpretation,
45320 relationIterpretation:PartialRelationInterpretation,
45321 from: DefinedElement, to: DefinedElement)
45322{
45323 find interpretation(problem,interpretation);
45324 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45325 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
45326 find mustExist(problem, interpretation, from);
45327 find mustExist(problem, interpretation, to);
45328 find mustInstanceOfEClass_class(problem,interpretation,from);
45329 find mustInstanceOfEClass_class(problem,interpretation,to);
45330 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
45331 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
45332}
45333pattern refineRelation_eAllAttributes_reference_EClass(
45334 problem:LogicProblem, interpretation:PartialInterpretation,
45335 relationIterpretation:PartialRelationInterpretation,
45336 from: DefinedElement, to: DefinedElement)
45337{
45338 find interpretation(problem,interpretation);
45339 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45340 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
45341 find mustExist(problem, interpretation, from);
45342 find mustExist(problem, interpretation, to);
45343 find mustInstanceOfEClass_class(problem,interpretation,from);
45344 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45345 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
45346 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
45347}
45348pattern refineRelation_eAllReferences_reference_EClass(
45349 problem:LogicProblem, interpretation:PartialInterpretation,
45350 relationIterpretation:PartialRelationInterpretation,
45351 from: DefinedElement, to: DefinedElement)
45352{
45353 find interpretation(problem,interpretation);
45354 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45355 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
45356 find mustExist(problem, interpretation, from);
45357 find mustExist(problem, interpretation, to);
45358 find mustInstanceOfEClass_class(problem,interpretation,from);
45359 find mustInstanceOfEReference_class(problem,interpretation,to);
45360 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
45361 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
45362}
45363pattern refineRelation_eReferences_reference_EClass(
45364 problem:LogicProblem, interpretation:PartialInterpretation,
45365 relationIterpretation:PartialRelationInterpretation,
45366 from: DefinedElement, to: DefinedElement)
45367{
45368 find interpretation(problem,interpretation);
45369 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45370 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
45371 find mustExist(problem, interpretation, from);
45372 find mustExist(problem, interpretation, to);
45373 find mustInstanceOfEClass_class(problem,interpretation,from);
45374 find mustInstanceOfEReference_class(problem,interpretation,to);
45375 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
45376 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
45377}
45378pattern refineRelation_eAttributes_reference_EClass(
45379 problem:LogicProblem, interpretation:PartialInterpretation,
45380 relationIterpretation:PartialRelationInterpretation,
45381 from: DefinedElement, to: DefinedElement)
45382{
45383 find interpretation(problem,interpretation);
45384 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45385 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
45386 find mustExist(problem, interpretation, from);
45387 find mustExist(problem, interpretation, to);
45388 find mustInstanceOfEClass_class(problem,interpretation,from);
45389 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45390 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
45391 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
45392}
45393pattern refineRelation_eAllContainments_reference_EClass(
45394 problem:LogicProblem, interpretation:PartialInterpretation,
45395 relationIterpretation:PartialRelationInterpretation,
45396 from: DefinedElement, to: DefinedElement)
45397{
45398 find interpretation(problem,interpretation);
45399 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45400 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
45401 find mustExist(problem, interpretation, from);
45402 find mustExist(problem, interpretation, to);
45403 find mustInstanceOfEClass_class(problem,interpretation,from);
45404 find mustInstanceOfEReference_class(problem,interpretation,to);
45405 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
45406 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
45407}
45408pattern refineRelation_eAllOperations_reference_EClass(
45409 problem:LogicProblem, interpretation:PartialInterpretation,
45410 relationIterpretation:PartialRelationInterpretation,
45411 from: DefinedElement, to: DefinedElement)
45412{
45413 find interpretation(problem,interpretation);
45414 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45415 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
45416 find mustExist(problem, interpretation, from);
45417 find mustExist(problem, interpretation, to);
45418 find mustInstanceOfEClass_class(problem,interpretation,from);
45419 find mustInstanceOfEOperation_class(problem,interpretation,to);
45420 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
45421 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
45422}
45423pattern refineRelation_eAllStructuralFeatures_reference_EClass(
45424 problem:LogicProblem, interpretation:PartialInterpretation,
45425 relationIterpretation:PartialRelationInterpretation,
45426 from: DefinedElement, to: DefinedElement)
45427{
45428 find interpretation(problem,interpretation);
45429 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45430 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
45431 find mustExist(problem, interpretation, from);
45432 find mustExist(problem, interpretation, to);
45433 find mustInstanceOfEClass_class(problem,interpretation,from);
45434 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
45435 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
45436 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
45437}
45438pattern refineRelation_eAllSuperTypes_reference_EClass(
45439 problem:LogicProblem, interpretation:PartialInterpretation,
45440 relationIterpretation:PartialRelationInterpretation,
45441 from: DefinedElement, to: DefinedElement)
45442{
45443 find interpretation(problem,interpretation);
45444 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45445 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
45446 find mustExist(problem, interpretation, from);
45447 find mustExist(problem, interpretation, to);
45448 find mustInstanceOfEClass_class(problem,interpretation,from);
45449 find mustInstanceOfEClass_class(problem,interpretation,to);
45450 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
45451 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
45452}
45453pattern refineRelation_eIDAttribute_reference_EClass(
45454 problem:LogicProblem, interpretation:PartialInterpretation,
45455 relationIterpretation:PartialRelationInterpretation,
45456 from: DefinedElement, to: DefinedElement)
45457{
45458 find interpretation(problem,interpretation);
45459 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45460 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
45461 find mustExist(problem, interpretation, from);
45462 find mustExist(problem, interpretation, to);
45463 find mustInstanceOfEClass_class(problem,interpretation,from);
45464 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45465 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
45466 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
45467}
45468pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
45469 problem:LogicProblem, interpretation:PartialInterpretation,
45470 relationIterpretation:PartialRelationInterpretation,
45471 from: DefinedElement, to: DefinedElement)
45472{
45473 find interpretation(problem,interpretation);
45474 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45475 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
45476 find mustExist(problem, interpretation, from);
45477 find mustExist(problem, interpretation, to);
45478 find mustInstanceOfEClass_class(problem,interpretation,from);
45479 find mustInstanceOfEGenericType_class(problem,interpretation,to);
45480 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
45481 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
45482}
45483pattern refineRelation_eExceptions_reference_EOperation(
45484 problem:LogicProblem, interpretation:PartialInterpretation,
45485 relationIterpretation:PartialRelationInterpretation,
45486 from: DefinedElement, to: DefinedElement)
45487{
45488 find interpretation(problem,interpretation);
45489 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45490 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
45491 find mustExist(problem, interpretation, from);
45492 find mustExist(problem, interpretation, to);
45493 find mustInstanceOfEOperation_class(problem,interpretation,from);
45494 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45495 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
45496 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
45497}
45498pattern refineRelation_eOpposite_reference_EReference(
45499 problem:LogicProblem, interpretation:PartialInterpretation,
45500 relationIterpretation:PartialRelationInterpretation,
45501 from: DefinedElement, to: DefinedElement)
45502{
45503 find interpretation(problem,interpretation);
45504 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45505 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
45506 find mustExist(problem, interpretation, from);
45507 find mustExist(problem, interpretation, to);
45508 find mustInstanceOfEReference_class(problem,interpretation,from);
45509 find mustInstanceOfEReference_class(problem,interpretation,to);
45510 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
45511 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
45512}
45513pattern refineRelation_eReferenceType_reference_EReference(
45514 problem:LogicProblem, interpretation:PartialInterpretation,
45515 relationIterpretation:PartialRelationInterpretation,
45516 from: DefinedElement, to: DefinedElement)
45517{
45518 find interpretation(problem,interpretation);
45519 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45520 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
45521 find mustExist(problem, interpretation, from);
45522 find mustExist(problem, interpretation, to);
45523 find mustInstanceOfEReference_class(problem,interpretation,from);
45524 find mustInstanceOfEClass_class(problem,interpretation,to);
45525 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
45526 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
45527}
45528pattern refineRelation_eKeys_reference_EReference(
45529 problem:LogicProblem, interpretation:PartialInterpretation,
45530 relationIterpretation:PartialRelationInterpretation,
45531 from: DefinedElement, to: DefinedElement)
45532{
45533 find interpretation(problem,interpretation);
45534 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45535 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
45536 find mustExist(problem, interpretation, from);
45537 find mustExist(problem, interpretation, to);
45538 find mustInstanceOfEReference_class(problem,interpretation,from);
45539 find mustInstanceOfEAttribute_class(problem,interpretation,to);
45540 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
45541 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
45542}
45543pattern refineRelation_eType_reference_ETypedElement(
45544 problem:LogicProblem, interpretation:PartialInterpretation,
45545 relationIterpretation:PartialRelationInterpretation,
45546 from: DefinedElement, to: DefinedElement)
45547{
45548 find interpretation(problem,interpretation);
45549 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45550 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
45551 find mustExist(problem, interpretation, from);
45552 find mustExist(problem, interpretation, to);
45553 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45554 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45555 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
45556 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
45557}
45558pattern refineRelation_eRawType_reference_EGenericType(
45559 problem:LogicProblem, interpretation:PartialInterpretation,
45560 relationIterpretation:PartialRelationInterpretation,
45561 from: DefinedElement, to: DefinedElement)
45562{
45563 find interpretation(problem,interpretation);
45564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
45566 find mustExist(problem, interpretation, from);
45567 find mustExist(problem, interpretation, to);
45568 find mustInstanceOfEGenericType_class(problem,interpretation,from);
45569 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45570 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
45571 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
45572}
45573pattern refineRelation_eTypeParameter_reference_EGenericType(
45574 problem:LogicProblem, interpretation:PartialInterpretation,
45575 relationIterpretation:PartialRelationInterpretation,
45576 from: DefinedElement, to: DefinedElement)
45577{
45578 find interpretation(problem,interpretation);
45579 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45580 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
45581 find mustExist(problem, interpretation, from);
45582 find mustExist(problem, interpretation, to);
45583 find mustInstanceOfEGenericType_class(problem,interpretation,from);
45584 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
45585 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
45586 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
45587}
45588pattern refineRelation_eClassifier_reference_EGenericType(
45589 problem:LogicProblem, interpretation:PartialInterpretation,
45590 relationIterpretation:PartialRelationInterpretation,
45591 from: DefinedElement, to: DefinedElement)
45592{
45593 find interpretation(problem,interpretation);
45594 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45595 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
45596 find mustExist(problem, interpretation, from);
45597 find mustExist(problem, interpretation, to);
45598 find mustInstanceOfEGenericType_class(problem,interpretation,from);
45599 find mustInstanceOfEClassifier_class(problem,interpretation,to);
45600 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
45601 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
45602}
45603pattern refineRelation_iD_attribute_EAttribute(
45604 problem:LogicProblem, interpretation:PartialInterpretation,
45605 relationIterpretation:PartialRelationInterpretation,
45606 from: DefinedElement, to: DefinedElement)
45607{
45608 find interpretation(problem,interpretation);
45609 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45610 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
45611 find mustExist(problem, interpretation, from);
45612 find mustExist(problem, interpretation, to);
45613 find mustInstanceOfEAttribute_class(problem,interpretation,from);
45614 BooleanElement(to);
45615 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
45616 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
45617}
45618pattern refineRelation_source_attribute_EAnnotation(
45619 problem:LogicProblem, interpretation:PartialInterpretation,
45620 relationIterpretation:PartialRelationInterpretation,
45621 from: DefinedElement, to: DefinedElement)
45622{
45623 find interpretation(problem,interpretation);
45624 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45625 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
45626 find mustExist(problem, interpretation, from);
45627 find mustExist(problem, interpretation, to);
45628 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
45629 StringElement(to);
45630 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
45631 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
45632}
45633pattern refineRelation_abstract_attribute_EClass(
45634 problem:LogicProblem, interpretation:PartialInterpretation,
45635 relationIterpretation:PartialRelationInterpretation,
45636 from: DefinedElement, to: DefinedElement)
45637{
45638 find interpretation(problem,interpretation);
45639 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45640 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
45641 find mustExist(problem, interpretation, from);
45642 find mustExist(problem, interpretation, to);
45643 find mustInstanceOfEClass_class(problem,interpretation,from);
45644 BooleanElement(to);
45645 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
45646 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
45647}
45648pattern refineRelation_interface_attribute_EClass(
45649 problem:LogicProblem, interpretation:PartialInterpretation,
45650 relationIterpretation:PartialRelationInterpretation,
45651 from: DefinedElement, to: DefinedElement)
45652{
45653 find interpretation(problem,interpretation);
45654 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45655 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
45656 find mustExist(problem, interpretation, from);
45657 find mustExist(problem, interpretation, to);
45658 find mustInstanceOfEClass_class(problem,interpretation,from);
45659 BooleanElement(to);
45660 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
45661 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
45662}
45663pattern refineRelation_instanceClassName_attribute_EClassifier(
45664 problem:LogicProblem, interpretation:PartialInterpretation,
45665 relationIterpretation:PartialRelationInterpretation,
45666 from: DefinedElement, to: DefinedElement)
45667{
45668 find interpretation(problem,interpretation);
45669 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45670 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
45671 find mustExist(problem, interpretation, from);
45672 find mustExist(problem, interpretation, to);
45673 find mustInstanceOfEClassifier_class(problem,interpretation,from);
45674 StringElement(to);
45675 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
45676 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
45677}
45678pattern refineRelation_instanceTypeName_attribute_EClassifier(
45679 problem:LogicProblem, interpretation:PartialInterpretation,
45680 relationIterpretation:PartialRelationInterpretation,
45681 from: DefinedElement, to: DefinedElement)
45682{
45683 find interpretation(problem,interpretation);
45684 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45685 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
45686 find mustExist(problem, interpretation, from);
45687 find mustExist(problem, interpretation, to);
45688 find mustInstanceOfEClassifier_class(problem,interpretation,from);
45689 StringElement(to);
45690 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
45691 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
45692}
45693pattern refineRelation_serializable_attribute_EDataType(
45694 problem:LogicProblem, interpretation:PartialInterpretation,
45695 relationIterpretation:PartialRelationInterpretation,
45696 from: DefinedElement, to: DefinedElement)
45697{
45698 find interpretation(problem,interpretation);
45699 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45700 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
45701 find mustExist(problem, interpretation, from);
45702 find mustExist(problem, interpretation, to);
45703 find mustInstanceOfEDataType_class(problem,interpretation,from);
45704 BooleanElement(to);
45705 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
45706 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
45707}
45708pattern refineRelation_value_attribute_EEnumLiteral(
45709 problem:LogicProblem, interpretation:PartialInterpretation,
45710 relationIterpretation:PartialRelationInterpretation,
45711 from: DefinedElement, to: DefinedElement)
45712{
45713 find interpretation(problem,interpretation);
45714 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45715 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
45716 find mustExist(problem, interpretation, from);
45717 find mustExist(problem, interpretation, to);
45718 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
45719 IntegerElement(to);
45720 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
45721 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
45722}
45723pattern refineRelation_literal_attribute_EEnumLiteral(
45724 problem:LogicProblem, interpretation:PartialInterpretation,
45725 relationIterpretation:PartialRelationInterpretation,
45726 from: DefinedElement, to: DefinedElement)
45727{
45728 find interpretation(problem,interpretation);
45729 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45730 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
45731 find mustExist(problem, interpretation, from);
45732 find mustExist(problem, interpretation, to);
45733 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
45734 StringElement(to);
45735 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
45736 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
45737}
45738pattern refineRelation_name_attribute_ENamedElement(
45739 problem:LogicProblem, interpretation:PartialInterpretation,
45740 relationIterpretation:PartialRelationInterpretation,
45741 from: DefinedElement, to: DefinedElement)
45742{
45743 find interpretation(problem,interpretation);
45744 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45745 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
45746 find mustExist(problem, interpretation, from);
45747 find mustExist(problem, interpretation, to);
45748 find mustInstanceOfENamedElement_class(problem,interpretation,from);
45749 StringElement(to);
45750 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
45751 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
45752}
45753pattern refineRelation_nsURI_attribute_EPackage(
45754 problem:LogicProblem, interpretation:PartialInterpretation,
45755 relationIterpretation:PartialRelationInterpretation,
45756 from: DefinedElement, to: DefinedElement)
45757{
45758 find interpretation(problem,interpretation);
45759 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45760 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
45761 find mustExist(problem, interpretation, from);
45762 find mustExist(problem, interpretation, to);
45763 find mustInstanceOfEPackage_class(problem,interpretation,from);
45764 StringElement(to);
45765 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
45766 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
45767}
45768pattern refineRelation_nsPrefix_attribute_EPackage(
45769 problem:LogicProblem, interpretation:PartialInterpretation,
45770 relationIterpretation:PartialRelationInterpretation,
45771 from: DefinedElement, to: DefinedElement)
45772{
45773 find interpretation(problem,interpretation);
45774 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45775 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
45776 find mustExist(problem, interpretation, from);
45777 find mustExist(problem, interpretation, to);
45778 find mustInstanceOfEPackage_class(problem,interpretation,from);
45779 StringElement(to);
45780 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
45781 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
45782}
45783pattern refineRelation_containment_attribute_EReference(
45784 problem:LogicProblem, interpretation:PartialInterpretation,
45785 relationIterpretation:PartialRelationInterpretation,
45786 from: DefinedElement, to: DefinedElement)
45787{
45788 find interpretation(problem,interpretation);
45789 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45790 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
45791 find mustExist(problem, interpretation, from);
45792 find mustExist(problem, interpretation, to);
45793 find mustInstanceOfEReference_class(problem,interpretation,from);
45794 BooleanElement(to);
45795 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
45796 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
45797}
45798pattern refineRelation_container_attribute_EReference(
45799 problem:LogicProblem, interpretation:PartialInterpretation,
45800 relationIterpretation:PartialRelationInterpretation,
45801 from: DefinedElement, to: DefinedElement)
45802{
45803 find interpretation(problem,interpretation);
45804 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45805 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
45806 find mustExist(problem, interpretation, from);
45807 find mustExist(problem, interpretation, to);
45808 find mustInstanceOfEReference_class(problem,interpretation,from);
45809 BooleanElement(to);
45810 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
45811 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
45812}
45813pattern refineRelation_resolveProxies_attribute_EReference(
45814 problem:LogicProblem, interpretation:PartialInterpretation,
45815 relationIterpretation:PartialRelationInterpretation,
45816 from: DefinedElement, to: DefinedElement)
45817{
45818 find interpretation(problem,interpretation);
45819 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45820 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
45821 find mustExist(problem, interpretation, from);
45822 find mustExist(problem, interpretation, to);
45823 find mustInstanceOfEReference_class(problem,interpretation,from);
45824 BooleanElement(to);
45825 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
45826 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
45827}
45828pattern refineRelation_changeable_attribute_EStructuralFeature(
45829 problem:LogicProblem, interpretation:PartialInterpretation,
45830 relationIterpretation:PartialRelationInterpretation,
45831 from: DefinedElement, to: DefinedElement)
45832{
45833 find interpretation(problem,interpretation);
45834 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45835 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
45836 find mustExist(problem, interpretation, from);
45837 find mustExist(problem, interpretation, to);
45838 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45839 BooleanElement(to);
45840 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
45841 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
45842}
45843pattern refineRelation_volatile_attribute_EStructuralFeature(
45844 problem:LogicProblem, interpretation:PartialInterpretation,
45845 relationIterpretation:PartialRelationInterpretation,
45846 from: DefinedElement, to: DefinedElement)
45847{
45848 find interpretation(problem,interpretation);
45849 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45850 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
45851 find mustExist(problem, interpretation, from);
45852 find mustExist(problem, interpretation, to);
45853 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45854 BooleanElement(to);
45855 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
45856 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
45857}
45858pattern refineRelation_transient_attribute_EStructuralFeature(
45859 problem:LogicProblem, interpretation:PartialInterpretation,
45860 relationIterpretation:PartialRelationInterpretation,
45861 from: DefinedElement, to: DefinedElement)
45862{
45863 find interpretation(problem,interpretation);
45864 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45865 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
45866 find mustExist(problem, interpretation, from);
45867 find mustExist(problem, interpretation, to);
45868 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45869 BooleanElement(to);
45870 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
45871 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
45872}
45873pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
45874 problem:LogicProblem, interpretation:PartialInterpretation,
45875 relationIterpretation:PartialRelationInterpretation,
45876 from: DefinedElement, to: DefinedElement)
45877{
45878 find interpretation(problem,interpretation);
45879 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45880 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
45881 find mustExist(problem, interpretation, from);
45882 find mustExist(problem, interpretation, to);
45883 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45884 StringElement(to);
45885 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
45886 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
45887}
45888pattern refineRelation_unsettable_attribute_EStructuralFeature(
45889 problem:LogicProblem, interpretation:PartialInterpretation,
45890 relationIterpretation:PartialRelationInterpretation,
45891 from: DefinedElement, to: DefinedElement)
45892{
45893 find interpretation(problem,interpretation);
45894 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45895 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
45896 find mustExist(problem, interpretation, from);
45897 find mustExist(problem, interpretation, to);
45898 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45899 BooleanElement(to);
45900 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
45901 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
45902}
45903pattern refineRelation_derived_attribute_EStructuralFeature(
45904 problem:LogicProblem, interpretation:PartialInterpretation,
45905 relationIterpretation:PartialRelationInterpretation,
45906 from: DefinedElement, to: DefinedElement)
45907{
45908 find interpretation(problem,interpretation);
45909 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45910 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
45911 find mustExist(problem, interpretation, from);
45912 find mustExist(problem, interpretation, to);
45913 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
45914 BooleanElement(to);
45915 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
45916 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
45917}
45918pattern refineRelation_ordered_attribute_ETypedElement(
45919 problem:LogicProblem, interpretation:PartialInterpretation,
45920 relationIterpretation:PartialRelationInterpretation,
45921 from: DefinedElement, to: DefinedElement)
45922{
45923 find interpretation(problem,interpretation);
45924 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45925 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
45926 find mustExist(problem, interpretation, from);
45927 find mustExist(problem, interpretation, to);
45928 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45929 BooleanElement(to);
45930 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
45931 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
45932}
45933pattern refineRelation_unique_attribute_ETypedElement(
45934 problem:LogicProblem, interpretation:PartialInterpretation,
45935 relationIterpretation:PartialRelationInterpretation,
45936 from: DefinedElement, to: DefinedElement)
45937{
45938 find interpretation(problem,interpretation);
45939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
45941 find mustExist(problem, interpretation, from);
45942 find mustExist(problem, interpretation, to);
45943 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45944 BooleanElement(to);
45945 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
45946 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
45947}
45948pattern refineRelation_lowerBound_attribute_ETypedElement(
45949 problem:LogicProblem, interpretation:PartialInterpretation,
45950 relationIterpretation:PartialRelationInterpretation,
45951 from: DefinedElement, to: DefinedElement)
45952{
45953 find interpretation(problem,interpretation);
45954 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45955 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
45956 find mustExist(problem, interpretation, from);
45957 find mustExist(problem, interpretation, to);
45958 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45959 IntegerElement(to);
45960 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
45961 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
45962}
45963pattern refineRelation_upperBound_attribute_ETypedElement(
45964 problem:LogicProblem, interpretation:PartialInterpretation,
45965 relationIterpretation:PartialRelationInterpretation,
45966 from: DefinedElement, to: DefinedElement)
45967{
45968 find interpretation(problem,interpretation);
45969 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45970 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
45971 find mustExist(problem, interpretation, from);
45972 find mustExist(problem, interpretation, to);
45973 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45974 IntegerElement(to);
45975 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
45976 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
45977}
45978pattern refineRelation_many_attribute_ETypedElement(
45979 problem:LogicProblem, interpretation:PartialInterpretation,
45980 relationIterpretation:PartialRelationInterpretation,
45981 from: DefinedElement, to: DefinedElement)
45982{
45983 find interpretation(problem,interpretation);
45984 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
45985 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
45986 find mustExist(problem, interpretation, from);
45987 find mustExist(problem, interpretation, to);
45988 find mustInstanceOfETypedElement_class(problem,interpretation,from);
45989 BooleanElement(to);
45990 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
45991 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
45992}
45993pattern refineRelation_required_attribute_ETypedElement(
45994 problem:LogicProblem, interpretation:PartialInterpretation,
45995 relationIterpretation:PartialRelationInterpretation,
45996 from: DefinedElement, to: DefinedElement)
45997{
45998 find interpretation(problem,interpretation);
45999 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
46000 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
46001 find mustExist(problem, interpretation, from);
46002 find mustExist(problem, interpretation, to);
46003 find mustInstanceOfETypedElement_class(problem,interpretation,from);
46004 BooleanElement(to);
46005 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
46006 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
46007}
46008pattern refineRelation_key_attribute_EStringToStringMapEntry(
46009 problem:LogicProblem, interpretation:PartialInterpretation,
46010 relationIterpretation:PartialRelationInterpretation,
46011 from: DefinedElement, to: DefinedElement)
46012{
46013 find interpretation(problem,interpretation);
46014 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
46015 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
46016 find mustExist(problem, interpretation, from);
46017 find mustExist(problem, interpretation, to);
46018 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
46019 StringElement(to);
46020 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46021 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46022}
46023pattern refineRelation_value_attribute_EStringToStringMapEntry(
46024 problem:LogicProblem, interpretation:PartialInterpretation,
46025 relationIterpretation:PartialRelationInterpretation,
46026 from: DefinedElement, to: DefinedElement)
46027{
46028 find interpretation(problem,interpretation);
46029 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
46030 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
46031 find mustExist(problem, interpretation, from);
46032 find mustExist(problem, interpretation, to);
46033 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
46034 StringElement(to);
46035 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46036 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
46037}
46038import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
46039import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
46040import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
46041
46042//////////
46043// 0. Util
46044//////////
46045private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
46046 PartialInterpretation.problem(interpretation,problem);
46047}
46048
46049/////////////////////////
46050// 0.1 Existence
46051/////////////////////////
46052private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46053 find interpretation(problem,interpretation);
46054 LogicProblem.elements(problem,element);
46055} or {
46056 find interpretation(problem,interpretation);
46057 PartialInterpretation.newElements(interpretation,element);
46058}
46059
46060private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46061 find mustExist(problem,interpretation,element);
46062} or {
46063 find interpretation(problem,interpretation);
46064 neg find elementCloseWorld(element);
46065 PartialInterpretation.openWorldElements(interpretation,element);
46066}
46067
46068private pattern elementCloseWorld(element:DefinedElement) {
46069 PartialInterpretation.openWorldElements(i,element);
46070 PartialInterpretation.maxNewElements(i,0);
46071} or {
46072 Scope.targetTypeInterpretation(scope,interpretation);
46073 PartialTypeInterpratation.elements(interpretation,element);
46074 Scope.maxNewElements(scope,0);
46075}
46076
46077////////////////////////
46078// 0.2 Equivalence
46079////////////////////////
46080pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
46081 find mayExist(problem,interpretation,a);
46082 find mayExist(problem,interpretation,b);
46083 a == b;
46084}
46085
46086////////////////////////
46087// 0.3 Required Patterns by TypeIndexer
46088////////////////////////
46089private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
46090 find interpretation(problem,interpretation);
46091 LogicProblem.types(problem,type);
46092 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
46093 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46094}
46095
46096private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
46097 find interpretation(problem,interpretation);
46098 LogicProblem.types(problem,type);
46099 TypeDefinition.elements(type,element);
46100} or {
46101 find interpretation(problem,interpretation);
46102 find typeInterpretation(problem,interpretation,type,typeInterpretation);
46103 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
46104}
46105
46106private pattern isPrimitive(element: PrimitiveElement) {
46107 PrimitiveElement(element);
46108}
46109
46110//////////
46111// 1. Problem-Specific Base Indexers
46112//////////
46113// 1.1 Type Indexers
46114//////////
46115// 1.1.1 primitive Type Indexers
46116//////////
46117
46118//////////
46119// 1.1.2 domain-specific Type Indexers
46120//////////
46121/**
46122 * An element must be an instance of type "EAttribute class".
46123 */
46124private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46125 Type.name(type,"EAttribute class");
46126 find directInstanceOf(problem,interpretation,element,type);
46127}
46128private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46129 find interpretation(problem,interpretation);
46130 PartialInterpretation.scopes(interpretation,scope);
46131 Scope.targetTypeInterpretation(scope,typeInterpretation);
46132 Scope.maxNewElements(scope,0);
46133 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46134 Type.name(type,"EAttribute class");
46135}
46136
46137/**
46138 * An element may be an instance of type "EAttribute class".
46139 */
46140private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46141{
46142 find interpretation(problem,interpretation);
46143 PartialInterpretation.newElements(interpretation,element);
46144 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46145 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46146 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46147 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46148 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46149 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46150 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46151 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46152 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46153 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46154 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46155 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
46156 neg find isPrimitive(element);
46157} or {
46158 find interpretation(problem,interpretation);
46159 PartialInterpretation.openWorldElements(interpretation,element);
46160 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46161 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46162 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46163 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46164 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46165 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46166 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46167 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46168 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46169 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46170 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46171 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
46172 neg find isPrimitive(element);
46173} or
46174{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
46175/**
46176 * An element must be an instance of type "EAnnotation class".
46177 */
46178private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46179 Type.name(type,"EAnnotation class");
46180 find directInstanceOf(problem,interpretation,element,type);
46181}
46182private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46183 find interpretation(problem,interpretation);
46184 PartialInterpretation.scopes(interpretation,scope);
46185 Scope.targetTypeInterpretation(scope,typeInterpretation);
46186 Scope.maxNewElements(scope,0);
46187 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46188 Type.name(type,"EAnnotation class");
46189}
46190
46191/**
46192 * An element may be an instance of type "EAnnotation class".
46193 */
46194private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46195{
46196 find interpretation(problem,interpretation);
46197 PartialInterpretation.newElements(interpretation,element);
46198 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46199 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46200 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46201 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46202 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
46203 neg find isPrimitive(element);
46204} or {
46205 find interpretation(problem,interpretation);
46206 PartialInterpretation.openWorldElements(interpretation,element);
46207 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46208 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46209 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46210 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46211 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
46212 neg find isPrimitive(element);
46213} or
46214{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
46215/**
46216 * An element must be an instance of type "EClass class".
46217 */
46218private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46219 Type.name(type,"EClass class");
46220 find directInstanceOf(problem,interpretation,element,type);
46221}
46222private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46223 find interpretation(problem,interpretation);
46224 PartialInterpretation.scopes(interpretation,scope);
46225 Scope.targetTypeInterpretation(scope,typeInterpretation);
46226 Scope.maxNewElements(scope,0);
46227 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46228 Type.name(type,"EClass class");
46229}
46230
46231/**
46232 * An element may be an instance of type "EClass class".
46233 */
46234private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46235{
46236 find interpretation(problem,interpretation);
46237 PartialInterpretation.newElements(interpretation,element);
46238 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46239 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46240 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46241 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46242 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46243 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46244 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46245 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46246 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46247 neg find scopeDisallowsNewEClass_class(problem, interpretation);
46248 neg find isPrimitive(element);
46249} or {
46250 find interpretation(problem,interpretation);
46251 PartialInterpretation.openWorldElements(interpretation,element);
46252 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46253 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46254 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46255 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46256 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46257 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46258 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46259 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46260 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46261 neg find scopeDisallowsNewEClass_class(problem, interpretation);
46262 neg find isPrimitive(element);
46263} or
46264{ find mustInstanceOfEClass_class(problem,interpretation,element); }
46265/**
46266 * An element must be an instance of type "EClassifier class".
46267 */
46268private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46269 Type.name(type,"EClassifier class");
46270 find directInstanceOf(problem,interpretation,element,type);
46271}
46272private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46273 find interpretation(problem,interpretation);
46274 PartialInterpretation.scopes(interpretation,scope);
46275 Scope.targetTypeInterpretation(scope,typeInterpretation);
46276 Scope.maxNewElements(scope,0);
46277 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46278 Type.name(type,"EClassifier class");
46279}
46280
46281/**
46282 * An element may be an instance of type "EClassifier class".
46283 */
46284private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46285{
46286 find interpretation(problem,interpretation);
46287 PartialInterpretation.newElements(interpretation,element);
46288 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46289 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46290 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46291 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46292 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46293 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46294 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46295 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46296 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46297 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46298 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
46299 neg find isPrimitive(element);
46300} or {
46301 find interpretation(problem,interpretation);
46302 PartialInterpretation.openWorldElements(interpretation,element);
46303 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46304 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
46305 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46306 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46307 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46308 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46309 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46310 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46311 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46312 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46313 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
46314 neg find isPrimitive(element);
46315} or
46316{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
46317/**
46318 * An element must be an instance of type "EDataType class".
46319 */
46320private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46321 Type.name(type,"EDataType class");
46322 find directInstanceOf(problem,interpretation,element,type);
46323}
46324private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46325 find interpretation(problem,interpretation);
46326 PartialInterpretation.scopes(interpretation,scope);
46327 Scope.targetTypeInterpretation(scope,typeInterpretation);
46328 Scope.maxNewElements(scope,0);
46329 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46330 Type.name(type,"EDataType class");
46331}
46332
46333/**
46334 * An element may be an instance of type "EDataType class".
46335 */
46336private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46337{
46338 find interpretation(problem,interpretation);
46339 PartialInterpretation.newElements(interpretation,element);
46340 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46341 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46342 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46343 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46344 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46345 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46346 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46347 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
46348 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46349 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46350 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
46351 neg find isPrimitive(element);
46352} or {
46353 find interpretation(problem,interpretation);
46354 PartialInterpretation.openWorldElements(interpretation,element);
46355 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46356 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46357 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46358 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46359 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46360 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46361 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46362 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
46363 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46364 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46365 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
46366 neg find isPrimitive(element);
46367} or
46368{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
46369/**
46370 * An element must be an instance of type "EEnum class".
46371 */
46372private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46373 Type.name(type,"EEnum class");
46374 find directInstanceOf(problem,interpretation,element,type);
46375}
46376private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46377 find interpretation(problem,interpretation);
46378 PartialInterpretation.scopes(interpretation,scope);
46379 Scope.targetTypeInterpretation(scope,typeInterpretation);
46380 Scope.maxNewElements(scope,0);
46381 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46382 Type.name(type,"EEnum class");
46383}
46384
46385/**
46386 * An element may be an instance of type "EEnum class".
46387 */
46388private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46389{
46390 find interpretation(problem,interpretation);
46391 PartialInterpretation.newElements(interpretation,element);
46392 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46393 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46394 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46395 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46396 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46397 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46398 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46399 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46400 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46401 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
46402 neg find isPrimitive(element);
46403} or {
46404 find interpretation(problem,interpretation);
46405 PartialInterpretation.openWorldElements(interpretation,element);
46406 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46407 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46408 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46409 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46410 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46411 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46412 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46413 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46414 neg find mustInstanceOfEClass_class(problem,interpretation,element);
46415 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
46416 neg find isPrimitive(element);
46417} or
46418{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
46419/**
46420 * An element must be an instance of type "EEnumLiteral class".
46421 */
46422private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46423 Type.name(type,"EEnumLiteral class");
46424 find directInstanceOf(problem,interpretation,element,type);
46425}
46426private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46427 find interpretation(problem,interpretation);
46428 PartialInterpretation.scopes(interpretation,scope);
46429 Scope.targetTypeInterpretation(scope,typeInterpretation);
46430 Scope.maxNewElements(scope,0);
46431 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46432 Type.name(type,"EEnumLiteral class");
46433}
46434
46435/**
46436 * An element may be an instance of type "EEnumLiteral class".
46437 */
46438private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46439{
46440 find interpretation(problem,interpretation);
46441 PartialInterpretation.newElements(interpretation,element);
46442 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46443 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46444 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46445 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46446 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46447 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46448 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46449 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46450 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
46451 neg find isPrimitive(element);
46452} or {
46453 find interpretation(problem,interpretation);
46454 PartialInterpretation.openWorldElements(interpretation,element);
46455 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46456 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46457 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46458 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46459 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46460 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46461 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46462 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
46463 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
46464 neg find isPrimitive(element);
46465} or
46466{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
46467/**
46468 * An element must be an instance of type "EModelElement class".
46469 */
46470private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46471 Type.name(type,"EModelElement class");
46472 find directInstanceOf(problem,interpretation,element,type);
46473}
46474private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46475 find interpretation(problem,interpretation);
46476 PartialInterpretation.scopes(interpretation,scope);
46477 Scope.targetTypeInterpretation(scope,typeInterpretation);
46478 Scope.maxNewElements(scope,0);
46479 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46480 Type.name(type,"EModelElement class");
46481}
46482
46483/**
46484 * An element may be an instance of type "EModelElement class".
46485 */
46486private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46487{
46488 find interpretation(problem,interpretation);
46489 PartialInterpretation.newElements(interpretation,element);
46490 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46491 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46492 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46493 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46494 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46495 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
46496 neg find isPrimitive(element);
46497} or {
46498 find interpretation(problem,interpretation);
46499 PartialInterpretation.openWorldElements(interpretation,element);
46500 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46501 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46502 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46503 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46504 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
46505 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
46506 neg find isPrimitive(element);
46507} or
46508{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
46509/**
46510 * An element must be an instance of type "ENamedElement class".
46511 */
46512private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46513 Type.name(type,"ENamedElement class");
46514 find directInstanceOf(problem,interpretation,element,type);
46515}
46516private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46517 find interpretation(problem,interpretation);
46518 PartialInterpretation.scopes(interpretation,scope);
46519 Scope.targetTypeInterpretation(scope,typeInterpretation);
46520 Scope.maxNewElements(scope,0);
46521 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46522 Type.name(type,"ENamedElement class");
46523}
46524
46525/**
46526 * An element may be an instance of type "ENamedElement class".
46527 */
46528private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46529{
46530 find interpretation(problem,interpretation);
46531 PartialInterpretation.newElements(interpretation,element);
46532 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46533 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46534 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46535 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46536 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46537 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
46538 neg find isPrimitive(element);
46539} or {
46540 find interpretation(problem,interpretation);
46541 PartialInterpretation.openWorldElements(interpretation,element);
46542 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46543 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46544 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46545 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46546 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46547 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
46548 neg find isPrimitive(element);
46549} or
46550{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
46551/**
46552 * An element must be an instance of type "EObject class".
46553 */
46554private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46555 Type.name(type,"EObject class");
46556 find directInstanceOf(problem,interpretation,element,type);
46557}
46558private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46559 find interpretation(problem,interpretation);
46560 PartialInterpretation.scopes(interpretation,scope);
46561 Scope.targetTypeInterpretation(scope,typeInterpretation);
46562 Scope.maxNewElements(scope,0);
46563 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46564 Type.name(type,"EObject class");
46565}
46566
46567/**
46568 * An element may be an instance of type "EObject class".
46569 */
46570private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46571{
46572 find interpretation(problem,interpretation);
46573 PartialInterpretation.newElements(interpretation,element);
46574 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46575 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46576 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46577 neg find scopeDisallowsNewEObject_class(problem, interpretation);
46578 neg find isPrimitive(element);
46579} or {
46580 find interpretation(problem,interpretation);
46581 PartialInterpretation.openWorldElements(interpretation,element);
46582 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46583 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46584 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46585 neg find scopeDisallowsNewEObject_class(problem, interpretation);
46586 neg find isPrimitive(element);
46587} or
46588{ find mustInstanceOfEObject_class(problem,interpretation,element); }
46589/**
46590 * An element must be an instance of type "EOperation class".
46591 */
46592private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46593 Type.name(type,"EOperation class");
46594 find directInstanceOf(problem,interpretation,element,type);
46595}
46596private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46597 find interpretation(problem,interpretation);
46598 PartialInterpretation.scopes(interpretation,scope);
46599 Scope.targetTypeInterpretation(scope,typeInterpretation);
46600 Scope.maxNewElements(scope,0);
46601 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46602 Type.name(type,"EOperation class");
46603}
46604
46605/**
46606 * An element may be an instance of type "EOperation class".
46607 */
46608private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46609{
46610 find interpretation(problem,interpretation);
46611 PartialInterpretation.newElements(interpretation,element);
46612 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46613 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46614 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46615 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46616 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46617 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46618 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46619 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46620 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46621 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46622 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
46623 neg find isPrimitive(element);
46624} or {
46625 find interpretation(problem,interpretation);
46626 PartialInterpretation.openWorldElements(interpretation,element);
46627 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46628 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46629 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46630 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46631 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46632 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46633 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46634 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46635 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46636 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46637 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
46638 neg find isPrimitive(element);
46639} or
46640{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
46641/**
46642 * An element must be an instance of type "EPackage class".
46643 */
46644private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46645 Type.name(type,"EPackage class");
46646 find directInstanceOf(problem,interpretation,element,type);
46647}
46648private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46649 find interpretation(problem,interpretation);
46650 PartialInterpretation.scopes(interpretation,scope);
46651 Scope.targetTypeInterpretation(scope,typeInterpretation);
46652 Scope.maxNewElements(scope,0);
46653 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46654 Type.name(type,"EPackage class");
46655}
46656
46657/**
46658 * An element may be an instance of type "EPackage class".
46659 */
46660private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46661{
46662 find interpretation(problem,interpretation);
46663 PartialInterpretation.newElements(interpretation,element);
46664 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46665 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46666 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46667 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46668 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
46669 neg find isPrimitive(element);
46670} or {
46671 find interpretation(problem,interpretation);
46672 PartialInterpretation.openWorldElements(interpretation,element);
46673 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46674 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46675 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
46676 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46677 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
46678 neg find isPrimitive(element);
46679} or
46680{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
46681/**
46682 * An element must be an instance of type "EParameter class".
46683 */
46684private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46685 Type.name(type,"EParameter class");
46686 find directInstanceOf(problem,interpretation,element,type);
46687}
46688private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46689 find interpretation(problem,interpretation);
46690 PartialInterpretation.scopes(interpretation,scope);
46691 Scope.targetTypeInterpretation(scope,typeInterpretation);
46692 Scope.maxNewElements(scope,0);
46693 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46694 Type.name(type,"EParameter class");
46695}
46696
46697/**
46698 * An element may be an instance of type "EParameter class".
46699 */
46700private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46701{
46702 find interpretation(problem,interpretation);
46703 PartialInterpretation.newElements(interpretation,element);
46704 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46705 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46706 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46707 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46708 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46709 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46710 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46711 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46712 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46713 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46714 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
46715 neg find isPrimitive(element);
46716} or {
46717 find interpretation(problem,interpretation);
46718 PartialInterpretation.openWorldElements(interpretation,element);
46719 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46720 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46721 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46722 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46723 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46724 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46725 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46726 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46727 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46728 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46729 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
46730 neg find isPrimitive(element);
46731} or
46732{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
46733/**
46734 * An element must be an instance of type "EReference class".
46735 */
46736private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46737 Type.name(type,"EReference class");
46738 find directInstanceOf(problem,interpretation,element,type);
46739}
46740private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46741 find interpretation(problem,interpretation);
46742 PartialInterpretation.scopes(interpretation,scope);
46743 Scope.targetTypeInterpretation(scope,typeInterpretation);
46744 Scope.maxNewElements(scope,0);
46745 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46746 Type.name(type,"EReference class");
46747}
46748
46749/**
46750 * An element may be an instance of type "EReference class".
46751 */
46752private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46753{
46754 find interpretation(problem,interpretation);
46755 PartialInterpretation.newElements(interpretation,element);
46756 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46757 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46758 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46759 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46760 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46761 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46762 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46763 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46764 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46765 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46766 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46767 neg find scopeDisallowsNewEReference_class(problem, interpretation);
46768 neg find isPrimitive(element);
46769} or {
46770 find interpretation(problem,interpretation);
46771 PartialInterpretation.openWorldElements(interpretation,element);
46772 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46773 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46774 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46775 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46776 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46777 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46778 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46779 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46780 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46781 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46782 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46783 neg find scopeDisallowsNewEReference_class(problem, interpretation);
46784 neg find isPrimitive(element);
46785} or
46786{ find mustInstanceOfEReference_class(problem,interpretation,element); }
46787/**
46788 * An element must be an instance of type "EStructuralFeature class".
46789 */
46790private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46791 Type.name(type,"EStructuralFeature class");
46792 find directInstanceOf(problem,interpretation,element,type);
46793}
46794private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46795 find interpretation(problem,interpretation);
46796 PartialInterpretation.scopes(interpretation,scope);
46797 Scope.targetTypeInterpretation(scope,typeInterpretation);
46798 Scope.maxNewElements(scope,0);
46799 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46800 Type.name(type,"EStructuralFeature class");
46801}
46802
46803/**
46804 * An element may be an instance of type "EStructuralFeature class".
46805 */
46806private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46807{
46808 find interpretation(problem,interpretation);
46809 PartialInterpretation.newElements(interpretation,element);
46810 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46811 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46812 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46813 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46814 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46815 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46816 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46817 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46818 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46819 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46820 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46821 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46822 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
46823 neg find isPrimitive(element);
46824} or {
46825 find interpretation(problem,interpretation);
46826 PartialInterpretation.openWorldElements(interpretation,element);
46827 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46828 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46829 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46830 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46831 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46832 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46833 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46834 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46835 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46836 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46837 neg find mustInstanceOfEReference_class(problem,interpretation,element);
46838 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
46839 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
46840 neg find isPrimitive(element);
46841} or
46842{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
46843/**
46844 * An element must be an instance of type "ETypedElement class".
46845 */
46846private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46847 Type.name(type,"ETypedElement class");
46848 find directInstanceOf(problem,interpretation,element,type);
46849}
46850private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46851 find interpretation(problem,interpretation);
46852 PartialInterpretation.scopes(interpretation,scope);
46853 Scope.targetTypeInterpretation(scope,typeInterpretation);
46854 Scope.maxNewElements(scope,0);
46855 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46856 Type.name(type,"ETypedElement class");
46857}
46858
46859/**
46860 * An element may be an instance of type "ETypedElement class".
46861 */
46862private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46863{
46864 find interpretation(problem,interpretation);
46865 PartialInterpretation.newElements(interpretation,element);
46866 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46867 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46868 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46869 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46870 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46871 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46872 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46873 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46874 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46875 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46876 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46877 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
46878 neg find isPrimitive(element);
46879} or {
46880 find interpretation(problem,interpretation);
46881 PartialInterpretation.openWorldElements(interpretation,element);
46882 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46883 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
46884 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46885 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46886 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
46887 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
46888 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
46889 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
46890 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
46891 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46892 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
46893 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
46894 neg find isPrimitive(element);
46895} or
46896{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
46897/**
46898 * An element must be an instance of type "EStringToStringMapEntry class".
46899 */
46900private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46901 Type.name(type,"EStringToStringMapEntry class");
46902 find directInstanceOf(problem,interpretation,element,type);
46903}
46904private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46905 find interpretation(problem,interpretation);
46906 PartialInterpretation.scopes(interpretation,scope);
46907 Scope.targetTypeInterpretation(scope,typeInterpretation);
46908 Scope.maxNewElements(scope,0);
46909 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46910 Type.name(type,"EStringToStringMapEntry class");
46911}
46912
46913/**
46914 * An element may be an instance of type "EStringToStringMapEntry class".
46915 */
46916private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46917{
46918 find interpretation(problem,interpretation);
46919 PartialInterpretation.newElements(interpretation,element);
46920 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46921 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46922 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46923 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
46924 neg find isPrimitive(element);
46925} or {
46926 find interpretation(problem,interpretation);
46927 PartialInterpretation.openWorldElements(interpretation,element);
46928 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46929 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46930 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46931 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
46932 neg find isPrimitive(element);
46933} or
46934{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
46935/**
46936 * An element must be an instance of type "EGenericType class".
46937 */
46938private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46939 Type.name(type,"EGenericType class");
46940 find directInstanceOf(problem,interpretation,element,type);
46941}
46942private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46943 find interpretation(problem,interpretation);
46944 PartialInterpretation.scopes(interpretation,scope);
46945 Scope.targetTypeInterpretation(scope,typeInterpretation);
46946 Scope.maxNewElements(scope,0);
46947 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46948 Type.name(type,"EGenericType class");
46949}
46950
46951/**
46952 * An element may be an instance of type "EGenericType class".
46953 */
46954private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46955{
46956 find interpretation(problem,interpretation);
46957 PartialInterpretation.newElements(interpretation,element);
46958 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46959 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46960 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46961 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
46962 neg find isPrimitive(element);
46963} or {
46964 find interpretation(problem,interpretation);
46965 PartialInterpretation.openWorldElements(interpretation,element);
46966 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46967 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
46968 neg find mustInstanceOfEObject_class(problem,interpretation,element);
46969 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
46970 neg find isPrimitive(element);
46971} or
46972{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
46973/**
46974 * An element must be an instance of type "ETypeParameter class".
46975 */
46976private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
46977 Type.name(type,"ETypeParameter class");
46978 find directInstanceOf(problem,interpretation,element,type);
46979}
46980private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
46981 find interpretation(problem,interpretation);
46982 PartialInterpretation.scopes(interpretation,scope);
46983 Scope.targetTypeInterpretation(scope,typeInterpretation);
46984 Scope.maxNewElements(scope,0);
46985 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
46986 Type.name(type,"ETypeParameter class");
46987}
46988
46989/**
46990 * An element may be an instance of type "ETypeParameter class".
46991 */
46992private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
46993{
46994 find interpretation(problem,interpretation);
46995 PartialInterpretation.newElements(interpretation,element);
46996 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
46997 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
46998 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
46999 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47000 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47001 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47002 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47003 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47004 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
47005 neg find isPrimitive(element);
47006} or {
47007 find interpretation(problem,interpretation);
47008 PartialInterpretation.openWorldElements(interpretation,element);
47009 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47010 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47011 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47012 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47013 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47014 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47015 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47016 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47017 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
47018 neg find isPrimitive(element);
47019} or
47020{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
47021/**
47022 * An element must be an instance of type "EModelElement class DefinedPart".
47023 */
47024private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47025 Type.name(type,"EModelElement class DefinedPart");
47026 find directInstanceOf(problem,interpretation,element,type);
47027}
47028private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47029 find interpretation(problem,interpretation);
47030 PartialInterpretation.scopes(interpretation,scope);
47031 Scope.targetTypeInterpretation(scope,typeInterpretation);
47032 Scope.maxNewElements(scope,0);
47033 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47034 Type.name(type,"EModelElement class DefinedPart");
47035}
47036
47037/**
47038 * An element may be an instance of type "EModelElement class DefinedPart".
47039 */
47040private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47041{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
47042/**
47043 * An element must be an instance of type "EModelElement class UndefinedPart".
47044 */
47045private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47046 Type.name(type,"EModelElement class UndefinedPart");
47047 find directInstanceOf(problem,interpretation,element,type);
47048}
47049private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47050 find interpretation(problem,interpretation);
47051 PartialInterpretation.scopes(interpretation,scope);
47052 Scope.targetTypeInterpretation(scope,typeInterpretation);
47053 Scope.maxNewElements(scope,0);
47054 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47055 Type.name(type,"EModelElement class UndefinedPart");
47056}
47057
47058/**
47059 * An element may be an instance of type "EModelElement class UndefinedPart".
47060 */
47061private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47062{
47063 find interpretation(problem,interpretation);
47064 PartialInterpretation.newElements(interpretation,element);
47065 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47066 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47067 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47068 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47069 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
47070 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
47071 neg find isPrimitive(element);
47072} or {
47073 find interpretation(problem,interpretation);
47074 PartialInterpretation.openWorldElements(interpretation,element);
47075 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47076 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47077 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47078 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47079 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
47080 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
47081 neg find isPrimitive(element);
47082} or
47083{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
47084/**
47085 * An element must be an instance of type "ENamedElement class DefinedPart".
47086 */
47087private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47088 Type.name(type,"ENamedElement class DefinedPart");
47089 find directInstanceOf(problem,interpretation,element,type);
47090}
47091private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47092 find interpretation(problem,interpretation);
47093 PartialInterpretation.scopes(interpretation,scope);
47094 Scope.targetTypeInterpretation(scope,typeInterpretation);
47095 Scope.maxNewElements(scope,0);
47096 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47097 Type.name(type,"ENamedElement class DefinedPart");
47098}
47099
47100/**
47101 * An element may be an instance of type "ENamedElement class DefinedPart".
47102 */
47103private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47104{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
47105/**
47106 * An element must be an instance of type "ENamedElement class UndefinedPart".
47107 */
47108private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47109 Type.name(type,"ENamedElement class UndefinedPart");
47110 find directInstanceOf(problem,interpretation,element,type);
47111}
47112private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47113 find interpretation(problem,interpretation);
47114 PartialInterpretation.scopes(interpretation,scope);
47115 Scope.targetTypeInterpretation(scope,typeInterpretation);
47116 Scope.maxNewElements(scope,0);
47117 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47118 Type.name(type,"ENamedElement class UndefinedPart");
47119}
47120
47121/**
47122 * An element may be an instance of type "ENamedElement class UndefinedPart".
47123 */
47124private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47125{
47126 find interpretation(problem,interpretation);
47127 PartialInterpretation.newElements(interpretation,element);
47128 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47129 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47130 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47131 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47132 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47133 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47134 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47135 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47136 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47137 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
47138 neg find isPrimitive(element);
47139} or {
47140 find interpretation(problem,interpretation);
47141 PartialInterpretation.openWorldElements(interpretation,element);
47142 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47143 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47144 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47145 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47146 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
47147 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47148 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47149 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47150 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47151 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
47152 neg find isPrimitive(element);
47153} or
47154{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
47155/**
47156 * An element must be an instance of type "EPackage class DefinedPart".
47157 */
47158private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47159 Type.name(type,"EPackage class DefinedPart");
47160 find directInstanceOf(problem,interpretation,element,type);
47161}
47162private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47163 find interpretation(problem,interpretation);
47164 PartialInterpretation.scopes(interpretation,scope);
47165 Scope.targetTypeInterpretation(scope,typeInterpretation);
47166 Scope.maxNewElements(scope,0);
47167 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47168 Type.name(type,"EPackage class DefinedPart");
47169}
47170
47171/**
47172 * An element may be an instance of type "EPackage class DefinedPart".
47173 */
47174private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47175{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
47176/**
47177 * An element must be an instance of type "EPackage class UndefinedPart".
47178 */
47179private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
47180 Type.name(type,"EPackage class UndefinedPart");
47181 find directInstanceOf(problem,interpretation,element,type);
47182}
47183private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
47184 find interpretation(problem,interpretation);
47185 PartialInterpretation.scopes(interpretation,scope);
47186 Scope.targetTypeInterpretation(scope,typeInterpretation);
47187 Scope.maxNewElements(scope,0);
47188 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
47189 Type.name(type,"EPackage class UndefinedPart");
47190}
47191
47192/**
47193 * An element may be an instance of type "EPackage class UndefinedPart".
47194 */
47195private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
47196{
47197 find interpretation(problem,interpretation);
47198 PartialInterpretation.newElements(interpretation,element);
47199 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47200 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47201 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47202 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47203 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47204 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47205 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47206 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47207 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
47208 neg find isPrimitive(element);
47209} or {
47210 find interpretation(problem,interpretation);
47211 PartialInterpretation.openWorldElements(interpretation,element);
47212 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
47213 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
47214 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
47215 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
47216 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
47217 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
47218 neg find mustInstanceOfEObject_class(problem,interpretation,element);
47219 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
47220 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
47221 neg find isPrimitive(element);
47222} or
47223{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
47224
47225//////////
47226// 1.2 Relation Declaration Indexers
47227//////////
47228/**
47229 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
47230 */
47231private pattern mustInRelationeAttributeType_reference_EAttribute(
47232 problem:LogicProblem, interpretation:PartialInterpretation,
47233 source: DefinedElement, target:DefinedElement)
47234{
47235 find interpretation(problem,interpretation);
47236 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47237 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
47238 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47239 BinaryElementRelationLink.param1(link,source);
47240 BinaryElementRelationLink.param2(link,target);
47241}
47242/**
47243 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
47244 */
47245private pattern mayInRelationeAttributeType_reference_EAttribute(
47246 problem:LogicProblem, interpretation:PartialInterpretation,
47247 source: DefinedElement, target:DefinedElement)
47248{
47249 find interpretation(problem,interpretation);
47250 // The two endpoint of the link have to exist
47251 find mayExist(problem, interpretation, source);
47252 find mayExist(problem, interpretation, target);
47253 // Type consistency
47254 find mayInstanceOfEAttribute_class(problem,interpretation,source);
47255 find mayInstanceOfEDataType_class(problem,interpretation,target);
47256 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47257 // the upper bound of the multiplicity should be considered.
47258 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
47259 check(numberOfExistingReferences < 1);
47260} or {
47261 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
47262}
47263/**
47264 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
47265 */
47266private pattern mustInRelationdetails_reference_EAnnotation(
47267 problem:LogicProblem, interpretation:PartialInterpretation,
47268 source: DefinedElement, target:DefinedElement)
47269{
47270 find interpretation(problem,interpretation);
47271 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47272 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
47273 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47274 BinaryElementRelationLink.param1(link,source);
47275 BinaryElementRelationLink.param2(link,target);
47276}
47277/**
47278 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
47279 */
47280private pattern mayInRelationdetails_reference_EAnnotation(
47281 problem:LogicProblem, interpretation:PartialInterpretation,
47282 source: DefinedElement, target:DefinedElement)
47283{
47284 find interpretation(problem,interpretation);
47285 // The two endpoint of the link have to exist
47286 find mayExist(problem, interpretation, source);
47287 find mayExist(problem, interpretation, target);
47288 // Type consistency
47289 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47290 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
47291 // The reference is containment, then a new reference cannot be create if:
47292 // 1. Multiple parents
47293 neg find mustContains4(problem,interpretation,_,target);
47294 // 2. Circle in the containment hierarchy
47295 neg find mustTransitiveContains(source,target);
47296} or {
47297 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
47298}
47299/**
47300 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
47301 */
47302private pattern mustInRelationeModelElement_reference_EAnnotation(
47303 problem:LogicProblem, interpretation:PartialInterpretation,
47304 source: DefinedElement, target:DefinedElement)
47305{
47306 find interpretation(problem,interpretation);
47307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
47309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47310 BinaryElementRelationLink.param1(link,source);
47311 BinaryElementRelationLink.param2(link,target);
47312}
47313/**
47314 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
47315 */
47316private pattern mayInRelationeModelElement_reference_EAnnotation(
47317 problem:LogicProblem, interpretation:PartialInterpretation,
47318 source: DefinedElement, target:DefinedElement)
47319{
47320 find interpretation(problem,interpretation);
47321 // The two endpoint of the link have to exist
47322 find mayExist(problem, interpretation, source);
47323 find mayExist(problem, interpretation, target);
47324 // Type consistency
47325 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47326 find mayInstanceOfEModelElement_class(problem,interpretation,target);
47327 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47328 // the upper bound of the multiplicity should be considered.
47329 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
47330 check(numberOfExistingReferences < 1);
47331 // The eOpposite of the reference is containment, then a referene cannot be created if
47332 // 1. Multiple parents
47333 neg find mustContains4(problem,interpretation,source,_);
47334 // 2. Circle in the containment hierarchy
47335 neg find mustTransitiveContains(source,target);
47336} or {
47337 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
47338}
47339/**
47340 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
47341 */
47342private pattern mustInRelationcontents_reference_EAnnotation(
47343 problem:LogicProblem, interpretation:PartialInterpretation,
47344 source: DefinedElement, target:DefinedElement)
47345{
47346 find interpretation(problem,interpretation);
47347 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47348 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
47349 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47350 BinaryElementRelationLink.param1(link,source);
47351 BinaryElementRelationLink.param2(link,target);
47352}
47353/**
47354 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
47355 */
47356private pattern mayInRelationcontents_reference_EAnnotation(
47357 problem:LogicProblem, interpretation:PartialInterpretation,
47358 source: DefinedElement, target:DefinedElement)
47359{
47360 find interpretation(problem,interpretation);
47361 // The two endpoint of the link have to exist
47362 find mayExist(problem, interpretation, source);
47363 find mayExist(problem, interpretation, target);
47364 // Type consistency
47365 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47366 find mayInstanceOfEObject_class(problem,interpretation,target);
47367 // The reference is containment, then a new reference cannot be create if:
47368 // 1. Multiple parents
47369 neg find mustContains4(problem,interpretation,_,target);
47370 // 2. Circle in the containment hierarchy
47371 neg find mustTransitiveContains(source,target);
47372} or {
47373 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
47374}
47375/**
47376 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
47377 */
47378private pattern mustInRelationreferences_reference_EAnnotation(
47379 problem:LogicProblem, interpretation:PartialInterpretation,
47380 source: DefinedElement, target:DefinedElement)
47381{
47382 find interpretation(problem,interpretation);
47383 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47384 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
47385 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47386 BinaryElementRelationLink.param1(link,source);
47387 BinaryElementRelationLink.param2(link,target);
47388}
47389/**
47390 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
47391 */
47392private pattern mayInRelationreferences_reference_EAnnotation(
47393 problem:LogicProblem, interpretation:PartialInterpretation,
47394 source: DefinedElement, target:DefinedElement)
47395{
47396 find interpretation(problem,interpretation);
47397 // The two endpoint of the link have to exist
47398 find mayExist(problem, interpretation, source);
47399 find mayExist(problem, interpretation, target);
47400 // Type consistency
47401 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
47402 find mayInstanceOfEObject_class(problem,interpretation,target);
47403} or {
47404 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
47405}
47406/**
47407 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
47408 */
47409private pattern mustInRelationeSuperTypes_reference_EClass(
47410 problem:LogicProblem, interpretation:PartialInterpretation,
47411 source: DefinedElement, target:DefinedElement)
47412{
47413 find interpretation(problem,interpretation);
47414 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47415 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
47416 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47417 BinaryElementRelationLink.param1(link,source);
47418 BinaryElementRelationLink.param2(link,target);
47419}
47420/**
47421 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
47422 */
47423private pattern mayInRelationeSuperTypes_reference_EClass(
47424 problem:LogicProblem, interpretation:PartialInterpretation,
47425 source: DefinedElement, target:DefinedElement)
47426{
47427 find interpretation(problem,interpretation);
47428 // The two endpoint of the link have to exist
47429 find mayExist(problem, interpretation, source);
47430 find mayExist(problem, interpretation, target);
47431 // Type consistency
47432 find mayInstanceOfEClass_class(problem,interpretation,source);
47433 find mayInstanceOfEClass_class(problem,interpretation,target);
47434} or {
47435 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
47436}
47437/**
47438 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
47439 */
47440private pattern mustInRelationeOperations_reference_EClass(
47441 problem:LogicProblem, interpretation:PartialInterpretation,
47442 source: DefinedElement, target:DefinedElement)
47443{
47444 find interpretation(problem,interpretation);
47445 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47446 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
47447 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47448 BinaryElementRelationLink.param1(link,source);
47449 BinaryElementRelationLink.param2(link,target);
47450}
47451/**
47452 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
47453 */
47454private pattern mayInRelationeOperations_reference_EClass(
47455 problem:LogicProblem, interpretation:PartialInterpretation,
47456 source: DefinedElement, target:DefinedElement)
47457{
47458 find interpretation(problem,interpretation);
47459 // The two endpoint of the link have to exist
47460 find mayExist(problem, interpretation, source);
47461 find mayExist(problem, interpretation, target);
47462 // Type consistency
47463 find mayInstanceOfEClass_class(problem,interpretation,source);
47464 find mayInstanceOfEOperation_class(problem,interpretation,target);
47465 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47466 // the upper bound of the opposite reference multiplicity should be considered.
47467 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
47468 check(numberOfExistingOppositeReferences < 1);
47469 // The reference is containment, then a new reference cannot be create if:
47470 // 1. Multiple parents
47471 neg find mustContains4(problem,interpretation,_,target);
47472 // 2. Circle in the containment hierarchy
47473 neg find mustTransitiveContains(source,target);
47474} or {
47475 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
47476}
47477/**
47478 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
47479 */
47480private pattern mustInRelationeAllAttributes_reference_EClass(
47481 problem:LogicProblem, interpretation:PartialInterpretation,
47482 source: DefinedElement, target:DefinedElement)
47483{
47484 find interpretation(problem,interpretation);
47485 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47486 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
47487 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47488 BinaryElementRelationLink.param1(link,source);
47489 BinaryElementRelationLink.param2(link,target);
47490}
47491/**
47492 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
47493 */
47494private pattern mayInRelationeAllAttributes_reference_EClass(
47495 problem:LogicProblem, interpretation:PartialInterpretation,
47496 source: DefinedElement, target:DefinedElement)
47497{
47498 find interpretation(problem,interpretation);
47499 // The two endpoint of the link have to exist
47500 find mayExist(problem, interpretation, source);
47501 find mayExist(problem, interpretation, target);
47502 // Type consistency
47503 find mayInstanceOfEClass_class(problem,interpretation,source);
47504 find mayInstanceOfEAttribute_class(problem,interpretation,target);
47505} or {
47506 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
47507}
47508/**
47509 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
47510 */
47511private pattern mustInRelationeAllReferences_reference_EClass(
47512 problem:LogicProblem, interpretation:PartialInterpretation,
47513 source: DefinedElement, target:DefinedElement)
47514{
47515 find interpretation(problem,interpretation);
47516 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47517 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
47518 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47519 BinaryElementRelationLink.param1(link,source);
47520 BinaryElementRelationLink.param2(link,target);
47521}
47522/**
47523 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
47524 */
47525private pattern mayInRelationeAllReferences_reference_EClass(
47526 problem:LogicProblem, interpretation:PartialInterpretation,
47527 source: DefinedElement, target:DefinedElement)
47528{
47529 find interpretation(problem,interpretation);
47530 // The two endpoint of the link have to exist
47531 find mayExist(problem, interpretation, source);
47532 find mayExist(problem, interpretation, target);
47533 // Type consistency
47534 find mayInstanceOfEClass_class(problem,interpretation,source);
47535 find mayInstanceOfEReference_class(problem,interpretation,target);
47536} or {
47537 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
47538}
47539/**
47540 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
47541 */
47542private pattern mustInRelationeReferences_reference_EClass(
47543 problem:LogicProblem, interpretation:PartialInterpretation,
47544 source: DefinedElement, target:DefinedElement)
47545{
47546 find interpretation(problem,interpretation);
47547 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47548 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
47549 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47550 BinaryElementRelationLink.param1(link,source);
47551 BinaryElementRelationLink.param2(link,target);
47552}
47553/**
47554 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
47555 */
47556private pattern mayInRelationeReferences_reference_EClass(
47557 problem:LogicProblem, interpretation:PartialInterpretation,
47558 source: DefinedElement, target:DefinedElement)
47559{
47560 find interpretation(problem,interpretation);
47561 // The two endpoint of the link have to exist
47562 find mayExist(problem, interpretation, source);
47563 find mayExist(problem, interpretation, target);
47564 // Type consistency
47565 find mayInstanceOfEClass_class(problem,interpretation,source);
47566 find mayInstanceOfEReference_class(problem,interpretation,target);
47567} or {
47568 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
47569}
47570/**
47571 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
47572 */
47573private pattern mustInRelationeAttributes_reference_EClass(
47574 problem:LogicProblem, interpretation:PartialInterpretation,
47575 source: DefinedElement, target:DefinedElement)
47576{
47577 find interpretation(problem,interpretation);
47578 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47579 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
47580 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47581 BinaryElementRelationLink.param1(link,source);
47582 BinaryElementRelationLink.param2(link,target);
47583}
47584/**
47585 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
47586 */
47587private pattern mayInRelationeAttributes_reference_EClass(
47588 problem:LogicProblem, interpretation:PartialInterpretation,
47589 source: DefinedElement, target:DefinedElement)
47590{
47591 find interpretation(problem,interpretation);
47592 // The two endpoint of the link have to exist
47593 find mayExist(problem, interpretation, source);
47594 find mayExist(problem, interpretation, target);
47595 // Type consistency
47596 find mayInstanceOfEClass_class(problem,interpretation,source);
47597 find mayInstanceOfEAttribute_class(problem,interpretation,target);
47598} or {
47599 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
47600}
47601/**
47602 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
47603 */
47604private pattern mustInRelationeAllContainments_reference_EClass(
47605 problem:LogicProblem, interpretation:PartialInterpretation,
47606 source: DefinedElement, target:DefinedElement)
47607{
47608 find interpretation(problem,interpretation);
47609 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47610 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
47611 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47612 BinaryElementRelationLink.param1(link,source);
47613 BinaryElementRelationLink.param2(link,target);
47614}
47615/**
47616 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
47617 */
47618private pattern mayInRelationeAllContainments_reference_EClass(
47619 problem:LogicProblem, interpretation:PartialInterpretation,
47620 source: DefinedElement, target:DefinedElement)
47621{
47622 find interpretation(problem,interpretation);
47623 // The two endpoint of the link have to exist
47624 find mayExist(problem, interpretation, source);
47625 find mayExist(problem, interpretation, target);
47626 // Type consistency
47627 find mayInstanceOfEClass_class(problem,interpretation,source);
47628 find mayInstanceOfEReference_class(problem,interpretation,target);
47629} or {
47630 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
47631}
47632/**
47633 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
47634 */
47635private pattern mustInRelationeAllOperations_reference_EClass(
47636 problem:LogicProblem, interpretation:PartialInterpretation,
47637 source: DefinedElement, target:DefinedElement)
47638{
47639 find interpretation(problem,interpretation);
47640 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47641 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
47642 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47643 BinaryElementRelationLink.param1(link,source);
47644 BinaryElementRelationLink.param2(link,target);
47645}
47646/**
47647 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
47648 */
47649private pattern mayInRelationeAllOperations_reference_EClass(
47650 problem:LogicProblem, interpretation:PartialInterpretation,
47651 source: DefinedElement, target:DefinedElement)
47652{
47653 find interpretation(problem,interpretation);
47654 // The two endpoint of the link have to exist
47655 find mayExist(problem, interpretation, source);
47656 find mayExist(problem, interpretation, target);
47657 // Type consistency
47658 find mayInstanceOfEClass_class(problem,interpretation,source);
47659 find mayInstanceOfEOperation_class(problem,interpretation,target);
47660} or {
47661 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
47662}
47663/**
47664 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
47665 */
47666private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
47667 problem:LogicProblem, interpretation:PartialInterpretation,
47668 source: DefinedElement, target:DefinedElement)
47669{
47670 find interpretation(problem,interpretation);
47671 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47672 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
47673 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47674 BinaryElementRelationLink.param1(link,source);
47675 BinaryElementRelationLink.param2(link,target);
47676}
47677/**
47678 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
47679 */
47680private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
47681 problem:LogicProblem, interpretation:PartialInterpretation,
47682 source: DefinedElement, target:DefinedElement)
47683{
47684 find interpretation(problem,interpretation);
47685 // The two endpoint of the link have to exist
47686 find mayExist(problem, interpretation, source);
47687 find mayExist(problem, interpretation, target);
47688 // Type consistency
47689 find mayInstanceOfEClass_class(problem,interpretation,source);
47690 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
47691} or {
47692 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
47693}
47694/**
47695 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
47696 */
47697private pattern mustInRelationeAllSuperTypes_reference_EClass(
47698 problem:LogicProblem, interpretation:PartialInterpretation,
47699 source: DefinedElement, target:DefinedElement)
47700{
47701 find interpretation(problem,interpretation);
47702 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47703 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
47704 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47705 BinaryElementRelationLink.param1(link,source);
47706 BinaryElementRelationLink.param2(link,target);
47707}
47708/**
47709 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
47710 */
47711private pattern mayInRelationeAllSuperTypes_reference_EClass(
47712 problem:LogicProblem, interpretation:PartialInterpretation,
47713 source: DefinedElement, target:DefinedElement)
47714{
47715 find interpretation(problem,interpretation);
47716 // The two endpoint of the link have to exist
47717 find mayExist(problem, interpretation, source);
47718 find mayExist(problem, interpretation, target);
47719 // Type consistency
47720 find mayInstanceOfEClass_class(problem,interpretation,source);
47721 find mayInstanceOfEClass_class(problem,interpretation,target);
47722} or {
47723 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
47724}
47725/**
47726 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
47727 */
47728private pattern mustInRelationeIDAttribute_reference_EClass(
47729 problem:LogicProblem, interpretation:PartialInterpretation,
47730 source: DefinedElement, target:DefinedElement)
47731{
47732 find interpretation(problem,interpretation);
47733 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47734 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
47735 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47736 BinaryElementRelationLink.param1(link,source);
47737 BinaryElementRelationLink.param2(link,target);
47738}
47739/**
47740 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
47741 */
47742private pattern mayInRelationeIDAttribute_reference_EClass(
47743 problem:LogicProblem, interpretation:PartialInterpretation,
47744 source: DefinedElement, target:DefinedElement)
47745{
47746 find interpretation(problem,interpretation);
47747 // The two endpoint of the link have to exist
47748 find mayExist(problem, interpretation, source);
47749 find mayExist(problem, interpretation, target);
47750 // Type consistency
47751 find mayInstanceOfEClass_class(problem,interpretation,source);
47752 find mayInstanceOfEAttribute_class(problem,interpretation,target);
47753 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47754 // the upper bound of the multiplicity should be considered.
47755 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
47756 check(numberOfExistingReferences < 1);
47757} or {
47758 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
47759}
47760/**
47761 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
47762 */
47763private pattern mustInRelationeStructuralFeatures_reference_EClass(
47764 problem:LogicProblem, interpretation:PartialInterpretation,
47765 source: DefinedElement, target:DefinedElement)
47766{
47767 find interpretation(problem,interpretation);
47768 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47769 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
47770 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47771 BinaryElementRelationLink.param1(link,source);
47772 BinaryElementRelationLink.param2(link,target);
47773}
47774/**
47775 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
47776 */
47777private pattern mayInRelationeStructuralFeatures_reference_EClass(
47778 problem:LogicProblem, interpretation:PartialInterpretation,
47779 source: DefinedElement, target:DefinedElement)
47780{
47781 find interpretation(problem,interpretation);
47782 // The two endpoint of the link have to exist
47783 find mayExist(problem, interpretation, source);
47784 find mayExist(problem, interpretation, target);
47785 // Type consistency
47786 find mayInstanceOfEClass_class(problem,interpretation,source);
47787 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
47788 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47789 // the upper bound of the opposite reference multiplicity should be considered.
47790 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
47791 check(numberOfExistingOppositeReferences < 1);
47792 // The reference is containment, then a new reference cannot be create if:
47793 // 1. Multiple parents
47794 neg find mustContains4(problem,interpretation,_,target);
47795 // 2. Circle in the containment hierarchy
47796 neg find mustTransitiveContains(source,target);
47797} or {
47798 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
47799}
47800/**
47801 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
47802 */
47803private pattern mustInRelationeGenericSuperTypes_reference_EClass(
47804 problem:LogicProblem, interpretation:PartialInterpretation,
47805 source: DefinedElement, target:DefinedElement)
47806{
47807 find interpretation(problem,interpretation);
47808 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47809 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
47810 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47811 BinaryElementRelationLink.param1(link,source);
47812 BinaryElementRelationLink.param2(link,target);
47813}
47814/**
47815 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
47816 */
47817private pattern mayInRelationeGenericSuperTypes_reference_EClass(
47818 problem:LogicProblem, interpretation:PartialInterpretation,
47819 source: DefinedElement, target:DefinedElement)
47820{
47821 find interpretation(problem,interpretation);
47822 // The two endpoint of the link have to exist
47823 find mayExist(problem, interpretation, source);
47824 find mayExist(problem, interpretation, target);
47825 // Type consistency
47826 find mayInstanceOfEClass_class(problem,interpretation,source);
47827 find mayInstanceOfEGenericType_class(problem,interpretation,target);
47828 // The reference is containment, then a new reference cannot be create if:
47829 // 1. Multiple parents
47830 neg find mustContains4(problem,interpretation,_,target);
47831 // 2. Circle in the containment hierarchy
47832 neg find mustTransitiveContains(source,target);
47833} or {
47834 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
47835}
47836/**
47837 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
47838 */
47839private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
47840 problem:LogicProblem, interpretation:PartialInterpretation,
47841 source: DefinedElement, target:DefinedElement)
47842{
47843 find interpretation(problem,interpretation);
47844 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47845 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
47846 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47847 BinaryElementRelationLink.param1(link,source);
47848 BinaryElementRelationLink.param2(link,target);
47849}
47850/**
47851 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
47852 */
47853private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
47854 problem:LogicProblem, interpretation:PartialInterpretation,
47855 source: DefinedElement, target:DefinedElement)
47856{
47857 find interpretation(problem,interpretation);
47858 // The two endpoint of the link have to exist
47859 find mayExist(problem, interpretation, source);
47860 find mayExist(problem, interpretation, target);
47861 // Type consistency
47862 find mayInstanceOfEClass_class(problem,interpretation,source);
47863 find mayInstanceOfEGenericType_class(problem,interpretation,target);
47864} or {
47865 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
47866}
47867/**
47868 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
47869 */
47870private pattern mustInRelationePackage_reference_EClassifier(
47871 problem:LogicProblem, interpretation:PartialInterpretation,
47872 source: DefinedElement, target:DefinedElement)
47873{
47874 find interpretation(problem,interpretation);
47875 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47876 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
47877 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47878 BinaryElementRelationLink.param1(link,source);
47879 BinaryElementRelationLink.param2(link,target);
47880}
47881/**
47882 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
47883 */
47884private pattern mayInRelationePackage_reference_EClassifier(
47885 problem:LogicProblem, interpretation:PartialInterpretation,
47886 source: DefinedElement, target:DefinedElement)
47887{
47888 find interpretation(problem,interpretation);
47889 // The two endpoint of the link have to exist
47890 find mayExist(problem, interpretation, source);
47891 find mayExist(problem, interpretation, target);
47892 // Type consistency
47893 find mayInstanceOfEClassifier_class(problem,interpretation,source);
47894 find mayInstanceOfEPackage_class(problem,interpretation,target);
47895 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
47896 // the upper bound of the multiplicity should be considered.
47897 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
47898 check(numberOfExistingReferences < 1);
47899 // The eOpposite of the reference is containment, then a referene cannot be created if
47900 // 1. Multiple parents
47901 neg find mustContains4(problem,interpretation,source,_);
47902 // 2. Circle in the containment hierarchy
47903 neg find mustTransitiveContains(source,target);
47904} or {
47905 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
47906}
47907/**
47908 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
47909 */
47910private pattern mustInRelationeTypeParameters_reference_EClassifier(
47911 problem:LogicProblem, interpretation:PartialInterpretation,
47912 source: DefinedElement, target:DefinedElement)
47913{
47914 find interpretation(problem,interpretation);
47915 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47916 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
47917 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47918 BinaryElementRelationLink.param1(link,source);
47919 BinaryElementRelationLink.param2(link,target);
47920}
47921/**
47922 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
47923 */
47924private pattern mayInRelationeTypeParameters_reference_EClassifier(
47925 problem:LogicProblem, interpretation:PartialInterpretation,
47926 source: DefinedElement, target:DefinedElement)
47927{
47928 find interpretation(problem,interpretation);
47929 // The two endpoint of the link have to exist
47930 find mayExist(problem, interpretation, source);
47931 find mayExist(problem, interpretation, target);
47932 // Type consistency
47933 find mayInstanceOfEClassifier_class(problem,interpretation,source);
47934 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
47935 // The reference is containment, then a new reference cannot be create if:
47936 // 1. Multiple parents
47937 neg find mustContains4(problem,interpretation,_,target);
47938 // 2. Circle in the containment hierarchy
47939 neg find mustTransitiveContains(source,target);
47940} or {
47941 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
47942}
47943/**
47944 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
47945 */
47946private pattern mustInRelationeLiterals_reference_EEnum(
47947 problem:LogicProblem, interpretation:PartialInterpretation,
47948 source: DefinedElement, target:DefinedElement)
47949{
47950 find interpretation(problem,interpretation);
47951 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47952 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
47953 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47954 BinaryElementRelationLink.param1(link,source);
47955 BinaryElementRelationLink.param2(link,target);
47956}
47957/**
47958 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
47959 */
47960private pattern mayInRelationeLiterals_reference_EEnum(
47961 problem:LogicProblem, interpretation:PartialInterpretation,
47962 source: DefinedElement, target:DefinedElement)
47963{
47964 find interpretation(problem,interpretation);
47965 // The two endpoint of the link have to exist
47966 find mayExist(problem, interpretation, source);
47967 find mayExist(problem, interpretation, target);
47968 // Type consistency
47969 find mayInstanceOfEEnum_class(problem,interpretation,source);
47970 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
47971 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
47972 // the upper bound of the opposite reference multiplicity should be considered.
47973 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
47974 check(numberOfExistingOppositeReferences < 1);
47975 // The reference is containment, then a new reference cannot be create if:
47976 // 1. Multiple parents
47977 neg find mustContains4(problem,interpretation,_,target);
47978 // 2. Circle in the containment hierarchy
47979 neg find mustTransitiveContains(source,target);
47980} or {
47981 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
47982}
47983/**
47984 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
47985 */
47986private pattern mustInRelationeEnum_reference_EEnumLiteral(
47987 problem:LogicProblem, interpretation:PartialInterpretation,
47988 source: DefinedElement, target:DefinedElement)
47989{
47990 find interpretation(problem,interpretation);
47991 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
47992 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
47993 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
47994 BinaryElementRelationLink.param1(link,source);
47995 BinaryElementRelationLink.param2(link,target);
47996}
47997/**
47998 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
47999 */
48000private pattern mayInRelationeEnum_reference_EEnumLiteral(
48001 problem:LogicProblem, interpretation:PartialInterpretation,
48002 source: DefinedElement, target:DefinedElement)
48003{
48004 find interpretation(problem,interpretation);
48005 // The two endpoint of the link have to exist
48006 find mayExist(problem, interpretation, source);
48007 find mayExist(problem, interpretation, target);
48008 // Type consistency
48009 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
48010 find mayInstanceOfEEnum_class(problem,interpretation,target);
48011 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48012 // the upper bound of the multiplicity should be considered.
48013 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
48014 check(numberOfExistingReferences < 1);
48015 // The eOpposite of the reference is containment, then a referene cannot be created if
48016 // 1. Multiple parents
48017 neg find mustContains4(problem,interpretation,source,_);
48018 // 2. Circle in the containment hierarchy
48019 neg find mustTransitiveContains(source,target);
48020} or {
48021 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
48022}
48023/**
48024 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
48025 */
48026private pattern mustInRelationeAnnotations_reference_EModelElement(
48027 problem:LogicProblem, interpretation:PartialInterpretation,
48028 source: DefinedElement, target:DefinedElement)
48029{
48030 find interpretation(problem,interpretation);
48031 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48032 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
48033 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48034 BinaryElementRelationLink.param1(link,source);
48035 BinaryElementRelationLink.param2(link,target);
48036}
48037/**
48038 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
48039 */
48040private pattern mayInRelationeAnnotations_reference_EModelElement(
48041 problem:LogicProblem, interpretation:PartialInterpretation,
48042 source: DefinedElement, target:DefinedElement)
48043{
48044 find interpretation(problem,interpretation);
48045 // The two endpoint of the link have to exist
48046 find mayExist(problem, interpretation, source);
48047 find mayExist(problem, interpretation, target);
48048 // Type consistency
48049 find mayInstanceOfEModelElement_class(problem,interpretation,source);
48050 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
48051 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48052 // the upper bound of the opposite reference multiplicity should be considered.
48053 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
48054 check(numberOfExistingOppositeReferences < 1);
48055 // The reference is containment, then a new reference cannot be create if:
48056 // 1. Multiple parents
48057 neg find mustContains4(problem,interpretation,_,target);
48058 // 2. Circle in the containment hierarchy
48059 neg find mustTransitiveContains(source,target);
48060} or {
48061 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
48062}
48063/**
48064 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
48065 */
48066private pattern mustInRelationeContainingClass_reference_EOperation(
48067 problem:LogicProblem, interpretation:PartialInterpretation,
48068 source: DefinedElement, target:DefinedElement)
48069{
48070 find interpretation(problem,interpretation);
48071 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48072 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
48073 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48074 BinaryElementRelationLink.param1(link,source);
48075 BinaryElementRelationLink.param2(link,target);
48076}
48077/**
48078 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
48079 */
48080private pattern mayInRelationeContainingClass_reference_EOperation(
48081 problem:LogicProblem, interpretation:PartialInterpretation,
48082 source: DefinedElement, target:DefinedElement)
48083{
48084 find interpretation(problem,interpretation);
48085 // The two endpoint of the link have to exist
48086 find mayExist(problem, interpretation, source);
48087 find mayExist(problem, interpretation, target);
48088 // Type consistency
48089 find mayInstanceOfEOperation_class(problem,interpretation,source);
48090 find mayInstanceOfEClass_class(problem,interpretation,target);
48091 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48092 // the upper bound of the multiplicity should be considered.
48093 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
48094 check(numberOfExistingReferences < 1);
48095 // The eOpposite of the reference is containment, then a referene cannot be created if
48096 // 1. Multiple parents
48097 neg find mustContains4(problem,interpretation,source,_);
48098 // 2. Circle in the containment hierarchy
48099 neg find mustTransitiveContains(source,target);
48100} or {
48101 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
48102}
48103/**
48104 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
48105 */
48106private pattern mustInRelationeTypeParameters_reference_EOperation(
48107 problem:LogicProblem, interpretation:PartialInterpretation,
48108 source: DefinedElement, target:DefinedElement)
48109{
48110 find interpretation(problem,interpretation);
48111 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48112 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
48113 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48114 BinaryElementRelationLink.param1(link,source);
48115 BinaryElementRelationLink.param2(link,target);
48116}
48117/**
48118 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
48119 */
48120private pattern mayInRelationeTypeParameters_reference_EOperation(
48121 problem:LogicProblem, interpretation:PartialInterpretation,
48122 source: DefinedElement, target:DefinedElement)
48123{
48124 find interpretation(problem,interpretation);
48125 // The two endpoint of the link have to exist
48126 find mayExist(problem, interpretation, source);
48127 find mayExist(problem, interpretation, target);
48128 // Type consistency
48129 find mayInstanceOfEOperation_class(problem,interpretation,source);
48130 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
48131 // The reference is containment, then a new reference cannot be create if:
48132 // 1. Multiple parents
48133 neg find mustContains4(problem,interpretation,_,target);
48134 // 2. Circle in the containment hierarchy
48135 neg find mustTransitiveContains(source,target);
48136} or {
48137 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
48138}
48139/**
48140 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
48141 */
48142private pattern mustInRelationeParameters_reference_EOperation(
48143 problem:LogicProblem, interpretation:PartialInterpretation,
48144 source: DefinedElement, target:DefinedElement)
48145{
48146 find interpretation(problem,interpretation);
48147 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48148 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
48149 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48150 BinaryElementRelationLink.param1(link,source);
48151 BinaryElementRelationLink.param2(link,target);
48152}
48153/**
48154 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
48155 */
48156private pattern mayInRelationeParameters_reference_EOperation(
48157 problem:LogicProblem, interpretation:PartialInterpretation,
48158 source: DefinedElement, target:DefinedElement)
48159{
48160 find interpretation(problem,interpretation);
48161 // The two endpoint of the link have to exist
48162 find mayExist(problem, interpretation, source);
48163 find mayExist(problem, interpretation, target);
48164 // Type consistency
48165 find mayInstanceOfEOperation_class(problem,interpretation,source);
48166 find mayInstanceOfEParameter_class(problem,interpretation,target);
48167 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48168 // the upper bound of the opposite reference multiplicity should be considered.
48169 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
48170 check(numberOfExistingOppositeReferences < 1);
48171 // The reference is containment, then a new reference cannot be create if:
48172 // 1. Multiple parents
48173 neg find mustContains4(problem,interpretation,_,target);
48174 // 2. Circle in the containment hierarchy
48175 neg find mustTransitiveContains(source,target);
48176} or {
48177 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
48178}
48179/**
48180 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
48181 */
48182private pattern mustInRelationeExceptions_reference_EOperation(
48183 problem:LogicProblem, interpretation:PartialInterpretation,
48184 source: DefinedElement, target:DefinedElement)
48185{
48186 find interpretation(problem,interpretation);
48187 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48188 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
48189 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48190 BinaryElementRelationLink.param1(link,source);
48191 BinaryElementRelationLink.param2(link,target);
48192}
48193/**
48194 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
48195 */
48196private pattern mayInRelationeExceptions_reference_EOperation(
48197 problem:LogicProblem, interpretation:PartialInterpretation,
48198 source: DefinedElement, target:DefinedElement)
48199{
48200 find interpretation(problem,interpretation);
48201 // The two endpoint of the link have to exist
48202 find mayExist(problem, interpretation, source);
48203 find mayExist(problem, interpretation, target);
48204 // Type consistency
48205 find mayInstanceOfEOperation_class(problem,interpretation,source);
48206 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48207} or {
48208 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
48209}
48210/**
48211 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
48212 */
48213private pattern mustInRelationeGenericExceptions_reference_EOperation(
48214 problem:LogicProblem, interpretation:PartialInterpretation,
48215 source: DefinedElement, target:DefinedElement)
48216{
48217 find interpretation(problem,interpretation);
48218 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48219 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
48220 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48221 BinaryElementRelationLink.param1(link,source);
48222 BinaryElementRelationLink.param2(link,target);
48223}
48224/**
48225 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
48226 */
48227private pattern mayInRelationeGenericExceptions_reference_EOperation(
48228 problem:LogicProblem, interpretation:PartialInterpretation,
48229 source: DefinedElement, target:DefinedElement)
48230{
48231 find interpretation(problem,interpretation);
48232 // The two endpoint of the link have to exist
48233 find mayExist(problem, interpretation, source);
48234 find mayExist(problem, interpretation, target);
48235 // Type consistency
48236 find mayInstanceOfEOperation_class(problem,interpretation,source);
48237 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48238 // The reference is containment, then a new reference cannot be create if:
48239 // 1. Multiple parents
48240 neg find mustContains4(problem,interpretation,_,target);
48241 // 2. Circle in the containment hierarchy
48242 neg find mustTransitiveContains(source,target);
48243} or {
48244 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
48245}
48246/**
48247 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
48248 */
48249private pattern mustInRelationeClassifiers_reference_EPackage(
48250 problem:LogicProblem, interpretation:PartialInterpretation,
48251 source: DefinedElement, target:DefinedElement)
48252{
48253 find interpretation(problem,interpretation);
48254 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48255 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
48256 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48257 BinaryElementRelationLink.param1(link,source);
48258 BinaryElementRelationLink.param2(link,target);
48259}
48260/**
48261 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
48262 */
48263private pattern mayInRelationeClassifiers_reference_EPackage(
48264 problem:LogicProblem, interpretation:PartialInterpretation,
48265 source: DefinedElement, target:DefinedElement)
48266{
48267 find interpretation(problem,interpretation);
48268 // The two endpoint of the link have to exist
48269 find mayExist(problem, interpretation, source);
48270 find mayExist(problem, interpretation, target);
48271 // Type consistency
48272 find mayInstanceOfEPackage_class(problem,interpretation,source);
48273 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48274 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48275 // the upper bound of the opposite reference multiplicity should be considered.
48276 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
48277 check(numberOfExistingOppositeReferences < 1);
48278 // The reference is containment, then a new reference cannot be create if:
48279 // 1. Multiple parents
48280 neg find mustContains4(problem,interpretation,_,target);
48281 // 2. Circle in the containment hierarchy
48282 neg find mustTransitiveContains(source,target);
48283} or {
48284 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
48285}
48286/**
48287 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
48288 */
48289private pattern mustInRelationeSubpackages_reference_EPackage(
48290 problem:LogicProblem, interpretation:PartialInterpretation,
48291 source: DefinedElement, target:DefinedElement)
48292{
48293 find interpretation(problem,interpretation);
48294 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48295 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
48296 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48297 BinaryElementRelationLink.param1(link,source);
48298 BinaryElementRelationLink.param2(link,target);
48299}
48300/**
48301 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
48302 */
48303private pattern mayInRelationeSubpackages_reference_EPackage(
48304 problem:LogicProblem, interpretation:PartialInterpretation,
48305 source: DefinedElement, target:DefinedElement)
48306{
48307 find interpretation(problem,interpretation);
48308 // The two endpoint of the link have to exist
48309 find mayExist(problem, interpretation, source);
48310 find mayExist(problem, interpretation, target);
48311 // Type consistency
48312 find mayInstanceOfEPackage_class(problem,interpretation,source);
48313 find mayInstanceOfEPackage_class(problem,interpretation,target);
48314 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
48315 // the upper bound of the opposite reference multiplicity should be considered.
48316 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
48317 check(numberOfExistingOppositeReferences < 1);
48318 // The reference is containment, then a new reference cannot be create if:
48319 // 1. Multiple parents
48320 neg find mustContains4(problem,interpretation,_,target);
48321 // 2. Circle in the containment hierarchy
48322 neg find mustTransitiveContains(source,target);
48323} or {
48324 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
48325}
48326/**
48327 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
48328 */
48329private pattern mustInRelationeSuperPackage_reference_EPackage(
48330 problem:LogicProblem, interpretation:PartialInterpretation,
48331 source: DefinedElement, target:DefinedElement)
48332{
48333 find interpretation(problem,interpretation);
48334 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48335 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
48336 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48337 BinaryElementRelationLink.param1(link,source);
48338 BinaryElementRelationLink.param2(link,target);
48339}
48340/**
48341 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
48342 */
48343private pattern mayInRelationeSuperPackage_reference_EPackage(
48344 problem:LogicProblem, interpretation:PartialInterpretation,
48345 source: DefinedElement, target:DefinedElement)
48346{
48347 find interpretation(problem,interpretation);
48348 // The two endpoint of the link have to exist
48349 find mayExist(problem, interpretation, source);
48350 find mayExist(problem, interpretation, target);
48351 // Type consistency
48352 find mayInstanceOfEPackage_class(problem,interpretation,source);
48353 find mayInstanceOfEPackage_class(problem,interpretation,target);
48354 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48355 // the upper bound of the multiplicity should be considered.
48356 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
48357 check(numberOfExistingReferences < 1);
48358 // The eOpposite of the reference is containment, then a referene cannot be created if
48359 // 1. Multiple parents
48360 neg find mustContains4(problem,interpretation,source,_);
48361 // 2. Circle in the containment hierarchy
48362 neg find mustTransitiveContains(source,target);
48363} or {
48364 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
48365}
48366/**
48367 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
48368 */
48369private pattern mustInRelationeOperation_reference_EParameter(
48370 problem:LogicProblem, interpretation:PartialInterpretation,
48371 source: DefinedElement, target:DefinedElement)
48372{
48373 find interpretation(problem,interpretation);
48374 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48375 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
48376 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48377 BinaryElementRelationLink.param1(link,source);
48378 BinaryElementRelationLink.param2(link,target);
48379}
48380/**
48381 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
48382 */
48383private pattern mayInRelationeOperation_reference_EParameter(
48384 problem:LogicProblem, interpretation:PartialInterpretation,
48385 source: DefinedElement, target:DefinedElement)
48386{
48387 find interpretation(problem,interpretation);
48388 // The two endpoint of the link have to exist
48389 find mayExist(problem, interpretation, source);
48390 find mayExist(problem, interpretation, target);
48391 // Type consistency
48392 find mayInstanceOfEParameter_class(problem,interpretation,source);
48393 find mayInstanceOfEOperation_class(problem,interpretation,target);
48394 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48395 // the upper bound of the multiplicity should be considered.
48396 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
48397 check(numberOfExistingReferences < 1);
48398 // The eOpposite of the reference is containment, then a referene cannot be created if
48399 // 1. Multiple parents
48400 neg find mustContains4(problem,interpretation,source,_);
48401 // 2. Circle in the containment hierarchy
48402 neg find mustTransitiveContains(source,target);
48403} or {
48404 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
48405}
48406/**
48407 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
48408 */
48409private pattern mustInRelationeOpposite_reference_EReference(
48410 problem:LogicProblem, interpretation:PartialInterpretation,
48411 source: DefinedElement, target:DefinedElement)
48412{
48413 find interpretation(problem,interpretation);
48414 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48415 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
48416 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48417 BinaryElementRelationLink.param1(link,source);
48418 BinaryElementRelationLink.param2(link,target);
48419}
48420/**
48421 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
48422 */
48423private pattern mayInRelationeOpposite_reference_EReference(
48424 problem:LogicProblem, interpretation:PartialInterpretation,
48425 source: DefinedElement, target:DefinedElement)
48426{
48427 find interpretation(problem,interpretation);
48428 // The two endpoint of the link have to exist
48429 find mayExist(problem, interpretation, source);
48430 find mayExist(problem, interpretation, target);
48431 // Type consistency
48432 find mayInstanceOfEReference_class(problem,interpretation,source);
48433 find mayInstanceOfEReference_class(problem,interpretation,target);
48434 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48435 // the upper bound of the multiplicity should be considered.
48436 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
48437 check(numberOfExistingReferences < 1);
48438} or {
48439 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
48440}
48441/**
48442 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
48443 */
48444private pattern mustInRelationeReferenceType_reference_EReference(
48445 problem:LogicProblem, interpretation:PartialInterpretation,
48446 source: DefinedElement, target:DefinedElement)
48447{
48448 find interpretation(problem,interpretation);
48449 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48450 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
48451 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48452 BinaryElementRelationLink.param1(link,source);
48453 BinaryElementRelationLink.param2(link,target);
48454}
48455/**
48456 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
48457 */
48458private pattern mayInRelationeReferenceType_reference_EReference(
48459 problem:LogicProblem, interpretation:PartialInterpretation,
48460 source: DefinedElement, target:DefinedElement)
48461{
48462 find interpretation(problem,interpretation);
48463 // The two endpoint of the link have to exist
48464 find mayExist(problem, interpretation, source);
48465 find mayExist(problem, interpretation, target);
48466 // Type consistency
48467 find mayInstanceOfEReference_class(problem,interpretation,source);
48468 find mayInstanceOfEClass_class(problem,interpretation,target);
48469 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48470 // the upper bound of the multiplicity should be considered.
48471 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
48472 check(numberOfExistingReferences < 1);
48473} or {
48474 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
48475}
48476/**
48477 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
48478 */
48479private pattern mustInRelationeKeys_reference_EReference(
48480 problem:LogicProblem, interpretation:PartialInterpretation,
48481 source: DefinedElement, target:DefinedElement)
48482{
48483 find interpretation(problem,interpretation);
48484 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48485 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
48486 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48487 BinaryElementRelationLink.param1(link,source);
48488 BinaryElementRelationLink.param2(link,target);
48489}
48490/**
48491 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
48492 */
48493private pattern mayInRelationeKeys_reference_EReference(
48494 problem:LogicProblem, interpretation:PartialInterpretation,
48495 source: DefinedElement, target:DefinedElement)
48496{
48497 find interpretation(problem,interpretation);
48498 // The two endpoint of the link have to exist
48499 find mayExist(problem, interpretation, source);
48500 find mayExist(problem, interpretation, target);
48501 // Type consistency
48502 find mayInstanceOfEReference_class(problem,interpretation,source);
48503 find mayInstanceOfEAttribute_class(problem,interpretation,target);
48504} or {
48505 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
48506}
48507/**
48508 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
48509 */
48510private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
48511 problem:LogicProblem, interpretation:PartialInterpretation,
48512 source: DefinedElement, target:DefinedElement)
48513{
48514 find interpretation(problem,interpretation);
48515 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48516 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
48517 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48518 BinaryElementRelationLink.param1(link,source);
48519 BinaryElementRelationLink.param2(link,target);
48520}
48521/**
48522 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
48523 */
48524private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
48525 problem:LogicProblem, interpretation:PartialInterpretation,
48526 source: DefinedElement, target:DefinedElement)
48527{
48528 find interpretation(problem,interpretation);
48529 // The two endpoint of the link have to exist
48530 find mayExist(problem, interpretation, source);
48531 find mayExist(problem, interpretation, target);
48532 // Type consistency
48533 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
48534 find mayInstanceOfEClass_class(problem,interpretation,target);
48535 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48536 // the upper bound of the multiplicity should be considered.
48537 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
48538 check(numberOfExistingReferences < 1);
48539 // The eOpposite of the reference is containment, then a referene cannot be created if
48540 // 1. Multiple parents
48541 neg find mustContains4(problem,interpretation,source,_);
48542 // 2. Circle in the containment hierarchy
48543 neg find mustTransitiveContains(source,target);
48544} or {
48545 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
48546}
48547/**
48548 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
48549 */
48550private pattern mustInRelationeType_reference_ETypedElement(
48551 problem:LogicProblem, interpretation:PartialInterpretation,
48552 source: DefinedElement, target:DefinedElement)
48553{
48554 find interpretation(problem,interpretation);
48555 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48556 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
48557 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48558 BinaryElementRelationLink.param1(link,source);
48559 BinaryElementRelationLink.param2(link,target);
48560}
48561/**
48562 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
48563 */
48564private pattern mayInRelationeType_reference_ETypedElement(
48565 problem:LogicProblem, interpretation:PartialInterpretation,
48566 source: DefinedElement, target:DefinedElement)
48567{
48568 find interpretation(problem,interpretation);
48569 // The two endpoint of the link have to exist
48570 find mayExist(problem, interpretation, source);
48571 find mayExist(problem, interpretation, target);
48572 // Type consistency
48573 find mayInstanceOfETypedElement_class(problem,interpretation,source);
48574 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48575 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48576 // the upper bound of the multiplicity should be considered.
48577 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
48578 check(numberOfExistingReferences < 1);
48579} or {
48580 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
48581}
48582/**
48583 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
48584 */
48585private pattern mustInRelationeGenericType_reference_ETypedElement(
48586 problem:LogicProblem, interpretation:PartialInterpretation,
48587 source: DefinedElement, target:DefinedElement)
48588{
48589 find interpretation(problem,interpretation);
48590 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48591 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
48592 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48593 BinaryElementRelationLink.param1(link,source);
48594 BinaryElementRelationLink.param2(link,target);
48595}
48596/**
48597 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
48598 */
48599private pattern mayInRelationeGenericType_reference_ETypedElement(
48600 problem:LogicProblem, interpretation:PartialInterpretation,
48601 source: DefinedElement, target:DefinedElement)
48602{
48603 find interpretation(problem,interpretation);
48604 // The two endpoint of the link have to exist
48605 find mayExist(problem, interpretation, source);
48606 find mayExist(problem, interpretation, target);
48607 // Type consistency
48608 find mayInstanceOfETypedElement_class(problem,interpretation,source);
48609 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48610 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48611 // the upper bound of the multiplicity should be considered.
48612 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
48613 check(numberOfExistingReferences < 1);
48614 // The reference is containment, then a new reference cannot be create if:
48615 // 1. Multiple parents
48616 neg find mustContains4(problem,interpretation,_,target);
48617 // 2. Circle in the containment hierarchy
48618 neg find mustTransitiveContains(source,target);
48619} or {
48620 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
48621}
48622/**
48623 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
48624 */
48625private pattern mustInRelationeUpperBound_reference_EGenericType(
48626 problem:LogicProblem, interpretation:PartialInterpretation,
48627 source: DefinedElement, target:DefinedElement)
48628{
48629 find interpretation(problem,interpretation);
48630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
48632 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48633 BinaryElementRelationLink.param1(link,source);
48634 BinaryElementRelationLink.param2(link,target);
48635}
48636/**
48637 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
48638 */
48639private pattern mayInRelationeUpperBound_reference_EGenericType(
48640 problem:LogicProblem, interpretation:PartialInterpretation,
48641 source: DefinedElement, target:DefinedElement)
48642{
48643 find interpretation(problem,interpretation);
48644 // The two endpoint of the link have to exist
48645 find mayExist(problem, interpretation, source);
48646 find mayExist(problem, interpretation, target);
48647 // Type consistency
48648 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48649 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48650 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48651 // the upper bound of the multiplicity should be considered.
48652 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
48653 check(numberOfExistingReferences < 1);
48654 // The reference is containment, then a new reference cannot be create if:
48655 // 1. Multiple parents
48656 neg find mustContains4(problem,interpretation,_,target);
48657 // 2. Circle in the containment hierarchy
48658 neg find mustTransitiveContains(source,target);
48659} or {
48660 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
48661}
48662/**
48663 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
48664 */
48665private pattern mustInRelationeTypeArguments_reference_EGenericType(
48666 problem:LogicProblem, interpretation:PartialInterpretation,
48667 source: DefinedElement, target:DefinedElement)
48668{
48669 find interpretation(problem,interpretation);
48670 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48671 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
48672 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48673 BinaryElementRelationLink.param1(link,source);
48674 BinaryElementRelationLink.param2(link,target);
48675}
48676/**
48677 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
48678 */
48679private pattern mayInRelationeTypeArguments_reference_EGenericType(
48680 problem:LogicProblem, interpretation:PartialInterpretation,
48681 source: DefinedElement, target:DefinedElement)
48682{
48683 find interpretation(problem,interpretation);
48684 // The two endpoint of the link have to exist
48685 find mayExist(problem, interpretation, source);
48686 find mayExist(problem, interpretation, target);
48687 // Type consistency
48688 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48689 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48690 // The reference is containment, then a new reference cannot be create if:
48691 // 1. Multiple parents
48692 neg find mustContains4(problem,interpretation,_,target);
48693 // 2. Circle in the containment hierarchy
48694 neg find mustTransitiveContains(source,target);
48695} or {
48696 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
48697}
48698/**
48699 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
48700 */
48701private pattern mustInRelationeRawType_reference_EGenericType(
48702 problem:LogicProblem, interpretation:PartialInterpretation,
48703 source: DefinedElement, target:DefinedElement)
48704{
48705 find interpretation(problem,interpretation);
48706 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48707 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
48708 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48709 BinaryElementRelationLink.param1(link,source);
48710 BinaryElementRelationLink.param2(link,target);
48711}
48712/**
48713 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
48714 */
48715private pattern mayInRelationeRawType_reference_EGenericType(
48716 problem:LogicProblem, interpretation:PartialInterpretation,
48717 source: DefinedElement, target:DefinedElement)
48718{
48719 find interpretation(problem,interpretation);
48720 // The two endpoint of the link have to exist
48721 find mayExist(problem, interpretation, source);
48722 find mayExist(problem, interpretation, target);
48723 // Type consistency
48724 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48725 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48726 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48727 // the upper bound of the multiplicity should be considered.
48728 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
48729 check(numberOfExistingReferences < 1);
48730} or {
48731 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
48732}
48733/**
48734 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
48735 */
48736private pattern mustInRelationeLowerBound_reference_EGenericType(
48737 problem:LogicProblem, interpretation:PartialInterpretation,
48738 source: DefinedElement, target:DefinedElement)
48739{
48740 find interpretation(problem,interpretation);
48741 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48742 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
48743 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48744 BinaryElementRelationLink.param1(link,source);
48745 BinaryElementRelationLink.param2(link,target);
48746}
48747/**
48748 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
48749 */
48750private pattern mayInRelationeLowerBound_reference_EGenericType(
48751 problem:LogicProblem, interpretation:PartialInterpretation,
48752 source: DefinedElement, target:DefinedElement)
48753{
48754 find interpretation(problem,interpretation);
48755 // The two endpoint of the link have to exist
48756 find mayExist(problem, interpretation, source);
48757 find mayExist(problem, interpretation, target);
48758 // Type consistency
48759 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48760 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48761 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48762 // the upper bound of the multiplicity should be considered.
48763 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
48764 check(numberOfExistingReferences < 1);
48765 // The reference is containment, then a new reference cannot be create if:
48766 // 1. Multiple parents
48767 neg find mustContains4(problem,interpretation,_,target);
48768 // 2. Circle in the containment hierarchy
48769 neg find mustTransitiveContains(source,target);
48770} or {
48771 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
48772}
48773/**
48774 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
48775 */
48776private pattern mustInRelationeTypeParameter_reference_EGenericType(
48777 problem:LogicProblem, interpretation:PartialInterpretation,
48778 source: DefinedElement, target:DefinedElement)
48779{
48780 find interpretation(problem,interpretation);
48781 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48782 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
48783 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48784 BinaryElementRelationLink.param1(link,source);
48785 BinaryElementRelationLink.param2(link,target);
48786}
48787/**
48788 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
48789 */
48790private pattern mayInRelationeTypeParameter_reference_EGenericType(
48791 problem:LogicProblem, interpretation:PartialInterpretation,
48792 source: DefinedElement, target:DefinedElement)
48793{
48794 find interpretation(problem,interpretation);
48795 // The two endpoint of the link have to exist
48796 find mayExist(problem, interpretation, source);
48797 find mayExist(problem, interpretation, target);
48798 // Type consistency
48799 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48800 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
48801 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48802 // the upper bound of the multiplicity should be considered.
48803 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
48804 check(numberOfExistingReferences < 1);
48805} or {
48806 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
48807}
48808/**
48809 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
48810 */
48811private pattern mustInRelationeClassifier_reference_EGenericType(
48812 problem:LogicProblem, interpretation:PartialInterpretation,
48813 source: DefinedElement, target:DefinedElement)
48814{
48815 find interpretation(problem,interpretation);
48816 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48817 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
48818 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48819 BinaryElementRelationLink.param1(link,source);
48820 BinaryElementRelationLink.param2(link,target);
48821}
48822/**
48823 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
48824 */
48825private pattern mayInRelationeClassifier_reference_EGenericType(
48826 problem:LogicProblem, interpretation:PartialInterpretation,
48827 source: DefinedElement, target:DefinedElement)
48828{
48829 find interpretation(problem,interpretation);
48830 // The two endpoint of the link have to exist
48831 find mayExist(problem, interpretation, source);
48832 find mayExist(problem, interpretation, target);
48833 // Type consistency
48834 find mayInstanceOfEGenericType_class(problem,interpretation,source);
48835 find mayInstanceOfEClassifier_class(problem,interpretation,target);
48836 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48837 // the upper bound of the multiplicity should be considered.
48838 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
48839 check(numberOfExistingReferences < 1);
48840} or {
48841 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
48842}
48843/**
48844 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
48845 */
48846private pattern mustInRelationeBounds_reference_ETypeParameter(
48847 problem:LogicProblem, interpretation:PartialInterpretation,
48848 source: DefinedElement, target:DefinedElement)
48849{
48850 find interpretation(problem,interpretation);
48851 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48852 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
48853 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48854 BinaryElementRelationLink.param1(link,source);
48855 BinaryElementRelationLink.param2(link,target);
48856}
48857/**
48858 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
48859 */
48860private pattern mayInRelationeBounds_reference_ETypeParameter(
48861 problem:LogicProblem, interpretation:PartialInterpretation,
48862 source: DefinedElement, target:DefinedElement)
48863{
48864 find interpretation(problem,interpretation);
48865 // The two endpoint of the link have to exist
48866 find mayExist(problem, interpretation, source);
48867 find mayExist(problem, interpretation, target);
48868 // Type consistency
48869 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
48870 find mayInstanceOfEGenericType_class(problem,interpretation,target);
48871 // The reference is containment, then a new reference cannot be create if:
48872 // 1. Multiple parents
48873 neg find mustContains4(problem,interpretation,_,target);
48874 // 2. Circle in the containment hierarchy
48875 neg find mustTransitiveContains(source,target);
48876} or {
48877 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
48878}
48879/**
48880 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
48881 */
48882private pattern mustInRelationiD_attribute_EAttribute(
48883 problem:LogicProblem, interpretation:PartialInterpretation,
48884 source: DefinedElement, target:DefinedElement)
48885{
48886 find interpretation(problem,interpretation);
48887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
48889 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48890 BinaryElementRelationLink.param1(link,source);
48891 BinaryElementRelationLink.param2(link,target);
48892}
48893/**
48894 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
48895 */
48896private pattern mayInRelationiD_attribute_EAttribute(
48897 problem:LogicProblem, interpretation:PartialInterpretation,
48898 source: DefinedElement, target:DefinedElement)
48899{
48900 find interpretation(problem,interpretation);
48901 // The two endpoint of the link have to exist
48902 find mayExist(problem, interpretation, source);
48903 find mayExist(problem, interpretation, target);
48904 // Type consistency
48905 find mayInstanceOfEAttribute_class(problem,interpretation,source);
48906 BooleanElement(target);
48907 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48908 // the upper bound of the multiplicity should be considered.
48909 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
48910 check(numberOfExistingReferences < 1);
48911} or {
48912 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
48913}
48914/**
48915 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
48916 */
48917private pattern mustInRelationsource_attribute_EAnnotation(
48918 problem:LogicProblem, interpretation:PartialInterpretation,
48919 source: DefinedElement, target:DefinedElement)
48920{
48921 find interpretation(problem,interpretation);
48922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
48924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48925 BinaryElementRelationLink.param1(link,source);
48926 BinaryElementRelationLink.param2(link,target);
48927}
48928/**
48929 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
48930 */
48931private pattern mayInRelationsource_attribute_EAnnotation(
48932 problem:LogicProblem, interpretation:PartialInterpretation,
48933 source: DefinedElement, target:DefinedElement)
48934{
48935 find interpretation(problem,interpretation);
48936 // The two endpoint of the link have to exist
48937 find mayExist(problem, interpretation, source);
48938 find mayExist(problem, interpretation, target);
48939 // Type consistency
48940 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
48941 StringElement(target);
48942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48943 // the upper bound of the multiplicity should be considered.
48944 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
48945 check(numberOfExistingReferences < 1);
48946} or {
48947 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
48948}
48949/**
48950 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
48951 */
48952private pattern mustInRelationabstract_attribute_EClass(
48953 problem:LogicProblem, interpretation:PartialInterpretation,
48954 source: DefinedElement, target:DefinedElement)
48955{
48956 find interpretation(problem,interpretation);
48957 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48958 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
48959 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48960 BinaryElementRelationLink.param1(link,source);
48961 BinaryElementRelationLink.param2(link,target);
48962}
48963/**
48964 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
48965 */
48966private pattern mayInRelationabstract_attribute_EClass(
48967 problem:LogicProblem, interpretation:PartialInterpretation,
48968 source: DefinedElement, target:DefinedElement)
48969{
48970 find interpretation(problem,interpretation);
48971 // The two endpoint of the link have to exist
48972 find mayExist(problem, interpretation, source);
48973 find mayExist(problem, interpretation, target);
48974 // Type consistency
48975 find mayInstanceOfEClass_class(problem,interpretation,source);
48976 BooleanElement(target);
48977 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
48978 // the upper bound of the multiplicity should be considered.
48979 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
48980 check(numberOfExistingReferences < 1);
48981} or {
48982 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
48983}
48984/**
48985 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
48986 */
48987private pattern mustInRelationinterface_attribute_EClass(
48988 problem:LogicProblem, interpretation:PartialInterpretation,
48989 source: DefinedElement, target:DefinedElement)
48990{
48991 find interpretation(problem,interpretation);
48992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
48993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
48994 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
48995 BinaryElementRelationLink.param1(link,source);
48996 BinaryElementRelationLink.param2(link,target);
48997}
48998/**
48999 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
49000 */
49001private pattern mayInRelationinterface_attribute_EClass(
49002 problem:LogicProblem, interpretation:PartialInterpretation,
49003 source: DefinedElement, target:DefinedElement)
49004{
49005 find interpretation(problem,interpretation);
49006 // The two endpoint of the link have to exist
49007 find mayExist(problem, interpretation, source);
49008 find mayExist(problem, interpretation, target);
49009 // Type consistency
49010 find mayInstanceOfEClass_class(problem,interpretation,source);
49011 BooleanElement(target);
49012 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49013 // the upper bound of the multiplicity should be considered.
49014 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
49015 check(numberOfExistingReferences < 1);
49016} or {
49017 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
49018}
49019/**
49020 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
49021 */
49022private pattern mustInRelationinstanceClassName_attribute_EClassifier(
49023 problem:LogicProblem, interpretation:PartialInterpretation,
49024 source: DefinedElement, target:DefinedElement)
49025{
49026 find interpretation(problem,interpretation);
49027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
49029 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49030 BinaryElementRelationLink.param1(link,source);
49031 BinaryElementRelationLink.param2(link,target);
49032}
49033/**
49034 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
49035 */
49036private pattern mayInRelationinstanceClassName_attribute_EClassifier(
49037 problem:LogicProblem, interpretation:PartialInterpretation,
49038 source: DefinedElement, target:DefinedElement)
49039{
49040 find interpretation(problem,interpretation);
49041 // The two endpoint of the link have to exist
49042 find mayExist(problem, interpretation, source);
49043 find mayExist(problem, interpretation, target);
49044 // Type consistency
49045 find mayInstanceOfEClassifier_class(problem,interpretation,source);
49046 StringElement(target);
49047 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49048 // the upper bound of the multiplicity should be considered.
49049 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
49050 check(numberOfExistingReferences < 1);
49051} or {
49052 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
49053}
49054/**
49055 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
49056 */
49057private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
49058 problem:LogicProblem, interpretation:PartialInterpretation,
49059 source: DefinedElement, target:DefinedElement)
49060{
49061 find interpretation(problem,interpretation);
49062 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49063 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
49064 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49065 BinaryElementRelationLink.param1(link,source);
49066 BinaryElementRelationLink.param2(link,target);
49067}
49068/**
49069 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
49070 */
49071private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
49072 problem:LogicProblem, interpretation:PartialInterpretation,
49073 source: DefinedElement, target:DefinedElement)
49074{
49075 find interpretation(problem,interpretation);
49076 // The two endpoint of the link have to exist
49077 find mayExist(problem, interpretation, source);
49078 find mayExist(problem, interpretation, target);
49079 // Type consistency
49080 find mayInstanceOfEClassifier_class(problem,interpretation,source);
49081 StringElement(target);
49082 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49083 // the upper bound of the multiplicity should be considered.
49084 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
49085 check(numberOfExistingReferences < 1);
49086} or {
49087 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
49088}
49089/**
49090 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
49091 */
49092private pattern mustInRelationserializable_attribute_EDataType(
49093 problem:LogicProblem, interpretation:PartialInterpretation,
49094 source: DefinedElement, target:DefinedElement)
49095{
49096 find interpretation(problem,interpretation);
49097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
49099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49100 BinaryElementRelationLink.param1(link,source);
49101 BinaryElementRelationLink.param2(link,target);
49102}
49103/**
49104 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
49105 */
49106private pattern mayInRelationserializable_attribute_EDataType(
49107 problem:LogicProblem, interpretation:PartialInterpretation,
49108 source: DefinedElement, target:DefinedElement)
49109{
49110 find interpretation(problem,interpretation);
49111 // The two endpoint of the link have to exist
49112 find mayExist(problem, interpretation, source);
49113 find mayExist(problem, interpretation, target);
49114 // Type consistency
49115 find mayInstanceOfEDataType_class(problem,interpretation,source);
49116 BooleanElement(target);
49117 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49118 // the upper bound of the multiplicity should be considered.
49119 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
49120 check(numberOfExistingReferences < 1);
49121} or {
49122 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
49123}
49124/**
49125 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
49126 */
49127private pattern mustInRelationvalue_attribute_EEnumLiteral(
49128 problem:LogicProblem, interpretation:PartialInterpretation,
49129 source: DefinedElement, target:DefinedElement)
49130{
49131 find interpretation(problem,interpretation);
49132 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49133 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
49134 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49135 BinaryElementRelationLink.param1(link,source);
49136 BinaryElementRelationLink.param2(link,target);
49137}
49138/**
49139 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
49140 */
49141private pattern mayInRelationvalue_attribute_EEnumLiteral(
49142 problem:LogicProblem, interpretation:PartialInterpretation,
49143 source: DefinedElement, target:DefinedElement)
49144{
49145 find interpretation(problem,interpretation);
49146 // The two endpoint of the link have to exist
49147 find mayExist(problem, interpretation, source);
49148 find mayExist(problem, interpretation, target);
49149 // Type consistency
49150 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
49151 IntegerElement(target);
49152 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49153 // the upper bound of the multiplicity should be considered.
49154 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
49155 check(numberOfExistingReferences < 1);
49156} or {
49157 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
49158}
49159/**
49160 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
49161 */
49162private pattern mustInRelationliteral_attribute_EEnumLiteral(
49163 problem:LogicProblem, interpretation:PartialInterpretation,
49164 source: DefinedElement, target:DefinedElement)
49165{
49166 find interpretation(problem,interpretation);
49167 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49168 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
49169 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49170 BinaryElementRelationLink.param1(link,source);
49171 BinaryElementRelationLink.param2(link,target);
49172}
49173/**
49174 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
49175 */
49176private pattern mayInRelationliteral_attribute_EEnumLiteral(
49177 problem:LogicProblem, interpretation:PartialInterpretation,
49178 source: DefinedElement, target:DefinedElement)
49179{
49180 find interpretation(problem,interpretation);
49181 // The two endpoint of the link have to exist
49182 find mayExist(problem, interpretation, source);
49183 find mayExist(problem, interpretation, target);
49184 // Type consistency
49185 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
49186 StringElement(target);
49187 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49188 // the upper bound of the multiplicity should be considered.
49189 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
49190 check(numberOfExistingReferences < 1);
49191} or {
49192 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
49193}
49194/**
49195 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
49196 */
49197private pattern mustInRelationname_attribute_ENamedElement(
49198 problem:LogicProblem, interpretation:PartialInterpretation,
49199 source: DefinedElement, target:DefinedElement)
49200{
49201 find interpretation(problem,interpretation);
49202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
49204 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49205 BinaryElementRelationLink.param1(link,source);
49206 BinaryElementRelationLink.param2(link,target);
49207}
49208/**
49209 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
49210 */
49211private pattern mayInRelationname_attribute_ENamedElement(
49212 problem:LogicProblem, interpretation:PartialInterpretation,
49213 source: DefinedElement, target:DefinedElement)
49214{
49215 find interpretation(problem,interpretation);
49216 // The two endpoint of the link have to exist
49217 find mayExist(problem, interpretation, source);
49218 find mayExist(problem, interpretation, target);
49219 // Type consistency
49220 find mayInstanceOfENamedElement_class(problem,interpretation,source);
49221 StringElement(target);
49222 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49223 // the upper bound of the multiplicity should be considered.
49224 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
49225 check(numberOfExistingReferences < 1);
49226} or {
49227 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
49228}
49229/**
49230 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
49231 */
49232private pattern mustInRelationnsURI_attribute_EPackage(
49233 problem:LogicProblem, interpretation:PartialInterpretation,
49234 source: DefinedElement, target:DefinedElement)
49235{
49236 find interpretation(problem,interpretation);
49237 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49238 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
49239 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49240 BinaryElementRelationLink.param1(link,source);
49241 BinaryElementRelationLink.param2(link,target);
49242}
49243/**
49244 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
49245 */
49246private pattern mayInRelationnsURI_attribute_EPackage(
49247 problem:LogicProblem, interpretation:PartialInterpretation,
49248 source: DefinedElement, target:DefinedElement)
49249{
49250 find interpretation(problem,interpretation);
49251 // The two endpoint of the link have to exist
49252 find mayExist(problem, interpretation, source);
49253 find mayExist(problem, interpretation, target);
49254 // Type consistency
49255 find mayInstanceOfEPackage_class(problem,interpretation,source);
49256 StringElement(target);
49257 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49258 // the upper bound of the multiplicity should be considered.
49259 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
49260 check(numberOfExistingReferences < 1);
49261} or {
49262 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
49263}
49264/**
49265 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
49266 */
49267private pattern mustInRelationnsPrefix_attribute_EPackage(
49268 problem:LogicProblem, interpretation:PartialInterpretation,
49269 source: DefinedElement, target:DefinedElement)
49270{
49271 find interpretation(problem,interpretation);
49272 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49273 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
49274 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49275 BinaryElementRelationLink.param1(link,source);
49276 BinaryElementRelationLink.param2(link,target);
49277}
49278/**
49279 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
49280 */
49281private pattern mayInRelationnsPrefix_attribute_EPackage(
49282 problem:LogicProblem, interpretation:PartialInterpretation,
49283 source: DefinedElement, target:DefinedElement)
49284{
49285 find interpretation(problem,interpretation);
49286 // The two endpoint of the link have to exist
49287 find mayExist(problem, interpretation, source);
49288 find mayExist(problem, interpretation, target);
49289 // Type consistency
49290 find mayInstanceOfEPackage_class(problem,interpretation,source);
49291 StringElement(target);
49292 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49293 // the upper bound of the multiplicity should be considered.
49294 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
49295 check(numberOfExistingReferences < 1);
49296} or {
49297 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
49298}
49299/**
49300 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
49301 */
49302private pattern mustInRelationcontainment_attribute_EReference(
49303 problem:LogicProblem, interpretation:PartialInterpretation,
49304 source: DefinedElement, target:DefinedElement)
49305{
49306 find interpretation(problem,interpretation);
49307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
49309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49310 BinaryElementRelationLink.param1(link,source);
49311 BinaryElementRelationLink.param2(link,target);
49312}
49313/**
49314 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
49315 */
49316private pattern mayInRelationcontainment_attribute_EReference(
49317 problem:LogicProblem, interpretation:PartialInterpretation,
49318 source: DefinedElement, target:DefinedElement)
49319{
49320 find interpretation(problem,interpretation);
49321 // The two endpoint of the link have to exist
49322 find mayExist(problem, interpretation, source);
49323 find mayExist(problem, interpretation, target);
49324 // Type consistency
49325 find mayInstanceOfEReference_class(problem,interpretation,source);
49326 BooleanElement(target);
49327 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49328 // the upper bound of the multiplicity should be considered.
49329 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
49330 check(numberOfExistingReferences < 1);
49331} or {
49332 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
49333}
49334/**
49335 * Matcher for detecting tuples t where []container attribute EReference(source,target)
49336 */
49337private pattern mustInRelationcontainer_attribute_EReference(
49338 problem:LogicProblem, interpretation:PartialInterpretation,
49339 source: DefinedElement, target:DefinedElement)
49340{
49341 find interpretation(problem,interpretation);
49342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
49344 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49345 BinaryElementRelationLink.param1(link,source);
49346 BinaryElementRelationLink.param2(link,target);
49347}
49348/**
49349 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
49350 */
49351private pattern mayInRelationcontainer_attribute_EReference(
49352 problem:LogicProblem, interpretation:PartialInterpretation,
49353 source: DefinedElement, target:DefinedElement)
49354{
49355 find interpretation(problem,interpretation);
49356 // The two endpoint of the link have to exist
49357 find mayExist(problem, interpretation, source);
49358 find mayExist(problem, interpretation, target);
49359 // Type consistency
49360 find mayInstanceOfEReference_class(problem,interpretation,source);
49361 BooleanElement(target);
49362 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49363 // the upper bound of the multiplicity should be considered.
49364 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
49365 check(numberOfExistingReferences < 1);
49366} or {
49367 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
49368}
49369/**
49370 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
49371 */
49372private pattern mustInRelationresolveProxies_attribute_EReference(
49373 problem:LogicProblem, interpretation:PartialInterpretation,
49374 source: DefinedElement, target:DefinedElement)
49375{
49376 find interpretation(problem,interpretation);
49377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
49379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49380 BinaryElementRelationLink.param1(link,source);
49381 BinaryElementRelationLink.param2(link,target);
49382}
49383/**
49384 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
49385 */
49386private pattern mayInRelationresolveProxies_attribute_EReference(
49387 problem:LogicProblem, interpretation:PartialInterpretation,
49388 source: DefinedElement, target:DefinedElement)
49389{
49390 find interpretation(problem,interpretation);
49391 // The two endpoint of the link have to exist
49392 find mayExist(problem, interpretation, source);
49393 find mayExist(problem, interpretation, target);
49394 // Type consistency
49395 find mayInstanceOfEReference_class(problem,interpretation,source);
49396 BooleanElement(target);
49397 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49398 // the upper bound of the multiplicity should be considered.
49399 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
49400 check(numberOfExistingReferences < 1);
49401} or {
49402 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
49403}
49404/**
49405 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
49406 */
49407private pattern mustInRelationchangeable_attribute_EStructuralFeature(
49408 problem:LogicProblem, interpretation:PartialInterpretation,
49409 source: DefinedElement, target:DefinedElement)
49410{
49411 find interpretation(problem,interpretation);
49412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
49414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49415 BinaryElementRelationLink.param1(link,source);
49416 BinaryElementRelationLink.param2(link,target);
49417}
49418/**
49419 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
49420 */
49421private pattern mayInRelationchangeable_attribute_EStructuralFeature(
49422 problem:LogicProblem, interpretation:PartialInterpretation,
49423 source: DefinedElement, target:DefinedElement)
49424{
49425 find interpretation(problem,interpretation);
49426 // The two endpoint of the link have to exist
49427 find mayExist(problem, interpretation, source);
49428 find mayExist(problem, interpretation, target);
49429 // Type consistency
49430 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49431 BooleanElement(target);
49432 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49433 // the upper bound of the multiplicity should be considered.
49434 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
49435 check(numberOfExistingReferences < 1);
49436} or {
49437 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
49438}
49439/**
49440 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
49441 */
49442private pattern mustInRelationvolatile_attribute_EStructuralFeature(
49443 problem:LogicProblem, interpretation:PartialInterpretation,
49444 source: DefinedElement, target:DefinedElement)
49445{
49446 find interpretation(problem,interpretation);
49447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
49449 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49450 BinaryElementRelationLink.param1(link,source);
49451 BinaryElementRelationLink.param2(link,target);
49452}
49453/**
49454 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
49455 */
49456private pattern mayInRelationvolatile_attribute_EStructuralFeature(
49457 problem:LogicProblem, interpretation:PartialInterpretation,
49458 source: DefinedElement, target:DefinedElement)
49459{
49460 find interpretation(problem,interpretation);
49461 // The two endpoint of the link have to exist
49462 find mayExist(problem, interpretation, source);
49463 find mayExist(problem, interpretation, target);
49464 // Type consistency
49465 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49466 BooleanElement(target);
49467 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49468 // the upper bound of the multiplicity should be considered.
49469 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
49470 check(numberOfExistingReferences < 1);
49471} or {
49472 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
49473}
49474/**
49475 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
49476 */
49477private pattern mustInRelationtransient_attribute_EStructuralFeature(
49478 problem:LogicProblem, interpretation:PartialInterpretation,
49479 source: DefinedElement, target:DefinedElement)
49480{
49481 find interpretation(problem,interpretation);
49482 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49483 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
49484 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49485 BinaryElementRelationLink.param1(link,source);
49486 BinaryElementRelationLink.param2(link,target);
49487}
49488/**
49489 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
49490 */
49491private pattern mayInRelationtransient_attribute_EStructuralFeature(
49492 problem:LogicProblem, interpretation:PartialInterpretation,
49493 source: DefinedElement, target:DefinedElement)
49494{
49495 find interpretation(problem,interpretation);
49496 // The two endpoint of the link have to exist
49497 find mayExist(problem, interpretation, source);
49498 find mayExist(problem, interpretation, target);
49499 // Type consistency
49500 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49501 BooleanElement(target);
49502 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49503 // the upper bound of the multiplicity should be considered.
49504 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
49505 check(numberOfExistingReferences < 1);
49506} or {
49507 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
49508}
49509/**
49510 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
49511 */
49512private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
49513 problem:LogicProblem, interpretation:PartialInterpretation,
49514 source: DefinedElement, target:DefinedElement)
49515{
49516 find interpretation(problem,interpretation);
49517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
49519 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49520 BinaryElementRelationLink.param1(link,source);
49521 BinaryElementRelationLink.param2(link,target);
49522}
49523/**
49524 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
49525 */
49526private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
49527 problem:LogicProblem, interpretation:PartialInterpretation,
49528 source: DefinedElement, target:DefinedElement)
49529{
49530 find interpretation(problem,interpretation);
49531 // The two endpoint of the link have to exist
49532 find mayExist(problem, interpretation, source);
49533 find mayExist(problem, interpretation, target);
49534 // Type consistency
49535 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49536 StringElement(target);
49537 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49538 // the upper bound of the multiplicity should be considered.
49539 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
49540 check(numberOfExistingReferences < 1);
49541} or {
49542 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
49543}
49544/**
49545 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
49546 */
49547private pattern mustInRelationunsettable_attribute_EStructuralFeature(
49548 problem:LogicProblem, interpretation:PartialInterpretation,
49549 source: DefinedElement, target:DefinedElement)
49550{
49551 find interpretation(problem,interpretation);
49552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
49554 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49555 BinaryElementRelationLink.param1(link,source);
49556 BinaryElementRelationLink.param2(link,target);
49557}
49558/**
49559 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
49560 */
49561private pattern mayInRelationunsettable_attribute_EStructuralFeature(
49562 problem:LogicProblem, interpretation:PartialInterpretation,
49563 source: DefinedElement, target:DefinedElement)
49564{
49565 find interpretation(problem,interpretation);
49566 // The two endpoint of the link have to exist
49567 find mayExist(problem, interpretation, source);
49568 find mayExist(problem, interpretation, target);
49569 // Type consistency
49570 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49571 BooleanElement(target);
49572 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49573 // the upper bound of the multiplicity should be considered.
49574 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
49575 check(numberOfExistingReferences < 1);
49576} or {
49577 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
49578}
49579/**
49580 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
49581 */
49582private pattern mustInRelationderived_attribute_EStructuralFeature(
49583 problem:LogicProblem, interpretation:PartialInterpretation,
49584 source: DefinedElement, target:DefinedElement)
49585{
49586 find interpretation(problem,interpretation);
49587 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49588 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
49589 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49590 BinaryElementRelationLink.param1(link,source);
49591 BinaryElementRelationLink.param2(link,target);
49592}
49593/**
49594 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
49595 */
49596private pattern mayInRelationderived_attribute_EStructuralFeature(
49597 problem:LogicProblem, interpretation:PartialInterpretation,
49598 source: DefinedElement, target:DefinedElement)
49599{
49600 find interpretation(problem,interpretation);
49601 // The two endpoint of the link have to exist
49602 find mayExist(problem, interpretation, source);
49603 find mayExist(problem, interpretation, target);
49604 // Type consistency
49605 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
49606 BooleanElement(target);
49607 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49608 // the upper bound of the multiplicity should be considered.
49609 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
49610 check(numberOfExistingReferences < 1);
49611} or {
49612 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
49613}
49614/**
49615 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
49616 */
49617private pattern mustInRelationordered_attribute_ETypedElement(
49618 problem:LogicProblem, interpretation:PartialInterpretation,
49619 source: DefinedElement, target:DefinedElement)
49620{
49621 find interpretation(problem,interpretation);
49622 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49623 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
49624 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49625 BinaryElementRelationLink.param1(link,source);
49626 BinaryElementRelationLink.param2(link,target);
49627}
49628/**
49629 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
49630 */
49631private pattern mayInRelationordered_attribute_ETypedElement(
49632 problem:LogicProblem, interpretation:PartialInterpretation,
49633 source: DefinedElement, target:DefinedElement)
49634{
49635 find interpretation(problem,interpretation);
49636 // The two endpoint of the link have to exist
49637 find mayExist(problem, interpretation, source);
49638 find mayExist(problem, interpretation, target);
49639 // Type consistency
49640 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49641 BooleanElement(target);
49642 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49643 // the upper bound of the multiplicity should be considered.
49644 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
49645 check(numberOfExistingReferences < 1);
49646} or {
49647 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
49648}
49649/**
49650 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
49651 */
49652private pattern mustInRelationunique_attribute_ETypedElement(
49653 problem:LogicProblem, interpretation:PartialInterpretation,
49654 source: DefinedElement, target:DefinedElement)
49655{
49656 find interpretation(problem,interpretation);
49657 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49658 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
49659 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49660 BinaryElementRelationLink.param1(link,source);
49661 BinaryElementRelationLink.param2(link,target);
49662}
49663/**
49664 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
49665 */
49666private pattern mayInRelationunique_attribute_ETypedElement(
49667 problem:LogicProblem, interpretation:PartialInterpretation,
49668 source: DefinedElement, target:DefinedElement)
49669{
49670 find interpretation(problem,interpretation);
49671 // The two endpoint of the link have to exist
49672 find mayExist(problem, interpretation, source);
49673 find mayExist(problem, interpretation, target);
49674 // Type consistency
49675 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49676 BooleanElement(target);
49677 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49678 // the upper bound of the multiplicity should be considered.
49679 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
49680 check(numberOfExistingReferences < 1);
49681} or {
49682 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
49683}
49684/**
49685 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
49686 */
49687private pattern mustInRelationlowerBound_attribute_ETypedElement(
49688 problem:LogicProblem, interpretation:PartialInterpretation,
49689 source: DefinedElement, target:DefinedElement)
49690{
49691 find interpretation(problem,interpretation);
49692 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49693 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
49694 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49695 BinaryElementRelationLink.param1(link,source);
49696 BinaryElementRelationLink.param2(link,target);
49697}
49698/**
49699 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
49700 */
49701private pattern mayInRelationlowerBound_attribute_ETypedElement(
49702 problem:LogicProblem, interpretation:PartialInterpretation,
49703 source: DefinedElement, target:DefinedElement)
49704{
49705 find interpretation(problem,interpretation);
49706 // The two endpoint of the link have to exist
49707 find mayExist(problem, interpretation, source);
49708 find mayExist(problem, interpretation, target);
49709 // Type consistency
49710 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49711 IntegerElement(target);
49712 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49713 // the upper bound of the multiplicity should be considered.
49714 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
49715 check(numberOfExistingReferences < 1);
49716} or {
49717 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
49718}
49719/**
49720 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
49721 */
49722private pattern mustInRelationupperBound_attribute_ETypedElement(
49723 problem:LogicProblem, interpretation:PartialInterpretation,
49724 source: DefinedElement, target:DefinedElement)
49725{
49726 find interpretation(problem,interpretation);
49727 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49728 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
49729 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49730 BinaryElementRelationLink.param1(link,source);
49731 BinaryElementRelationLink.param2(link,target);
49732}
49733/**
49734 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
49735 */
49736private pattern mayInRelationupperBound_attribute_ETypedElement(
49737 problem:LogicProblem, interpretation:PartialInterpretation,
49738 source: DefinedElement, target:DefinedElement)
49739{
49740 find interpretation(problem,interpretation);
49741 // The two endpoint of the link have to exist
49742 find mayExist(problem, interpretation, source);
49743 find mayExist(problem, interpretation, target);
49744 // Type consistency
49745 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49746 IntegerElement(target);
49747 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49748 // the upper bound of the multiplicity should be considered.
49749 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
49750 check(numberOfExistingReferences < 1);
49751} or {
49752 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
49753}
49754/**
49755 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
49756 */
49757private pattern mustInRelationmany_attribute_ETypedElement(
49758 problem:LogicProblem, interpretation:PartialInterpretation,
49759 source: DefinedElement, target:DefinedElement)
49760{
49761 find interpretation(problem,interpretation);
49762 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49763 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
49764 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49765 BinaryElementRelationLink.param1(link,source);
49766 BinaryElementRelationLink.param2(link,target);
49767}
49768/**
49769 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
49770 */
49771private pattern mayInRelationmany_attribute_ETypedElement(
49772 problem:LogicProblem, interpretation:PartialInterpretation,
49773 source: DefinedElement, target:DefinedElement)
49774{
49775 find interpretation(problem,interpretation);
49776 // The two endpoint of the link have to exist
49777 find mayExist(problem, interpretation, source);
49778 find mayExist(problem, interpretation, target);
49779 // Type consistency
49780 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49781 BooleanElement(target);
49782 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49783 // the upper bound of the multiplicity should be considered.
49784 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
49785 check(numberOfExistingReferences < 1);
49786} or {
49787 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
49788}
49789/**
49790 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
49791 */
49792private pattern mustInRelationrequired_attribute_ETypedElement(
49793 problem:LogicProblem, interpretation:PartialInterpretation,
49794 source: DefinedElement, target:DefinedElement)
49795{
49796 find interpretation(problem,interpretation);
49797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
49799 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49800 BinaryElementRelationLink.param1(link,source);
49801 BinaryElementRelationLink.param2(link,target);
49802}
49803/**
49804 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
49805 */
49806private pattern mayInRelationrequired_attribute_ETypedElement(
49807 problem:LogicProblem, interpretation:PartialInterpretation,
49808 source: DefinedElement, target:DefinedElement)
49809{
49810 find interpretation(problem,interpretation);
49811 // The two endpoint of the link have to exist
49812 find mayExist(problem, interpretation, source);
49813 find mayExist(problem, interpretation, target);
49814 // Type consistency
49815 find mayInstanceOfETypedElement_class(problem,interpretation,source);
49816 BooleanElement(target);
49817 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49818 // the upper bound of the multiplicity should be considered.
49819 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
49820 check(numberOfExistingReferences < 1);
49821} or {
49822 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
49823}
49824/**
49825 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
49826 */
49827private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
49828 problem:LogicProblem, interpretation:PartialInterpretation,
49829 source: DefinedElement, target:DefinedElement)
49830{
49831 find interpretation(problem,interpretation);
49832 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49833 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
49834 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49835 BinaryElementRelationLink.param1(link,source);
49836 BinaryElementRelationLink.param2(link,target);
49837}
49838/**
49839 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
49840 */
49841private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
49842 problem:LogicProblem, interpretation:PartialInterpretation,
49843 source: DefinedElement, target:DefinedElement)
49844{
49845 find interpretation(problem,interpretation);
49846 // The two endpoint of the link have to exist
49847 find mayExist(problem, interpretation, source);
49848 find mayExist(problem, interpretation, target);
49849 // Type consistency
49850 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
49851 StringElement(target);
49852 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49853 // the upper bound of the multiplicity should be considered.
49854 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
49855 check(numberOfExistingReferences < 1);
49856} or {
49857 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
49858}
49859/**
49860 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
49861 */
49862private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
49863 problem:LogicProblem, interpretation:PartialInterpretation,
49864 source: DefinedElement, target:DefinedElement)
49865{
49866 find interpretation(problem,interpretation);
49867 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49868 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
49869 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
49870 BinaryElementRelationLink.param1(link,source);
49871 BinaryElementRelationLink.param2(link,target);
49872}
49873/**
49874 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
49875 */
49876private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
49877 problem:LogicProblem, interpretation:PartialInterpretation,
49878 source: DefinedElement, target:DefinedElement)
49879{
49880 find interpretation(problem,interpretation);
49881 // The two endpoint of the link have to exist
49882 find mayExist(problem, interpretation, source);
49883 find mayExist(problem, interpretation, target);
49884 // Type consistency
49885 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
49886 StringElement(target);
49887 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
49888 // the upper bound of the multiplicity should be considered.
49889 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
49890 check(numberOfExistingReferences < 1);
49891} or {
49892 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
49893}
49894
49895//////////
49896// 1.3 Relation Definition Indexers
49897//////////
49898
49899//////////
49900// 1.4 Containment Indexer
49901//////////
49902private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
49903 find mustContains4(_,_,source,target);
49904}
49905
49906private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
49907 source: DefinedElement, target: DefinedElement)
49908 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
49909
49910 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
49911
49912 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
49913
49914 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
49915
49916 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
49917
49918 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
49919
49920 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
49921
49922 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
49923
49924 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
49925
49926 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
49927
49928 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
49929
49930 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
49931
49932 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
49933
49934 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
49935
49936 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
49937
49938 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
49939
49940 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
49941
49942 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
49943
49944private pattern mustTransitiveContains(source,target) {
49945 find mustContains2+(source,target);
49946}
49947
49948//////////
49949// 2. Invalidation Indexers
49950//////////
49951// 2.1 Invalidated by WF Queries
49952//////////
49953
49954//////////
49955// 3. Unfinishedness Indexers
49956//////////
49957// 3.1 Unfinishedness Measured by Multiplicity
49958//////////
49959pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49960 find interpretation(problem,interpretation);
49961 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49962 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
49963 find mustInstanceOfEAttribute_class(problem,interpretation,object);
49964 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
49965 check(numberOfExistingReferences < 1);
49966 missingMultiplicity == eval(1-numberOfExistingReferences);
49967}
49968pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49969 find interpretation(problem,interpretation);
49970 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49971 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
49972 find mustInstanceOfEReference_class(problem,interpretation,object);
49973 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
49974 check(numberOfExistingReferences < 1);
49975 missingMultiplicity == eval(1-numberOfExistingReferences);
49976}
49977pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
49978 find interpretation(problem,interpretation);
49979 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
49980 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
49981 find mustInstanceOfEGenericType_class(problem,interpretation,object);
49982 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
49983 check(numberOfExistingReferences < 1);
49984 missingMultiplicity == eval(1-numberOfExistingReferences);
49985}
49986
49987//////////
49988// 3.2 Unfinishedness Measured by WF Queries
49989//////////
49990
49991//////////
49992// 4. Refinement Indexers
49993//////////
49994// 4.1 Object constructors
49995//////////
49996private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
49997{
49998 find interpretation(problem,interpretation);
49999 find mustInstanceOfEOperation_class(problem,interpretation,root);
50000 find mustExist(problem, interpretation, root);
50001}or{
50002 find interpretation(problem,interpretation);
50003 find mustInstanceOfENamedElement_class(problem,interpretation,root);
50004 find mustExist(problem, interpretation, root);
50005}or{
50006 find interpretation(problem,interpretation);
50007 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
50008 find mustExist(problem, interpretation, root);
50009}or{
50010 find interpretation(problem,interpretation);
50011 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
50012 find mustExist(problem, interpretation, root);
50013}or{
50014 find interpretation(problem,interpretation);
50015 find mustInstanceOfEGenericType_class(problem,interpretation,root);
50016 find mustExist(problem, interpretation, root);
50017}or{
50018 find interpretation(problem,interpretation);
50019 find mustInstanceOfEObject_class(problem,interpretation,root);
50020 find mustExist(problem, interpretation, root);
50021}or{
50022 find interpretation(problem,interpretation);
50023 find mustInstanceOfEAttribute_class(problem,interpretation,root);
50024 find mustExist(problem, interpretation, root);
50025}or{
50026 find interpretation(problem,interpretation);
50027 find mustInstanceOfEPackage_class(problem,interpretation,root);
50028 find mustExist(problem, interpretation, root);
50029}or{
50030 find interpretation(problem,interpretation);
50031 find mustInstanceOfEParameter_class(problem,interpretation,root);
50032 find mustExist(problem, interpretation, root);
50033}or{
50034 find interpretation(problem,interpretation);
50035 find mustInstanceOfEDataType_class(problem,interpretation,root);
50036 find mustExist(problem, interpretation, root);
50037}or{
50038 find interpretation(problem,interpretation);
50039 find mustInstanceOfEClassifier_class(problem,interpretation,root);
50040 find mustExist(problem, interpretation, root);
50041}or{
50042 find interpretation(problem,interpretation);
50043 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
50044 find mustExist(problem, interpretation, root);
50045}or{
50046 find interpretation(problem,interpretation);
50047 find mustInstanceOfEModelElement_class(problem,interpretation,root);
50048 find mustExist(problem, interpretation, root);
50049}or{
50050 find interpretation(problem,interpretation);
50051 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
50052 find mustExist(problem, interpretation, root);
50053}or{
50054 find interpretation(problem,interpretation);
50055 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
50056 find mustExist(problem, interpretation, root);
50057}or{
50058 find interpretation(problem,interpretation);
50059 find mustInstanceOfEReference_class(problem,interpretation,root);
50060 find mustExist(problem, interpretation, root);
50061}or{
50062 find interpretation(problem,interpretation);
50063 find mustInstanceOfEEnum_class(problem,interpretation,root);
50064 find mustExist(problem, interpretation, root);
50065}or{
50066 find interpretation(problem,interpretation);
50067 find mustInstanceOfETypedElement_class(problem,interpretation,root);
50068 find mustExist(problem, interpretation, root);
50069}or{
50070 find interpretation(problem,interpretation);
50071 find mustInstanceOfEClass_class(problem,interpretation,root);
50072 find mustExist(problem, interpretation, root);
50073}or{
50074 find interpretation(problem,interpretation);
50075 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
50076 find mustExist(problem, interpretation, root);
50077}or{
50078 find interpretation(problem,interpretation);
50079 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
50080 find mustExist(problem, interpretation, root);
50081}or{
50082 find interpretation(problem,interpretation);
50083 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
50084 find mustExist(problem, interpretation, root);
50085}or{
50086 find interpretation(problem,interpretation);
50087 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
50088 find mustExist(problem, interpretation, root);
50089}or{
50090 find interpretation(problem,interpretation);
50091 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
50092 find mustExist(problem, interpretation, root);
50093}or{
50094 find interpretation(problem,interpretation);
50095 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
50096 find mustExist(problem, interpretation, root);
50097}
50098pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
50099 problem:LogicProblem, interpretation:PartialInterpretation,
50100 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50101 container:DefinedElement)
50102{
50103 find interpretation(problem,interpretation);
50104 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50105 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
50106 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50107 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
50108 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
50109 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
50110 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
50111 find mustExist(problem, interpretation, container);
50112 neg find mustExist(problem, interpretation, newObject);
50113}
50114pattern createObject_EStringToStringMapEntry_class(
50115 problem:LogicProblem, interpretation:PartialInterpretation,
50116 typeInterpretation:PartialComplexTypeInterpretation)
50117{
50118 find interpretation(problem,interpretation);
50119 neg find hasElementInContainment(problem,interpretation);
50120 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50121 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
50122 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
50123 find mayExist(problem, interpretation, newObject);
50124 neg find mustExist(problem, interpretation, newObject);
50125}
50126pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
50127 problem:LogicProblem, interpretation:PartialInterpretation,
50128 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50129 container:DefinedElement)
50130{
50131 find interpretation(problem,interpretation);
50132 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50133 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50134 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50135 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
50136 find mustInstanceOfEClass_class(problem,interpretation,container);
50137 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50138 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
50139 find mustExist(problem, interpretation, container);
50140 neg find mustExist(problem, interpretation, newObject);
50141}
50142pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
50143 problem:LogicProblem, interpretation:PartialInterpretation,
50144 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50145 container:DefinedElement)
50146{
50147 find interpretation(problem,interpretation);
50148 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50149 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50150 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50151 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
50152 find mustInstanceOfEOperation_class(problem,interpretation,container);
50153 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50154 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
50155 find mustExist(problem, interpretation, container);
50156 neg find mustExist(problem, interpretation, newObject);
50157}
50158pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
50159 problem:LogicProblem, interpretation:PartialInterpretation,
50160 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50161 container:DefinedElement)
50162{
50163 find interpretation(problem,interpretation);
50164 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50165 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50166 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50167 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
50168 find mustInstanceOfETypedElement_class(problem,interpretation,container);
50169 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50170 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
50171 find mustExist(problem, interpretation, container);
50172 neg find mustExist(problem, interpretation, newObject);
50173}
50174pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
50175 problem:LogicProblem, interpretation:PartialInterpretation,
50176 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50177 container:DefinedElement)
50178{
50179 find interpretation(problem,interpretation);
50180 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50181 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50182 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50183 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
50184 find mustInstanceOfEGenericType_class(problem,interpretation,container);
50185 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50186 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
50187 find mustExist(problem, interpretation, container);
50188 neg find mustExist(problem, interpretation, newObject);
50189}
50190pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
50191 problem:LogicProblem, interpretation:PartialInterpretation,
50192 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50193 container:DefinedElement)
50194{
50195 find interpretation(problem,interpretation);
50196 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50197 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50198 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50199 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
50200 find mustInstanceOfEGenericType_class(problem,interpretation,container);
50201 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50202 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
50203 find mustExist(problem, interpretation, container);
50204 neg find mustExist(problem, interpretation, newObject);
50205}
50206pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
50207 problem:LogicProblem, interpretation:PartialInterpretation,
50208 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50209 container:DefinedElement)
50210{
50211 find interpretation(problem,interpretation);
50212 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50213 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50214 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50215 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
50216 find mustInstanceOfEGenericType_class(problem,interpretation,container);
50217 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50218 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
50219 find mustExist(problem, interpretation, container);
50220 neg find mustExist(problem, interpretation, newObject);
50221}
50222pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
50223 problem:LogicProblem, interpretation:PartialInterpretation,
50224 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50225 container:DefinedElement)
50226{
50227 find interpretation(problem,interpretation);
50228 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50229 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50230 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50231 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
50232 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
50233 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50234 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
50235 find mustExist(problem, interpretation, container);
50236 neg find mustExist(problem, interpretation, newObject);
50237}
50238pattern createObject_EGenericType_class(
50239 problem:LogicProblem, interpretation:PartialInterpretation,
50240 typeInterpretation:PartialComplexTypeInterpretation)
50241{
50242 find interpretation(problem,interpretation);
50243 neg find hasElementInContainment(problem,interpretation);
50244 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50245 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
50246 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
50247 find mayExist(problem, interpretation, newObject);
50248 neg find mustExist(problem, interpretation, newObject);
50249}
50250pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
50251 problem:LogicProblem, interpretation:PartialInterpretation,
50252 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50253 container:DefinedElement)
50254{
50255 find interpretation(problem,interpretation);
50256 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50257 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
50258 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50259 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
50260 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50261 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
50262 find mustInstanceOfEEnum_class(problem,interpretation,container);
50263 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
50264 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
50265 find mustExist(problem, interpretation, container);
50266 neg find mustExist(problem, interpretation, newObject);
50267}
50268pattern createObject_EEnumLiteral_class(
50269 problem:LogicProblem, interpretation:PartialInterpretation,
50270 typeInterpretation:PartialComplexTypeInterpretation)
50271{
50272 find interpretation(problem,interpretation);
50273 neg find hasElementInContainment(problem,interpretation);
50274 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50275 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
50276 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
50277 find mayExist(problem, interpretation, newObject);
50278 neg find mustExist(problem, interpretation, newObject);
50279}
50280pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
50281 problem:LogicProblem, interpretation:PartialInterpretation,
50282 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50283 container:DefinedElement)
50284{
50285 find interpretation(problem,interpretation);
50286 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50287 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
50288 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50289 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
50290 find mustInstanceOfEClassifier_class(problem,interpretation,container);
50291 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
50292 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
50293 find mustExist(problem, interpretation, container);
50294 neg find mustExist(problem, interpretation, newObject);
50295}
50296pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
50297 problem:LogicProblem, interpretation:PartialInterpretation,
50298 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50299 container:DefinedElement)
50300{
50301 find interpretation(problem,interpretation);
50302 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50303 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
50304 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50305 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
50306 find mustInstanceOfEOperation_class(problem,interpretation,container);
50307 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
50308 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
50309 find mustExist(problem, interpretation, container);
50310 neg find mustExist(problem, interpretation, newObject);
50311}
50312pattern createObject_ETypeParameter_class(
50313 problem:LogicProblem, interpretation:PartialInterpretation,
50314 typeInterpretation:PartialComplexTypeInterpretation)
50315{
50316 find interpretation(problem,interpretation);
50317 neg find hasElementInContainment(problem,interpretation);
50318 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50319 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
50320 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
50321 find mayExist(problem, interpretation, newObject);
50322 neg find mustExist(problem, interpretation, newObject);
50323}
50324pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
50325 problem:LogicProblem, interpretation:PartialInterpretation,
50326 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50327 container:DefinedElement)
50328{
50329 find interpretation(problem,interpretation);
50330 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50331 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
50332 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50333 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
50334 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50335 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
50336 find mustInstanceOfEClass_class(problem,interpretation,container);
50337 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
50338 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
50339 find mustExist(problem, interpretation, container);
50340 neg find mustExist(problem, interpretation, newObject);
50341}
50342pattern createObject_EAttribute_class(
50343 problem:LogicProblem, interpretation:PartialInterpretation,
50344 typeInterpretation:PartialComplexTypeInterpretation)
50345{
50346 find interpretation(problem,interpretation);
50347 neg find hasElementInContainment(problem,interpretation);
50348 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50349 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
50350 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
50351 find mayExist(problem, interpretation, newObject);
50352 neg find mustExist(problem, interpretation, newObject);
50353}
50354pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
50355 problem:LogicProblem, interpretation:PartialInterpretation,
50356 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50357 container:DefinedElement)
50358{
50359 find interpretation(problem,interpretation);
50360 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50361 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
50362 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50363 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
50364 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50365 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
50366 find mustInstanceOfEPackage_class(problem,interpretation,container);
50367 find mayInstanceOfEClass_class(problem,interpretation,newObject);
50368 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
50369 find mustExist(problem, interpretation, container);
50370 neg find mustExist(problem, interpretation, newObject);
50371}
50372pattern createObject_EClass_class(
50373 problem:LogicProblem, interpretation:PartialInterpretation,
50374 typeInterpretation:PartialComplexTypeInterpretation)
50375{
50376 find interpretation(problem,interpretation);
50377 neg find hasElementInContainment(problem,interpretation);
50378 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50379 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
50380 find mayInstanceOfEClass_class(problem,interpretation,newObject);
50381 find mayExist(problem, interpretation, newObject);
50382 neg find mustExist(problem, interpretation, newObject);
50383}
50384pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
50385 problem:LogicProblem, interpretation:PartialInterpretation,
50386 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50387 container:DefinedElement)
50388{
50389 find interpretation(problem,interpretation);
50390 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50391 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
50392 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50393 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
50394 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50395 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
50396 find mustInstanceOfEPackage_class(problem,interpretation,container);
50397 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
50398 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
50399 find mustExist(problem, interpretation, container);
50400 neg find mustExist(problem, interpretation, newObject);
50401}
50402pattern createObject_EDataType_class(
50403 problem:LogicProblem, interpretation:PartialInterpretation,
50404 typeInterpretation:PartialComplexTypeInterpretation)
50405{
50406 find interpretation(problem,interpretation);
50407 neg find hasElementInContainment(problem,interpretation);
50408 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50409 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
50410 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
50411 find mayExist(problem, interpretation, newObject);
50412 neg find mustExist(problem, interpretation, newObject);
50413}
50414pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
50415 problem:LogicProblem, interpretation:PartialInterpretation,
50416 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50417 container:DefinedElement)
50418{
50419 find interpretation(problem,interpretation);
50420 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50421 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
50422 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50423 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
50424 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50425 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
50426 find mustInstanceOfEClass_class(problem,interpretation,container);
50427 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
50428 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
50429 find mustExist(problem, interpretation, container);
50430 neg find mustExist(problem, interpretation, newObject);
50431}
50432pattern createObject_EOperation_class(
50433 problem:LogicProblem, interpretation:PartialInterpretation,
50434 typeInterpretation:PartialComplexTypeInterpretation)
50435{
50436 find interpretation(problem,interpretation);
50437 neg find hasElementInContainment(problem,interpretation);
50438 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50439 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
50440 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
50441 find mayExist(problem, interpretation, newObject);
50442 neg find mustExist(problem, interpretation, newObject);
50443}
50444pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
50445 problem:LogicProblem, interpretation:PartialInterpretation,
50446 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50447 container:DefinedElement)
50448{
50449 find interpretation(problem,interpretation);
50450 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50451 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
50452 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50453 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
50454 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50455 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
50456 find mustInstanceOfEModelElement_class(problem,interpretation,container);
50457 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
50458 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
50459 find mustExist(problem, interpretation, container);
50460 neg find mustExist(problem, interpretation, newObject);
50461}
50462pattern createObject_EAnnotation_class(
50463 problem:LogicProblem, interpretation:PartialInterpretation,
50464 typeInterpretation:PartialComplexTypeInterpretation)
50465{
50466 find interpretation(problem,interpretation);
50467 neg find hasElementInContainment(problem,interpretation);
50468 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50469 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
50470 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
50471 find mayExist(problem, interpretation, newObject);
50472 neg find mustExist(problem, interpretation, newObject);
50473}
50474pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
50475 problem:LogicProblem, interpretation:PartialInterpretation,
50476 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50477 container:DefinedElement)
50478{
50479 find interpretation(problem,interpretation);
50480 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50481 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
50482 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50483 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
50484 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50485 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
50486 find mustInstanceOfEOperation_class(problem,interpretation,container);
50487 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
50488 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
50489 find mustExist(problem, interpretation, container);
50490 neg find mustExist(problem, interpretation, newObject);
50491}
50492pattern createObject_EParameter_class(
50493 problem:LogicProblem, interpretation:PartialInterpretation,
50494 typeInterpretation:PartialComplexTypeInterpretation)
50495{
50496 find interpretation(problem,interpretation);
50497 neg find hasElementInContainment(problem,interpretation);
50498 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50499 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
50500 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
50501 find mayExist(problem, interpretation, newObject);
50502 neg find mustExist(problem, interpretation, newObject);
50503}
50504pattern createObject_EObject_class_by_contents_reference_EAnnotation(
50505 problem:LogicProblem, interpretation:PartialInterpretation,
50506 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50507 container:DefinedElement)
50508{
50509 find interpretation(problem,interpretation);
50510 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50511 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
50512 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50513 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
50514 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
50515 find mayInstanceOfEObject_class(problem,interpretation,newObject);
50516 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
50517 find mustExist(problem, interpretation, container);
50518 neg find mustExist(problem, interpretation, newObject);
50519}
50520pattern createObject_EObject_class(
50521 problem:LogicProblem, interpretation:PartialInterpretation,
50522 typeInterpretation:PartialComplexTypeInterpretation)
50523{
50524 find interpretation(problem,interpretation);
50525 neg find hasElementInContainment(problem,interpretation);
50526 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50527 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
50528 find mayInstanceOfEObject_class(problem,interpretation,newObject);
50529 find mayExist(problem, interpretation, newObject);
50530 neg find mustExist(problem, interpretation, newObject);
50531}
50532pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
50533 problem:LogicProblem, interpretation:PartialInterpretation,
50534 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50535 container:DefinedElement)
50536{
50537 find interpretation(problem,interpretation);
50538 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50539 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
50540 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50541 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
50542 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50543 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
50544 find mustInstanceOfEClass_class(problem,interpretation,container);
50545 find mayInstanceOfEReference_class(problem,interpretation,newObject);
50546 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
50547 find mustExist(problem, interpretation, container);
50548 neg find mustExist(problem, interpretation, newObject);
50549}
50550pattern createObject_EReference_class(
50551 problem:LogicProblem, interpretation:PartialInterpretation,
50552 typeInterpretation:PartialComplexTypeInterpretation)
50553{
50554 find interpretation(problem,interpretation);
50555 neg find hasElementInContainment(problem,interpretation);
50556 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50557 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
50558 find mayInstanceOfEReference_class(problem,interpretation,newObject);
50559 find mayExist(problem, interpretation, newObject);
50560 neg find mustExist(problem, interpretation, newObject);
50561}
50562pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
50563 problem:LogicProblem, interpretation:PartialInterpretation,
50564 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50565 container:DefinedElement)
50566{
50567 find interpretation(problem,interpretation);
50568 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50569 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
50570 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50571 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
50572 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50573 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
50574 find mustInstanceOfEPackage_class(problem,interpretation,container);
50575 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
50576 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
50577 find mustExist(problem, interpretation, container);
50578 neg find mustExist(problem, interpretation, newObject);
50579}
50580pattern createObject_EEnum_class(
50581 problem:LogicProblem, interpretation:PartialInterpretation,
50582 typeInterpretation:PartialComplexTypeInterpretation)
50583{
50584 find interpretation(problem,interpretation);
50585 neg find hasElementInContainment(problem,interpretation);
50586 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50587 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
50588 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
50589 find mayExist(problem, interpretation, newObject);
50590 neg find mustExist(problem, interpretation, newObject);
50591}
50592pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
50593 problem:LogicProblem, interpretation:PartialInterpretation,
50594 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
50595 container:DefinedElement)
50596{
50597 find interpretation(problem,interpretation);
50598 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50599 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
50600 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
50601 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
50602 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
50603 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
50604 find mustInstanceOfEPackage_class(problem,interpretation,container);
50605 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
50606 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
50607 find mustExist(problem, interpretation, container);
50608 neg find mustExist(problem, interpretation, newObject);
50609}
50610pattern createObject_EPackage_class_UndefinedPart(
50611 problem:LogicProblem, interpretation:PartialInterpretation,
50612 typeInterpretation:PartialComplexTypeInterpretation)
50613{
50614 find interpretation(problem,interpretation);
50615 neg find hasElementInContainment(problem,interpretation);
50616 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
50617 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
50618 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
50619 find mayExist(problem, interpretation, newObject);
50620 neg find mustExist(problem, interpretation, newObject);
50621}
50622
50623//////////
50624// 4.2 Type refinement
50625//////////
50626pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50627 find interpretation(problem,interpretation);
50628 PartialInterpretation.newElements(interpretation,element);
50629 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50630 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50631 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50632 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
50633 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50634}
50635pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50636 find interpretation(problem,interpretation);
50637 PartialInterpretation.newElements(interpretation,element);
50638 find mayInstanceOfEGenericType_class(problem,interpretation,element);
50639 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50640 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50641 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
50642 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50643}
50644pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50645 find interpretation(problem,interpretation);
50646 PartialInterpretation.newElements(interpretation,element);
50647 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
50648 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50649 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50650 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50651 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50652 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50653 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50654 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50655 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50656 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50657}
50658pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50659 find interpretation(problem,interpretation);
50660 PartialInterpretation.newElements(interpretation,element);
50661 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
50662 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50663 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50664 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50665 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50666 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50667 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50668 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50669 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50670 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50671}
50672pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50673 find interpretation(problem,interpretation);
50674 PartialInterpretation.newElements(interpretation,element);
50675 find mayInstanceOfEAttribute_class(problem,interpretation,element);
50676 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50677 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50678 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50679 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50680 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50681 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50682 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50683 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50684 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50685 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50686 neg find mustInstanceOfEReference_class(problem,interpretation,element);
50687 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
50688}
50689pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50690 find interpretation(problem,interpretation);
50691 PartialInterpretation.newElements(interpretation,element);
50692 find mayInstanceOfEClass_class(problem,interpretation,element);
50693 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50694 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
50695 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50696 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50697 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50698 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50699 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50700 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50701 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50702 neg find mustInstanceOfEClass_class(problem,interpretation,element);
50703}
50704pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50705 find interpretation(problem,interpretation);
50706 PartialInterpretation.newElements(interpretation,element);
50707 find mayInstanceOfEDataType_class(problem,interpretation,element);
50708 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50709 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
50710 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50711 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50712 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50713 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50714 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50715 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50716 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
50717 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50718 neg find mustInstanceOfEClass_class(problem,interpretation,element);
50719}
50720pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50721 find interpretation(problem,interpretation);
50722 PartialInterpretation.newElements(interpretation,element);
50723 find mayInstanceOfEOperation_class(problem,interpretation,element);
50724 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50725 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50726 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50727 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50728 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50729 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50730 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50731 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50732 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50733 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50734 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
50735}
50736pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50737 find interpretation(problem,interpretation);
50738 PartialInterpretation.newElements(interpretation,element);
50739 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
50740 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50742 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50743 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50744 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
50745}
50746pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50747 find interpretation(problem,interpretation);
50748 PartialInterpretation.newElements(interpretation,element);
50749 find mayInstanceOfEParameter_class(problem,interpretation,element);
50750 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50751 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50752 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50753 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50754 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50755 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50756 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50757 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50758 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50759 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50760 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
50761}
50762pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50763 find interpretation(problem,interpretation);
50764 PartialInterpretation.newElements(interpretation,element);
50765 find mayInstanceOfEObject_class(problem,interpretation,element);
50766 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50767 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50768 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
50769 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50770}
50771pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50772 find interpretation(problem,interpretation);
50773 PartialInterpretation.newElements(interpretation,element);
50774 find mayInstanceOfEReference_class(problem,interpretation,element);
50775 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50776 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
50777 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50778 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50779 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50780 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50781 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50782 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
50783 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50784 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50785 neg find mustInstanceOfEReference_class(problem,interpretation,element);
50786 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
50787}
50788pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50789 find interpretation(problem,interpretation);
50790 PartialInterpretation.newElements(interpretation,element);
50791 find mayInstanceOfEEnum_class(problem,interpretation,element);
50792 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50793 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50794 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50795 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
50796 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50797 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50798 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50799 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
50800 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50801 neg find mustInstanceOfEClass_class(problem,interpretation,element);
50802}
50803pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
50804 find interpretation(problem,interpretation);
50805 PartialInterpretation.newElements(interpretation,element);
50806 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
50807 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
50808 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
50809 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
50810 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
50811 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
50812 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
50813 neg find mustInstanceOfEObject_class(problem,interpretation,element);
50814 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
50815 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
50816}
50817
50818//////////
50819// 4.3 Relation refinement
50820//////////
50821pattern refineRelation_eAttributeType_reference_EAttribute(
50822 problem:LogicProblem, interpretation:PartialInterpretation,
50823 relationIterpretation:PartialRelationInterpretation,
50824 from: DefinedElement, to: DefinedElement)
50825{
50826 find interpretation(problem,interpretation);
50827 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50828 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
50829 find mustExist(problem, interpretation, from);
50830 find mustExist(problem, interpretation, to);
50831 find mustInstanceOfEAttribute_class(problem,interpretation,from);
50832 find mustInstanceOfEDataType_class(problem,interpretation,to);
50833 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
50834 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
50835}
50836pattern refineRelation_references_reference_EAnnotation(
50837 problem:LogicProblem, interpretation:PartialInterpretation,
50838 relationIterpretation:PartialRelationInterpretation,
50839 from: DefinedElement, to: DefinedElement)
50840{
50841 find interpretation(problem,interpretation);
50842 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50843 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
50844 find mustExist(problem, interpretation, from);
50845 find mustExist(problem, interpretation, to);
50846 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
50847 find mustInstanceOfEObject_class(problem,interpretation,to);
50848 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
50849 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
50850}
50851pattern refineRelation_eSuperTypes_reference_EClass(
50852 problem:LogicProblem, interpretation:PartialInterpretation,
50853 relationIterpretation:PartialRelationInterpretation,
50854 from: DefinedElement, to: DefinedElement)
50855{
50856 find interpretation(problem,interpretation);
50857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
50859 find mustExist(problem, interpretation, from);
50860 find mustExist(problem, interpretation, to);
50861 find mustInstanceOfEClass_class(problem,interpretation,from);
50862 find mustInstanceOfEClass_class(problem,interpretation,to);
50863 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
50864 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
50865}
50866pattern refineRelation_eAllAttributes_reference_EClass(
50867 problem:LogicProblem, interpretation:PartialInterpretation,
50868 relationIterpretation:PartialRelationInterpretation,
50869 from: DefinedElement, to: DefinedElement)
50870{
50871 find interpretation(problem,interpretation);
50872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
50874 find mustExist(problem, interpretation, from);
50875 find mustExist(problem, interpretation, to);
50876 find mustInstanceOfEClass_class(problem,interpretation,from);
50877 find mustInstanceOfEAttribute_class(problem,interpretation,to);
50878 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
50879 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
50880}
50881pattern refineRelation_eAllReferences_reference_EClass(
50882 problem:LogicProblem, interpretation:PartialInterpretation,
50883 relationIterpretation:PartialRelationInterpretation,
50884 from: DefinedElement, to: DefinedElement)
50885{
50886 find interpretation(problem,interpretation);
50887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
50889 find mustExist(problem, interpretation, from);
50890 find mustExist(problem, interpretation, to);
50891 find mustInstanceOfEClass_class(problem,interpretation,from);
50892 find mustInstanceOfEReference_class(problem,interpretation,to);
50893 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
50894 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
50895}
50896pattern refineRelation_eReferences_reference_EClass(
50897 problem:LogicProblem, interpretation:PartialInterpretation,
50898 relationIterpretation:PartialRelationInterpretation,
50899 from: DefinedElement, to: DefinedElement)
50900{
50901 find interpretation(problem,interpretation);
50902 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50903 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
50904 find mustExist(problem, interpretation, from);
50905 find mustExist(problem, interpretation, to);
50906 find mustInstanceOfEClass_class(problem,interpretation,from);
50907 find mustInstanceOfEReference_class(problem,interpretation,to);
50908 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
50909 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
50910}
50911pattern refineRelation_eAttributes_reference_EClass(
50912 problem:LogicProblem, interpretation:PartialInterpretation,
50913 relationIterpretation:PartialRelationInterpretation,
50914 from: DefinedElement, to: DefinedElement)
50915{
50916 find interpretation(problem,interpretation);
50917 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50918 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
50919 find mustExist(problem, interpretation, from);
50920 find mustExist(problem, interpretation, to);
50921 find mustInstanceOfEClass_class(problem,interpretation,from);
50922 find mustInstanceOfEAttribute_class(problem,interpretation,to);
50923 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
50924 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
50925}
50926pattern refineRelation_eAllContainments_reference_EClass(
50927 problem:LogicProblem, interpretation:PartialInterpretation,
50928 relationIterpretation:PartialRelationInterpretation,
50929 from: DefinedElement, to: DefinedElement)
50930{
50931 find interpretation(problem,interpretation);
50932 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50933 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
50934 find mustExist(problem, interpretation, from);
50935 find mustExist(problem, interpretation, to);
50936 find mustInstanceOfEClass_class(problem,interpretation,from);
50937 find mustInstanceOfEReference_class(problem,interpretation,to);
50938 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
50939 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
50940}
50941pattern refineRelation_eAllOperations_reference_EClass(
50942 problem:LogicProblem, interpretation:PartialInterpretation,
50943 relationIterpretation:PartialRelationInterpretation,
50944 from: DefinedElement, to: DefinedElement)
50945{
50946 find interpretation(problem,interpretation);
50947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
50949 find mustExist(problem, interpretation, from);
50950 find mustExist(problem, interpretation, to);
50951 find mustInstanceOfEClass_class(problem,interpretation,from);
50952 find mustInstanceOfEOperation_class(problem,interpretation,to);
50953 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
50954 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
50955}
50956pattern refineRelation_eAllStructuralFeatures_reference_EClass(
50957 problem:LogicProblem, interpretation:PartialInterpretation,
50958 relationIterpretation:PartialRelationInterpretation,
50959 from: DefinedElement, to: DefinedElement)
50960{
50961 find interpretation(problem,interpretation);
50962 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50963 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
50964 find mustExist(problem, interpretation, from);
50965 find mustExist(problem, interpretation, to);
50966 find mustInstanceOfEClass_class(problem,interpretation,from);
50967 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
50968 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
50969 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
50970}
50971pattern refineRelation_eAllSuperTypes_reference_EClass(
50972 problem:LogicProblem, interpretation:PartialInterpretation,
50973 relationIterpretation:PartialRelationInterpretation,
50974 from: DefinedElement, to: DefinedElement)
50975{
50976 find interpretation(problem,interpretation);
50977 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50978 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
50979 find mustExist(problem, interpretation, from);
50980 find mustExist(problem, interpretation, to);
50981 find mustInstanceOfEClass_class(problem,interpretation,from);
50982 find mustInstanceOfEClass_class(problem,interpretation,to);
50983 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
50984 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
50985}
50986pattern refineRelation_eIDAttribute_reference_EClass(
50987 problem:LogicProblem, interpretation:PartialInterpretation,
50988 relationIterpretation:PartialRelationInterpretation,
50989 from: DefinedElement, to: DefinedElement)
50990{
50991 find interpretation(problem,interpretation);
50992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
50993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
50994 find mustExist(problem, interpretation, from);
50995 find mustExist(problem, interpretation, to);
50996 find mustInstanceOfEClass_class(problem,interpretation,from);
50997 find mustInstanceOfEAttribute_class(problem,interpretation,to);
50998 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
50999 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
51000}
51001pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
51002 problem:LogicProblem, interpretation:PartialInterpretation,
51003 relationIterpretation:PartialRelationInterpretation,
51004 from: DefinedElement, to: DefinedElement)
51005{
51006 find interpretation(problem,interpretation);
51007 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51008 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
51009 find mustExist(problem, interpretation, from);
51010 find mustExist(problem, interpretation, to);
51011 find mustInstanceOfEClass_class(problem,interpretation,from);
51012 find mustInstanceOfEGenericType_class(problem,interpretation,to);
51013 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
51014 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
51015}
51016pattern refineRelation_eExceptions_reference_EOperation(
51017 problem:LogicProblem, interpretation:PartialInterpretation,
51018 relationIterpretation:PartialRelationInterpretation,
51019 from: DefinedElement, to: DefinedElement)
51020{
51021 find interpretation(problem,interpretation);
51022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
51024 find mustExist(problem, interpretation, from);
51025 find mustExist(problem, interpretation, to);
51026 find mustInstanceOfEOperation_class(problem,interpretation,from);
51027 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51028 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
51029 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
51030}
51031pattern refineRelation_eOpposite_reference_EReference(
51032 problem:LogicProblem, interpretation:PartialInterpretation,
51033 relationIterpretation:PartialRelationInterpretation,
51034 from: DefinedElement, to: DefinedElement)
51035{
51036 find interpretation(problem,interpretation);
51037 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51038 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
51039 find mustExist(problem, interpretation, from);
51040 find mustExist(problem, interpretation, to);
51041 find mustInstanceOfEReference_class(problem,interpretation,from);
51042 find mustInstanceOfEReference_class(problem,interpretation,to);
51043 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
51044 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
51045}
51046pattern refineRelation_eReferenceType_reference_EReference(
51047 problem:LogicProblem, interpretation:PartialInterpretation,
51048 relationIterpretation:PartialRelationInterpretation,
51049 from: DefinedElement, to: DefinedElement)
51050{
51051 find interpretation(problem,interpretation);
51052 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51053 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
51054 find mustExist(problem, interpretation, from);
51055 find mustExist(problem, interpretation, to);
51056 find mustInstanceOfEReference_class(problem,interpretation,from);
51057 find mustInstanceOfEClass_class(problem,interpretation,to);
51058 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
51059 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
51060}
51061pattern refineRelation_eKeys_reference_EReference(
51062 problem:LogicProblem, interpretation:PartialInterpretation,
51063 relationIterpretation:PartialRelationInterpretation,
51064 from: DefinedElement, to: DefinedElement)
51065{
51066 find interpretation(problem,interpretation);
51067 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51068 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
51069 find mustExist(problem, interpretation, from);
51070 find mustExist(problem, interpretation, to);
51071 find mustInstanceOfEReference_class(problem,interpretation,from);
51072 find mustInstanceOfEAttribute_class(problem,interpretation,to);
51073 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
51074 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
51075}
51076pattern refineRelation_eType_reference_ETypedElement(
51077 problem:LogicProblem, interpretation:PartialInterpretation,
51078 relationIterpretation:PartialRelationInterpretation,
51079 from: DefinedElement, to: DefinedElement)
51080{
51081 find interpretation(problem,interpretation);
51082 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51083 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
51084 find mustExist(problem, interpretation, from);
51085 find mustExist(problem, interpretation, to);
51086 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51087 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51088 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
51089 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
51090}
51091pattern refineRelation_eRawType_reference_EGenericType(
51092 problem:LogicProblem, interpretation:PartialInterpretation,
51093 relationIterpretation:PartialRelationInterpretation,
51094 from: DefinedElement, to: DefinedElement)
51095{
51096 find interpretation(problem,interpretation);
51097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
51099 find mustExist(problem, interpretation, from);
51100 find mustExist(problem, interpretation, to);
51101 find mustInstanceOfEGenericType_class(problem,interpretation,from);
51102 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51103 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
51104 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
51105}
51106pattern refineRelation_eTypeParameter_reference_EGenericType(
51107 problem:LogicProblem, interpretation:PartialInterpretation,
51108 relationIterpretation:PartialRelationInterpretation,
51109 from: DefinedElement, to: DefinedElement)
51110{
51111 find interpretation(problem,interpretation);
51112 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51113 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
51114 find mustExist(problem, interpretation, from);
51115 find mustExist(problem, interpretation, to);
51116 find mustInstanceOfEGenericType_class(problem,interpretation,from);
51117 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
51118 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
51119 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
51120}
51121pattern refineRelation_eClassifier_reference_EGenericType(
51122 problem:LogicProblem, interpretation:PartialInterpretation,
51123 relationIterpretation:PartialRelationInterpretation,
51124 from: DefinedElement, to: DefinedElement)
51125{
51126 find interpretation(problem,interpretation);
51127 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51128 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
51129 find mustExist(problem, interpretation, from);
51130 find mustExist(problem, interpretation, to);
51131 find mustInstanceOfEGenericType_class(problem,interpretation,from);
51132 find mustInstanceOfEClassifier_class(problem,interpretation,to);
51133 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
51134 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
51135}
51136pattern refineRelation_iD_attribute_EAttribute(
51137 problem:LogicProblem, interpretation:PartialInterpretation,
51138 relationIterpretation:PartialRelationInterpretation,
51139 from: DefinedElement, to: DefinedElement)
51140{
51141 find interpretation(problem,interpretation);
51142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
51144 find mustExist(problem, interpretation, from);
51145 find mustExist(problem, interpretation, to);
51146 find mustInstanceOfEAttribute_class(problem,interpretation,from);
51147 BooleanElement(to);
51148 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
51149 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
51150}
51151pattern refineRelation_source_attribute_EAnnotation(
51152 problem:LogicProblem, interpretation:PartialInterpretation,
51153 relationIterpretation:PartialRelationInterpretation,
51154 from: DefinedElement, to: DefinedElement)
51155{
51156 find interpretation(problem,interpretation);
51157 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51158 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
51159 find mustExist(problem, interpretation, from);
51160 find mustExist(problem, interpretation, to);
51161 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
51162 StringElement(to);
51163 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
51164 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
51165}
51166pattern refineRelation_abstract_attribute_EClass(
51167 problem:LogicProblem, interpretation:PartialInterpretation,
51168 relationIterpretation:PartialRelationInterpretation,
51169 from: DefinedElement, to: DefinedElement)
51170{
51171 find interpretation(problem,interpretation);
51172 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51173 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
51174 find mustExist(problem, interpretation, from);
51175 find mustExist(problem, interpretation, to);
51176 find mustInstanceOfEClass_class(problem,interpretation,from);
51177 BooleanElement(to);
51178 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
51179 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
51180}
51181pattern refineRelation_interface_attribute_EClass(
51182 problem:LogicProblem, interpretation:PartialInterpretation,
51183 relationIterpretation:PartialRelationInterpretation,
51184 from: DefinedElement, to: DefinedElement)
51185{
51186 find interpretation(problem,interpretation);
51187 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51188 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
51189 find mustExist(problem, interpretation, from);
51190 find mustExist(problem, interpretation, to);
51191 find mustInstanceOfEClass_class(problem,interpretation,from);
51192 BooleanElement(to);
51193 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
51194 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
51195}
51196pattern refineRelation_instanceClassName_attribute_EClassifier(
51197 problem:LogicProblem, interpretation:PartialInterpretation,
51198 relationIterpretation:PartialRelationInterpretation,
51199 from: DefinedElement, to: DefinedElement)
51200{
51201 find interpretation(problem,interpretation);
51202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
51204 find mustExist(problem, interpretation, from);
51205 find mustExist(problem, interpretation, to);
51206 find mustInstanceOfEClassifier_class(problem,interpretation,from);
51207 StringElement(to);
51208 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
51209 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
51210}
51211pattern refineRelation_instanceTypeName_attribute_EClassifier(
51212 problem:LogicProblem, interpretation:PartialInterpretation,
51213 relationIterpretation:PartialRelationInterpretation,
51214 from: DefinedElement, to: DefinedElement)
51215{
51216 find interpretation(problem,interpretation);
51217 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51218 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
51219 find mustExist(problem, interpretation, from);
51220 find mustExist(problem, interpretation, to);
51221 find mustInstanceOfEClassifier_class(problem,interpretation,from);
51222 StringElement(to);
51223 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
51224 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
51225}
51226pattern refineRelation_serializable_attribute_EDataType(
51227 problem:LogicProblem, interpretation:PartialInterpretation,
51228 relationIterpretation:PartialRelationInterpretation,
51229 from: DefinedElement, to: DefinedElement)
51230{
51231 find interpretation(problem,interpretation);
51232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
51234 find mustExist(problem, interpretation, from);
51235 find mustExist(problem, interpretation, to);
51236 find mustInstanceOfEDataType_class(problem,interpretation,from);
51237 BooleanElement(to);
51238 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
51239 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
51240}
51241pattern refineRelation_value_attribute_EEnumLiteral(
51242 problem:LogicProblem, interpretation:PartialInterpretation,
51243 relationIterpretation:PartialRelationInterpretation,
51244 from: DefinedElement, to: DefinedElement)
51245{
51246 find interpretation(problem,interpretation);
51247 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51248 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
51249 find mustExist(problem, interpretation, from);
51250 find mustExist(problem, interpretation, to);
51251 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
51252 IntegerElement(to);
51253 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
51254 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
51255}
51256pattern refineRelation_literal_attribute_EEnumLiteral(
51257 problem:LogicProblem, interpretation:PartialInterpretation,
51258 relationIterpretation:PartialRelationInterpretation,
51259 from: DefinedElement, to: DefinedElement)
51260{
51261 find interpretation(problem,interpretation);
51262 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51263 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
51264 find mustExist(problem, interpretation, from);
51265 find mustExist(problem, interpretation, to);
51266 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
51267 StringElement(to);
51268 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
51269 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
51270}
51271pattern refineRelation_name_attribute_ENamedElement(
51272 problem:LogicProblem, interpretation:PartialInterpretation,
51273 relationIterpretation:PartialRelationInterpretation,
51274 from: DefinedElement, to: DefinedElement)
51275{
51276 find interpretation(problem,interpretation);
51277 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51278 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
51279 find mustExist(problem, interpretation, from);
51280 find mustExist(problem, interpretation, to);
51281 find mustInstanceOfENamedElement_class(problem,interpretation,from);
51282 StringElement(to);
51283 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
51284 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
51285}
51286pattern refineRelation_nsURI_attribute_EPackage(
51287 problem:LogicProblem, interpretation:PartialInterpretation,
51288 relationIterpretation:PartialRelationInterpretation,
51289 from: DefinedElement, to: DefinedElement)
51290{
51291 find interpretation(problem,interpretation);
51292 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51293 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
51294 find mustExist(problem, interpretation, from);
51295 find mustExist(problem, interpretation, to);
51296 find mustInstanceOfEPackage_class(problem,interpretation,from);
51297 StringElement(to);
51298 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
51299 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
51300}
51301pattern refineRelation_nsPrefix_attribute_EPackage(
51302 problem:LogicProblem, interpretation:PartialInterpretation,
51303 relationIterpretation:PartialRelationInterpretation,
51304 from: DefinedElement, to: DefinedElement)
51305{
51306 find interpretation(problem,interpretation);
51307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
51309 find mustExist(problem, interpretation, from);
51310 find mustExist(problem, interpretation, to);
51311 find mustInstanceOfEPackage_class(problem,interpretation,from);
51312 StringElement(to);
51313 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
51314 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
51315}
51316pattern refineRelation_containment_attribute_EReference(
51317 problem:LogicProblem, interpretation:PartialInterpretation,
51318 relationIterpretation:PartialRelationInterpretation,
51319 from: DefinedElement, to: DefinedElement)
51320{
51321 find interpretation(problem,interpretation);
51322 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51323 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
51324 find mustExist(problem, interpretation, from);
51325 find mustExist(problem, interpretation, to);
51326 find mustInstanceOfEReference_class(problem,interpretation,from);
51327 BooleanElement(to);
51328 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
51329 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
51330}
51331pattern refineRelation_container_attribute_EReference(
51332 problem:LogicProblem, interpretation:PartialInterpretation,
51333 relationIterpretation:PartialRelationInterpretation,
51334 from: DefinedElement, to: DefinedElement)
51335{
51336 find interpretation(problem,interpretation);
51337 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51338 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
51339 find mustExist(problem, interpretation, from);
51340 find mustExist(problem, interpretation, to);
51341 find mustInstanceOfEReference_class(problem,interpretation,from);
51342 BooleanElement(to);
51343 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
51344 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
51345}
51346pattern refineRelation_resolveProxies_attribute_EReference(
51347 problem:LogicProblem, interpretation:PartialInterpretation,
51348 relationIterpretation:PartialRelationInterpretation,
51349 from: DefinedElement, to: DefinedElement)
51350{
51351 find interpretation(problem,interpretation);
51352 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51353 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
51354 find mustExist(problem, interpretation, from);
51355 find mustExist(problem, interpretation, to);
51356 find mustInstanceOfEReference_class(problem,interpretation,from);
51357 BooleanElement(to);
51358 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
51359 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
51360}
51361pattern refineRelation_changeable_attribute_EStructuralFeature(
51362 problem:LogicProblem, interpretation:PartialInterpretation,
51363 relationIterpretation:PartialRelationInterpretation,
51364 from: DefinedElement, to: DefinedElement)
51365{
51366 find interpretation(problem,interpretation);
51367 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51368 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
51369 find mustExist(problem, interpretation, from);
51370 find mustExist(problem, interpretation, to);
51371 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51372 BooleanElement(to);
51373 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
51374 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
51375}
51376pattern refineRelation_volatile_attribute_EStructuralFeature(
51377 problem:LogicProblem, interpretation:PartialInterpretation,
51378 relationIterpretation:PartialRelationInterpretation,
51379 from: DefinedElement, to: DefinedElement)
51380{
51381 find interpretation(problem,interpretation);
51382 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51383 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
51384 find mustExist(problem, interpretation, from);
51385 find mustExist(problem, interpretation, to);
51386 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51387 BooleanElement(to);
51388 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
51389 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
51390}
51391pattern refineRelation_transient_attribute_EStructuralFeature(
51392 problem:LogicProblem, interpretation:PartialInterpretation,
51393 relationIterpretation:PartialRelationInterpretation,
51394 from: DefinedElement, to: DefinedElement)
51395{
51396 find interpretation(problem,interpretation);
51397 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51398 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
51399 find mustExist(problem, interpretation, from);
51400 find mustExist(problem, interpretation, to);
51401 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51402 BooleanElement(to);
51403 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
51404 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
51405}
51406pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
51407 problem:LogicProblem, interpretation:PartialInterpretation,
51408 relationIterpretation:PartialRelationInterpretation,
51409 from: DefinedElement, to: DefinedElement)
51410{
51411 find interpretation(problem,interpretation);
51412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
51414 find mustExist(problem, interpretation, from);
51415 find mustExist(problem, interpretation, to);
51416 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51417 StringElement(to);
51418 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
51419 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
51420}
51421pattern refineRelation_unsettable_attribute_EStructuralFeature(
51422 problem:LogicProblem, interpretation:PartialInterpretation,
51423 relationIterpretation:PartialRelationInterpretation,
51424 from: DefinedElement, to: DefinedElement)
51425{
51426 find interpretation(problem,interpretation);
51427 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51428 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
51429 find mustExist(problem, interpretation, from);
51430 find mustExist(problem, interpretation, to);
51431 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51432 BooleanElement(to);
51433 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
51434 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
51435}
51436pattern refineRelation_derived_attribute_EStructuralFeature(
51437 problem:LogicProblem, interpretation:PartialInterpretation,
51438 relationIterpretation:PartialRelationInterpretation,
51439 from: DefinedElement, to: DefinedElement)
51440{
51441 find interpretation(problem,interpretation);
51442 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51443 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
51444 find mustExist(problem, interpretation, from);
51445 find mustExist(problem, interpretation, to);
51446 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
51447 BooleanElement(to);
51448 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
51449 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
51450}
51451pattern refineRelation_ordered_attribute_ETypedElement(
51452 problem:LogicProblem, interpretation:PartialInterpretation,
51453 relationIterpretation:PartialRelationInterpretation,
51454 from: DefinedElement, to: DefinedElement)
51455{
51456 find interpretation(problem,interpretation);
51457 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51458 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
51459 find mustExist(problem, interpretation, from);
51460 find mustExist(problem, interpretation, to);
51461 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51462 BooleanElement(to);
51463 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
51464 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
51465}
51466pattern refineRelation_unique_attribute_ETypedElement(
51467 problem:LogicProblem, interpretation:PartialInterpretation,
51468 relationIterpretation:PartialRelationInterpretation,
51469 from: DefinedElement, to: DefinedElement)
51470{
51471 find interpretation(problem,interpretation);
51472 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51473 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
51474 find mustExist(problem, interpretation, from);
51475 find mustExist(problem, interpretation, to);
51476 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51477 BooleanElement(to);
51478 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
51479 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
51480}
51481pattern refineRelation_lowerBound_attribute_ETypedElement(
51482 problem:LogicProblem, interpretation:PartialInterpretation,
51483 relationIterpretation:PartialRelationInterpretation,
51484 from: DefinedElement, to: DefinedElement)
51485{
51486 find interpretation(problem,interpretation);
51487 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51488 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
51489 find mustExist(problem, interpretation, from);
51490 find mustExist(problem, interpretation, to);
51491 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51492 IntegerElement(to);
51493 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
51494 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
51495}
51496pattern refineRelation_upperBound_attribute_ETypedElement(
51497 problem:LogicProblem, interpretation:PartialInterpretation,
51498 relationIterpretation:PartialRelationInterpretation,
51499 from: DefinedElement, to: DefinedElement)
51500{
51501 find interpretation(problem,interpretation);
51502 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51503 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
51504 find mustExist(problem, interpretation, from);
51505 find mustExist(problem, interpretation, to);
51506 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51507 IntegerElement(to);
51508 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
51509 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
51510}
51511pattern refineRelation_many_attribute_ETypedElement(
51512 problem:LogicProblem, interpretation:PartialInterpretation,
51513 relationIterpretation:PartialRelationInterpretation,
51514 from: DefinedElement, to: DefinedElement)
51515{
51516 find interpretation(problem,interpretation);
51517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
51519 find mustExist(problem, interpretation, from);
51520 find mustExist(problem, interpretation, to);
51521 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51522 BooleanElement(to);
51523 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
51524 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
51525}
51526pattern refineRelation_required_attribute_ETypedElement(
51527 problem:LogicProblem, interpretation:PartialInterpretation,
51528 relationIterpretation:PartialRelationInterpretation,
51529 from: DefinedElement, to: DefinedElement)
51530{
51531 find interpretation(problem,interpretation);
51532 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51533 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
51534 find mustExist(problem, interpretation, from);
51535 find mustExist(problem, interpretation, to);
51536 find mustInstanceOfETypedElement_class(problem,interpretation,from);
51537 BooleanElement(to);
51538 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
51539 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
51540}
51541pattern refineRelation_key_attribute_EStringToStringMapEntry(
51542 problem:LogicProblem, interpretation:PartialInterpretation,
51543 relationIterpretation:PartialRelationInterpretation,
51544 from: DefinedElement, to: DefinedElement)
51545{
51546 find interpretation(problem,interpretation);
51547 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51548 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
51549 find mustExist(problem, interpretation, from);
51550 find mustExist(problem, interpretation, to);
51551 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
51552 StringElement(to);
51553 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51554 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51555}
51556pattern refineRelation_value_attribute_EStringToStringMapEntry(
51557 problem:LogicProblem, interpretation:PartialInterpretation,
51558 relationIterpretation:PartialRelationInterpretation,
51559 from: DefinedElement, to: DefinedElement)
51560{
51561 find interpretation(problem,interpretation);
51562 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
51563 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
51564 find mustExist(problem, interpretation, from);
51565 find mustExist(problem, interpretation, to);
51566 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
51567 StringElement(to);
51568 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51569 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
51570}
51571import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
51572import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
51573import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
51574
51575//////////
51576// 0. Util
51577//////////
51578private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
51579 PartialInterpretation.problem(interpretation,problem);
51580}
51581
51582/////////////////////////
51583// 0.1 Existence
51584/////////////////////////
51585private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51586 find interpretation(problem,interpretation);
51587 LogicProblem.elements(problem,element);
51588} or {
51589 find interpretation(problem,interpretation);
51590 PartialInterpretation.newElements(interpretation,element);
51591}
51592
51593private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51594 find mustExist(problem,interpretation,element);
51595} or {
51596 find interpretation(problem,interpretation);
51597 neg find elementCloseWorld(element);
51598 PartialInterpretation.openWorldElements(interpretation,element);
51599}
51600
51601private pattern elementCloseWorld(element:DefinedElement) {
51602 PartialInterpretation.openWorldElements(i,element);
51603 PartialInterpretation.maxNewElements(i,0);
51604} or {
51605 Scope.targetTypeInterpretation(scope,interpretation);
51606 PartialTypeInterpratation.elements(interpretation,element);
51607 Scope.maxNewElements(scope,0);
51608}
51609
51610////////////////////////
51611// 0.2 Equivalence
51612////////////////////////
51613pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
51614 find mayExist(problem,interpretation,a);
51615 find mayExist(problem,interpretation,b);
51616 a == b;
51617}
51618
51619////////////////////////
51620// 0.3 Required Patterns by TypeIndexer
51621////////////////////////
51622private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
51623 find interpretation(problem,interpretation);
51624 LogicProblem.types(problem,type);
51625 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
51626 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51627}
51628
51629private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
51630 find interpretation(problem,interpretation);
51631 LogicProblem.types(problem,type);
51632 TypeDefinition.elements(type,element);
51633} or {
51634 find interpretation(problem,interpretation);
51635 find typeInterpretation(problem,interpretation,type,typeInterpretation);
51636 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
51637}
51638
51639private pattern isPrimitive(element: PrimitiveElement) {
51640 PrimitiveElement(element);
51641}
51642
51643//////////
51644// 1. Problem-Specific Base Indexers
51645//////////
51646// 1.1 Type Indexers
51647//////////
51648// 1.1.1 primitive Type Indexers
51649//////////
51650
51651//////////
51652// 1.1.2 domain-specific Type Indexers
51653//////////
51654/**
51655 * An element must be an instance of type "EAttribute class".
51656 */
51657private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51658 Type.name(type,"EAttribute class");
51659 find directInstanceOf(problem,interpretation,element,type);
51660}
51661private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51662 find interpretation(problem,interpretation);
51663 PartialInterpretation.scopes(interpretation,scope);
51664 Scope.targetTypeInterpretation(scope,typeInterpretation);
51665 Scope.maxNewElements(scope,0);
51666 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51667 Type.name(type,"EAttribute class");
51668}
51669
51670/**
51671 * An element may be an instance of type "EAttribute class".
51672 */
51673private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51674{
51675 find interpretation(problem,interpretation);
51676 PartialInterpretation.newElements(interpretation,element);
51677 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51678 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51679 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
51680 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51681 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51682 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51683 neg find mustInstanceOfEReference_class(problem,interpretation,element);
51684 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
51685 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51686 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51687 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51688 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
51689 neg find isPrimitive(element);
51690} or {
51691 find interpretation(problem,interpretation);
51692 PartialInterpretation.openWorldElements(interpretation,element);
51693 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51694 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51695 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
51696 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51697 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51698 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51699 neg find mustInstanceOfEReference_class(problem,interpretation,element);
51700 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
51701 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51702 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51703 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51704 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
51705 neg find isPrimitive(element);
51706} or
51707{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
51708/**
51709 * An element must be an instance of type "EAnnotation class".
51710 */
51711private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51712 Type.name(type,"EAnnotation class");
51713 find directInstanceOf(problem,interpretation,element,type);
51714}
51715private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51716 find interpretation(problem,interpretation);
51717 PartialInterpretation.scopes(interpretation,scope);
51718 Scope.targetTypeInterpretation(scope,typeInterpretation);
51719 Scope.maxNewElements(scope,0);
51720 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51721 Type.name(type,"EAnnotation class");
51722}
51723
51724/**
51725 * An element may be an instance of type "EAnnotation class".
51726 */
51727private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51728{
51729 find interpretation(problem,interpretation);
51730 PartialInterpretation.newElements(interpretation,element);
51731 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
51732 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51733 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51734 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51735 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
51736 neg find isPrimitive(element);
51737} or {
51738 find interpretation(problem,interpretation);
51739 PartialInterpretation.openWorldElements(interpretation,element);
51740 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
51741 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51742 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51743 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51744 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
51745 neg find isPrimitive(element);
51746} or
51747{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
51748/**
51749 * An element must be an instance of type "EClass class".
51750 */
51751private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51752 Type.name(type,"EClass class");
51753 find directInstanceOf(problem,interpretation,element,type);
51754}
51755private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51756 find interpretation(problem,interpretation);
51757 PartialInterpretation.scopes(interpretation,scope);
51758 Scope.targetTypeInterpretation(scope,typeInterpretation);
51759 Scope.maxNewElements(scope,0);
51760 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51761 Type.name(type,"EClass class");
51762}
51763
51764/**
51765 * An element may be an instance of type "EClass class".
51766 */
51767private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51768{
51769 find interpretation(problem,interpretation);
51770 PartialInterpretation.newElements(interpretation,element);
51771 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51772 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51773 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51774 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51775 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51776 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51777 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51778 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51779 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51780 neg find scopeDisallowsNewEClass_class(problem, interpretation);
51781 neg find isPrimitive(element);
51782} or {
51783 find interpretation(problem,interpretation);
51784 PartialInterpretation.openWorldElements(interpretation,element);
51785 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51786 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51787 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51788 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51789 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51790 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51791 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51792 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51793 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51794 neg find scopeDisallowsNewEClass_class(problem, interpretation);
51795 neg find isPrimitive(element);
51796} or
51797{ find mustInstanceOfEClass_class(problem,interpretation,element); }
51798/**
51799 * An element must be an instance of type "EClassifier class".
51800 */
51801private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51802 Type.name(type,"EClassifier class");
51803 find directInstanceOf(problem,interpretation,element,type);
51804}
51805private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51806 find interpretation(problem,interpretation);
51807 PartialInterpretation.scopes(interpretation,scope);
51808 Scope.targetTypeInterpretation(scope,typeInterpretation);
51809 Scope.maxNewElements(scope,0);
51810 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51811 Type.name(type,"EClassifier class");
51812}
51813
51814/**
51815 * An element may be an instance of type "EClassifier class".
51816 */
51817private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51818{
51819 find interpretation(problem,interpretation);
51820 PartialInterpretation.newElements(interpretation,element);
51821 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51822 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51823 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51824 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51825 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51826 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51827 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51828 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51829 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51830 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51831 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
51832 neg find isPrimitive(element);
51833} or {
51834 find interpretation(problem,interpretation);
51835 PartialInterpretation.openWorldElements(interpretation,element);
51836 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51837 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51838 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
51839 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51840 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51841 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51842 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51843 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51844 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51845 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51846 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
51847 neg find isPrimitive(element);
51848} or
51849{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
51850/**
51851 * An element must be an instance of type "EDataType class".
51852 */
51853private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51854 Type.name(type,"EDataType class");
51855 find directInstanceOf(problem,interpretation,element,type);
51856}
51857private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51858 find interpretation(problem,interpretation);
51859 PartialInterpretation.scopes(interpretation,scope);
51860 Scope.targetTypeInterpretation(scope,typeInterpretation);
51861 Scope.maxNewElements(scope,0);
51862 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51863 Type.name(type,"EDataType class");
51864}
51865
51866/**
51867 * An element may be an instance of type "EDataType class".
51868 */
51869private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51870{
51871 find interpretation(problem,interpretation);
51872 PartialInterpretation.newElements(interpretation,element);
51873 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51874 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51875 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
51876 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51877 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51878 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51879 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51880 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51881 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51882 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51883 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
51884 neg find isPrimitive(element);
51885} or {
51886 find interpretation(problem,interpretation);
51887 PartialInterpretation.openWorldElements(interpretation,element);
51888 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51889 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51890 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
51891 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51892 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51893 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51894 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51895 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51896 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51897 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51898 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
51899 neg find isPrimitive(element);
51900} or
51901{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
51902/**
51903 * An element must be an instance of type "EEnum class".
51904 */
51905private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51906 Type.name(type,"EEnum class");
51907 find directInstanceOf(problem,interpretation,element,type);
51908}
51909private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51910 find interpretation(problem,interpretation);
51911 PartialInterpretation.scopes(interpretation,scope);
51912 Scope.targetTypeInterpretation(scope,typeInterpretation);
51913 Scope.maxNewElements(scope,0);
51914 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51915 Type.name(type,"EEnum class");
51916}
51917
51918/**
51919 * An element may be an instance of type "EEnum class".
51920 */
51921private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51922{
51923 find interpretation(problem,interpretation);
51924 PartialInterpretation.newElements(interpretation,element);
51925 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51926 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51927 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51928 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51929 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51930 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51931 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51932 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51933 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51934 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
51935 neg find isPrimitive(element);
51936} or {
51937 find interpretation(problem,interpretation);
51938 PartialInterpretation.openWorldElements(interpretation,element);
51939 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51940 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51941 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51942 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51943 neg find mustInstanceOfEClass_class(problem,interpretation,element);
51944 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51945 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51946 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51947 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
51948 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
51949 neg find isPrimitive(element);
51950} or
51951{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
51952/**
51953 * An element must be an instance of type "EEnumLiteral class".
51954 */
51955private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
51956 Type.name(type,"EEnumLiteral class");
51957 find directInstanceOf(problem,interpretation,element,type);
51958}
51959private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
51960 find interpretation(problem,interpretation);
51961 PartialInterpretation.scopes(interpretation,scope);
51962 Scope.targetTypeInterpretation(scope,typeInterpretation);
51963 Scope.maxNewElements(scope,0);
51964 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
51965 Type.name(type,"EEnumLiteral class");
51966}
51967
51968/**
51969 * An element may be an instance of type "EEnumLiteral class".
51970 */
51971private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
51972{
51973 find interpretation(problem,interpretation);
51974 PartialInterpretation.newElements(interpretation,element);
51975 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51976 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51977 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51978 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51979 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51980 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51981 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51982 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51983 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
51984 neg find isPrimitive(element);
51985} or {
51986 find interpretation(problem,interpretation);
51987 PartialInterpretation.openWorldElements(interpretation,element);
51988 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
51989 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
51990 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
51991 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
51992 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
51993 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
51994 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
51995 neg find mustInstanceOfEObject_class(problem,interpretation,element);
51996 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
51997 neg find isPrimitive(element);
51998} or
51999{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
52000/**
52001 * An element must be an instance of type "EModelElement class".
52002 */
52003private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52004 Type.name(type,"EModelElement class");
52005 find directInstanceOf(problem,interpretation,element,type);
52006}
52007private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52008 find interpretation(problem,interpretation);
52009 PartialInterpretation.scopes(interpretation,scope);
52010 Scope.targetTypeInterpretation(scope,typeInterpretation);
52011 Scope.maxNewElements(scope,0);
52012 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52013 Type.name(type,"EModelElement class");
52014}
52015
52016/**
52017 * An element may be an instance of type "EModelElement class".
52018 */
52019private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52020{
52021 find interpretation(problem,interpretation);
52022 PartialInterpretation.newElements(interpretation,element);
52023 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52024 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52025 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52026 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52027 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52028 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
52029 neg find isPrimitive(element);
52030} or {
52031 find interpretation(problem,interpretation);
52032 PartialInterpretation.openWorldElements(interpretation,element);
52033 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52034 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52035 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52036 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52037 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52038 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
52039 neg find isPrimitive(element);
52040} or
52041{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
52042/**
52043 * An element must be an instance of type "ENamedElement class".
52044 */
52045private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52046 Type.name(type,"ENamedElement class");
52047 find directInstanceOf(problem,interpretation,element,type);
52048}
52049private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52050 find interpretation(problem,interpretation);
52051 PartialInterpretation.scopes(interpretation,scope);
52052 Scope.targetTypeInterpretation(scope,typeInterpretation);
52053 Scope.maxNewElements(scope,0);
52054 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52055 Type.name(type,"ENamedElement class");
52056}
52057
52058/**
52059 * An element may be an instance of type "ENamedElement class".
52060 */
52061private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52062{
52063 find interpretation(problem,interpretation);
52064 PartialInterpretation.newElements(interpretation,element);
52065 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52066 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52067 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52068 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52069 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52070 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
52071 neg find isPrimitive(element);
52072} or {
52073 find interpretation(problem,interpretation);
52074 PartialInterpretation.openWorldElements(interpretation,element);
52075 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52076 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52077 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52078 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52079 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52080 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
52081 neg find isPrimitive(element);
52082} or
52083{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
52084/**
52085 * An element must be an instance of type "EObject class".
52086 */
52087private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52088 Type.name(type,"EObject class");
52089 find directInstanceOf(problem,interpretation,element,type);
52090}
52091private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52092 find interpretation(problem,interpretation);
52093 PartialInterpretation.scopes(interpretation,scope);
52094 Scope.targetTypeInterpretation(scope,typeInterpretation);
52095 Scope.maxNewElements(scope,0);
52096 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52097 Type.name(type,"EObject class");
52098}
52099
52100/**
52101 * An element may be an instance of type "EObject class".
52102 */
52103private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52104{
52105 find interpretation(problem,interpretation);
52106 PartialInterpretation.newElements(interpretation,element);
52107 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52108 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52109 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52110 neg find scopeDisallowsNewEObject_class(problem, interpretation);
52111 neg find isPrimitive(element);
52112} or {
52113 find interpretation(problem,interpretation);
52114 PartialInterpretation.openWorldElements(interpretation,element);
52115 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52116 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52117 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52118 neg find scopeDisallowsNewEObject_class(problem, interpretation);
52119 neg find isPrimitive(element);
52120} or
52121{ find mustInstanceOfEObject_class(problem,interpretation,element); }
52122/**
52123 * An element must be an instance of type "EOperation class".
52124 */
52125private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52126 Type.name(type,"EOperation class");
52127 find directInstanceOf(problem,interpretation,element,type);
52128}
52129private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52130 find interpretation(problem,interpretation);
52131 PartialInterpretation.scopes(interpretation,scope);
52132 Scope.targetTypeInterpretation(scope,typeInterpretation);
52133 Scope.maxNewElements(scope,0);
52134 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52135 Type.name(type,"EOperation class");
52136}
52137
52138/**
52139 * An element may be an instance of type "EOperation class".
52140 */
52141private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52142{
52143 find interpretation(problem,interpretation);
52144 PartialInterpretation.newElements(interpretation,element);
52145 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52146 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52147 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52148 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52149 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52150 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52151 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52152 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52153 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52154 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52155 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
52156 neg find isPrimitive(element);
52157} or {
52158 find interpretation(problem,interpretation);
52159 PartialInterpretation.openWorldElements(interpretation,element);
52160 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52161 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52162 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52163 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52164 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52165 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52166 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52167 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52168 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52169 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52170 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
52171 neg find isPrimitive(element);
52172} or
52173{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
52174/**
52175 * An element must be an instance of type "EPackage class".
52176 */
52177private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52178 Type.name(type,"EPackage class");
52179 find directInstanceOf(problem,interpretation,element,type);
52180}
52181private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52182 find interpretation(problem,interpretation);
52183 PartialInterpretation.scopes(interpretation,scope);
52184 Scope.targetTypeInterpretation(scope,typeInterpretation);
52185 Scope.maxNewElements(scope,0);
52186 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52187 Type.name(type,"EPackage class");
52188}
52189
52190/**
52191 * An element may be an instance of type "EPackage class".
52192 */
52193private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52194{
52195 find interpretation(problem,interpretation);
52196 PartialInterpretation.newElements(interpretation,element);
52197 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52198 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52199 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52200 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52201 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
52202 neg find isPrimitive(element);
52203} or {
52204 find interpretation(problem,interpretation);
52205 PartialInterpretation.openWorldElements(interpretation,element);
52206 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52207 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52208 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
52209 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52210 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
52211 neg find isPrimitive(element);
52212} or
52213{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
52214/**
52215 * An element must be an instance of type "EParameter class".
52216 */
52217private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52218 Type.name(type,"EParameter class");
52219 find directInstanceOf(problem,interpretation,element,type);
52220}
52221private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52222 find interpretation(problem,interpretation);
52223 PartialInterpretation.scopes(interpretation,scope);
52224 Scope.targetTypeInterpretation(scope,typeInterpretation);
52225 Scope.maxNewElements(scope,0);
52226 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52227 Type.name(type,"EParameter class");
52228}
52229
52230/**
52231 * An element may be an instance of type "EParameter class".
52232 */
52233private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52234{
52235 find interpretation(problem,interpretation);
52236 PartialInterpretation.newElements(interpretation,element);
52237 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52238 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52239 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52240 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52241 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52242 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52243 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52244 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52245 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52246 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52247 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
52248 neg find isPrimitive(element);
52249} or {
52250 find interpretation(problem,interpretation);
52251 PartialInterpretation.openWorldElements(interpretation,element);
52252 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52253 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52254 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52255 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52256 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52257 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52258 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52259 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52260 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52261 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52262 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
52263 neg find isPrimitive(element);
52264} or
52265{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
52266/**
52267 * An element must be an instance of type "EReference class".
52268 */
52269private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52270 Type.name(type,"EReference class");
52271 find directInstanceOf(problem,interpretation,element,type);
52272}
52273private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52274 find interpretation(problem,interpretation);
52275 PartialInterpretation.scopes(interpretation,scope);
52276 Scope.targetTypeInterpretation(scope,typeInterpretation);
52277 Scope.maxNewElements(scope,0);
52278 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52279 Type.name(type,"EReference class");
52280}
52281
52282/**
52283 * An element may be an instance of type "EReference class".
52284 */
52285private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52286{
52287 find interpretation(problem,interpretation);
52288 PartialInterpretation.newElements(interpretation,element);
52289 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52290 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52291 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52292 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52293 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52294 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52295 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52296 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52297 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52298 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52299 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52300 neg find scopeDisallowsNewEReference_class(problem, interpretation);
52301 neg find isPrimitive(element);
52302} or {
52303 find interpretation(problem,interpretation);
52304 PartialInterpretation.openWorldElements(interpretation,element);
52305 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52306 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52307 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52308 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52309 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52310 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52311 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52312 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52313 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52314 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52315 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52316 neg find scopeDisallowsNewEReference_class(problem, interpretation);
52317 neg find isPrimitive(element);
52318} or
52319{ find mustInstanceOfEReference_class(problem,interpretation,element); }
52320/**
52321 * An element must be an instance of type "EStructuralFeature class".
52322 */
52323private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52324 Type.name(type,"EStructuralFeature class");
52325 find directInstanceOf(problem,interpretation,element,type);
52326}
52327private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52328 find interpretation(problem,interpretation);
52329 PartialInterpretation.scopes(interpretation,scope);
52330 Scope.targetTypeInterpretation(scope,typeInterpretation);
52331 Scope.maxNewElements(scope,0);
52332 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52333 Type.name(type,"EStructuralFeature class");
52334}
52335
52336/**
52337 * An element may be an instance of type "EStructuralFeature class".
52338 */
52339private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52340{
52341 find interpretation(problem,interpretation);
52342 PartialInterpretation.newElements(interpretation,element);
52343 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52344 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52345 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52346 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52347 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52348 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52349 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52350 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52351 neg find mustInstanceOfEReference_class(problem,interpretation,element);
52352 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52353 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52354 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52355 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
52356 neg find isPrimitive(element);
52357} or {
52358 find interpretation(problem,interpretation);
52359 PartialInterpretation.openWorldElements(interpretation,element);
52360 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52361 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52362 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
52363 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52364 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52365 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52366 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52367 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52368 neg find mustInstanceOfEReference_class(problem,interpretation,element);
52369 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52370 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52371 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52372 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
52373 neg find isPrimitive(element);
52374} or
52375{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
52376/**
52377 * An element must be an instance of type "ETypedElement class".
52378 */
52379private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52380 Type.name(type,"ETypedElement class");
52381 find directInstanceOf(problem,interpretation,element,type);
52382}
52383private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52384 find interpretation(problem,interpretation);
52385 PartialInterpretation.scopes(interpretation,scope);
52386 Scope.targetTypeInterpretation(scope,typeInterpretation);
52387 Scope.maxNewElements(scope,0);
52388 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52389 Type.name(type,"ETypedElement class");
52390}
52391
52392/**
52393 * An element may be an instance of type "ETypedElement class".
52394 */
52395private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52396{
52397 find interpretation(problem,interpretation);
52398 PartialInterpretation.newElements(interpretation,element);
52399 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52400 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52401 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52402 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52403 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52404 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52405 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52406 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52407 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52408 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52409 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52410 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
52411 neg find isPrimitive(element);
52412} or {
52413 find interpretation(problem,interpretation);
52414 PartialInterpretation.openWorldElements(interpretation,element);
52415 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52416 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52417 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
52418 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52419 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52420 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52421 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
52422 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
52423 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52424 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52425 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52426 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
52427 neg find isPrimitive(element);
52428} or
52429{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
52430/**
52431 * An element must be an instance of type "EStringToStringMapEntry class".
52432 */
52433private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52434 Type.name(type,"EStringToStringMapEntry class");
52435 find directInstanceOf(problem,interpretation,element,type);
52436}
52437private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52438 find interpretation(problem,interpretation);
52439 PartialInterpretation.scopes(interpretation,scope);
52440 Scope.targetTypeInterpretation(scope,typeInterpretation);
52441 Scope.maxNewElements(scope,0);
52442 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52443 Type.name(type,"EStringToStringMapEntry class");
52444}
52445
52446/**
52447 * An element may be an instance of type "EStringToStringMapEntry class".
52448 */
52449private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52450{
52451 find interpretation(problem,interpretation);
52452 PartialInterpretation.newElements(interpretation,element);
52453 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52454 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52455 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52456 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
52457 neg find isPrimitive(element);
52458} or {
52459 find interpretation(problem,interpretation);
52460 PartialInterpretation.openWorldElements(interpretation,element);
52461 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52462 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52463 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52464 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
52465 neg find isPrimitive(element);
52466} or
52467{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
52468/**
52469 * An element must be an instance of type "EGenericType class".
52470 */
52471private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52472 Type.name(type,"EGenericType class");
52473 find directInstanceOf(problem,interpretation,element,type);
52474}
52475private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52476 find interpretation(problem,interpretation);
52477 PartialInterpretation.scopes(interpretation,scope);
52478 Scope.targetTypeInterpretation(scope,typeInterpretation);
52479 Scope.maxNewElements(scope,0);
52480 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52481 Type.name(type,"EGenericType class");
52482}
52483
52484/**
52485 * An element may be an instance of type "EGenericType class".
52486 */
52487private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52488{
52489 find interpretation(problem,interpretation);
52490 PartialInterpretation.newElements(interpretation,element);
52491 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52492 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52493 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52494 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
52495 neg find isPrimitive(element);
52496} or {
52497 find interpretation(problem,interpretation);
52498 PartialInterpretation.openWorldElements(interpretation,element);
52499 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
52500 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52501 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52502 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
52503 neg find isPrimitive(element);
52504} or
52505{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
52506/**
52507 * An element must be an instance of type "ETypeParameter class".
52508 */
52509private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52510 Type.name(type,"ETypeParameter class");
52511 find directInstanceOf(problem,interpretation,element,type);
52512}
52513private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
52514 find interpretation(problem,interpretation);
52515 PartialInterpretation.scopes(interpretation,scope);
52516 Scope.targetTypeInterpretation(scope,typeInterpretation);
52517 Scope.maxNewElements(scope,0);
52518 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52519 Type.name(type,"ETypeParameter class");
52520}
52521
52522/**
52523 * An element may be an instance of type "ETypeParameter class".
52524 */
52525private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52526{
52527 find interpretation(problem,interpretation);
52528 PartialInterpretation.newElements(interpretation,element);
52529 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52530 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52531 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52532 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52533 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52534 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52535 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52536 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52537 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
52538 neg find isPrimitive(element);
52539} or {
52540 find interpretation(problem,interpretation);
52541 PartialInterpretation.openWorldElements(interpretation,element);
52542 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52543 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52544 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52545 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52546 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52547 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52548 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52549 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52550 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
52551 neg find isPrimitive(element);
52552} or
52553{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
52554/**
52555 * An element must be an instance of type "EModelElement class DefinedPart".
52556 */
52557private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52558 Type.name(type,"EModelElement class DefinedPart");
52559 find directInstanceOf(problem,interpretation,element,type);
52560}
52561private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52562 find interpretation(problem,interpretation);
52563 PartialInterpretation.scopes(interpretation,scope);
52564 Scope.targetTypeInterpretation(scope,typeInterpretation);
52565 Scope.maxNewElements(scope,0);
52566 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52567 Type.name(type,"EModelElement class DefinedPart");
52568}
52569
52570/**
52571 * An element may be an instance of type "EModelElement class DefinedPart".
52572 */
52573private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52574{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
52575/**
52576 * An element must be an instance of type "EModelElement class UndefinedPart".
52577 */
52578private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52579 Type.name(type,"EModelElement class UndefinedPart");
52580 find directInstanceOf(problem,interpretation,element,type);
52581}
52582private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52583 find interpretation(problem,interpretation);
52584 PartialInterpretation.scopes(interpretation,scope);
52585 Scope.targetTypeInterpretation(scope,typeInterpretation);
52586 Scope.maxNewElements(scope,0);
52587 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52588 Type.name(type,"EModelElement class UndefinedPart");
52589}
52590
52591/**
52592 * An element may be an instance of type "EModelElement class UndefinedPart".
52593 */
52594private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52595{
52596 find interpretation(problem,interpretation);
52597 PartialInterpretation.newElements(interpretation,element);
52598 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52599 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52600 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52601 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52602 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52603 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
52604 neg find isPrimitive(element);
52605} or {
52606 find interpretation(problem,interpretation);
52607 PartialInterpretation.openWorldElements(interpretation,element);
52608 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52609 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52610 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
52611 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52612 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52613 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
52614 neg find isPrimitive(element);
52615} or
52616{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
52617/**
52618 * An element must be an instance of type "ENamedElement class DefinedPart".
52619 */
52620private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52621 Type.name(type,"ENamedElement class DefinedPart");
52622 find directInstanceOf(problem,interpretation,element,type);
52623}
52624private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52625 find interpretation(problem,interpretation);
52626 PartialInterpretation.scopes(interpretation,scope);
52627 Scope.targetTypeInterpretation(scope,typeInterpretation);
52628 Scope.maxNewElements(scope,0);
52629 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52630 Type.name(type,"ENamedElement class DefinedPart");
52631}
52632
52633/**
52634 * An element may be an instance of type "ENamedElement class DefinedPart".
52635 */
52636private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52637{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
52638/**
52639 * An element must be an instance of type "ENamedElement class UndefinedPart".
52640 */
52641private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52642 Type.name(type,"ENamedElement class UndefinedPart");
52643 find directInstanceOf(problem,interpretation,element,type);
52644}
52645private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52646 find interpretation(problem,interpretation);
52647 PartialInterpretation.scopes(interpretation,scope);
52648 Scope.targetTypeInterpretation(scope,typeInterpretation);
52649 Scope.maxNewElements(scope,0);
52650 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52651 Type.name(type,"ENamedElement class UndefinedPart");
52652}
52653
52654/**
52655 * An element may be an instance of type "ENamedElement class UndefinedPart".
52656 */
52657private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52658{
52659 find interpretation(problem,interpretation);
52660 PartialInterpretation.newElements(interpretation,element);
52661 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52662 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52663 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52664 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52665 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52666 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52667 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52668 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52669 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52670 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
52671 neg find isPrimitive(element);
52672} or {
52673 find interpretation(problem,interpretation);
52674 PartialInterpretation.openWorldElements(interpretation,element);
52675 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52676 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
52677 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52678 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52679 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52680 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52681 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52682 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52683 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52684 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
52685 neg find isPrimitive(element);
52686} or
52687{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
52688/**
52689 * An element must be an instance of type "EPackage class DefinedPart".
52690 */
52691private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52692 Type.name(type,"EPackage class DefinedPart");
52693 find directInstanceOf(problem,interpretation,element,type);
52694}
52695private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52696 find interpretation(problem,interpretation);
52697 PartialInterpretation.scopes(interpretation,scope);
52698 Scope.targetTypeInterpretation(scope,typeInterpretation);
52699 Scope.maxNewElements(scope,0);
52700 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52701 Type.name(type,"EPackage class DefinedPart");
52702}
52703
52704/**
52705 * An element may be an instance of type "EPackage class DefinedPart".
52706 */
52707private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52708{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
52709/**
52710 * An element must be an instance of type "EPackage class UndefinedPart".
52711 */
52712private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
52713 Type.name(type,"EPackage class UndefinedPart");
52714 find directInstanceOf(problem,interpretation,element,type);
52715}
52716private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
52717 find interpretation(problem,interpretation);
52718 PartialInterpretation.scopes(interpretation,scope);
52719 Scope.targetTypeInterpretation(scope,typeInterpretation);
52720 Scope.maxNewElements(scope,0);
52721 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
52722 Type.name(type,"EPackage class UndefinedPart");
52723}
52724
52725/**
52726 * An element may be an instance of type "EPackage class UndefinedPart".
52727 */
52728private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
52729{
52730 find interpretation(problem,interpretation);
52731 PartialInterpretation.newElements(interpretation,element);
52732 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52733 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52734 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52735 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52736 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52737 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52738 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52739 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52740 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
52741 neg find isPrimitive(element);
52742} or {
52743 find interpretation(problem,interpretation);
52744 PartialInterpretation.openWorldElements(interpretation,element);
52745 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
52746 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
52747 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
52748 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
52749 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
52750 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
52751 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
52752 neg find mustInstanceOfEObject_class(problem,interpretation,element);
52753 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
52754 neg find isPrimitive(element);
52755} or
52756{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
52757
52758//////////
52759// 1.2 Relation Declaration Indexers
52760//////////
52761/**
52762 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
52763 */
52764private pattern mustInRelationeAttributeType_reference_EAttribute(
52765 problem:LogicProblem, interpretation:PartialInterpretation,
52766 source: DefinedElement, target:DefinedElement)
52767{
52768 find interpretation(problem,interpretation);
52769 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52770 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
52771 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52772 BinaryElementRelationLink.param1(link,source);
52773 BinaryElementRelationLink.param2(link,target);
52774}
52775/**
52776 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
52777 */
52778private pattern mayInRelationeAttributeType_reference_EAttribute(
52779 problem:LogicProblem, interpretation:PartialInterpretation,
52780 source: DefinedElement, target:DefinedElement)
52781{
52782 find interpretation(problem,interpretation);
52783 // The two endpoint of the link have to exist
52784 find mayExist(problem, interpretation, source);
52785 find mayExist(problem, interpretation, target);
52786 // Type consistency
52787 find mayInstanceOfEAttribute_class(problem,interpretation,source);
52788 find mayInstanceOfEDataType_class(problem,interpretation,target);
52789 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52790 // the upper bound of the multiplicity should be considered.
52791 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
52792 check(numberOfExistingReferences < 1);
52793} or {
52794 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
52795}
52796/**
52797 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
52798 */
52799private pattern mustInRelationdetails_reference_EAnnotation(
52800 problem:LogicProblem, interpretation:PartialInterpretation,
52801 source: DefinedElement, target:DefinedElement)
52802{
52803 find interpretation(problem,interpretation);
52804 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52805 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
52806 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52807 BinaryElementRelationLink.param1(link,source);
52808 BinaryElementRelationLink.param2(link,target);
52809}
52810/**
52811 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
52812 */
52813private pattern mayInRelationdetails_reference_EAnnotation(
52814 problem:LogicProblem, interpretation:PartialInterpretation,
52815 source: DefinedElement, target:DefinedElement)
52816{
52817 find interpretation(problem,interpretation);
52818 // The two endpoint of the link have to exist
52819 find mayExist(problem, interpretation, source);
52820 find mayExist(problem, interpretation, target);
52821 // Type consistency
52822 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52823 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
52824 // The reference is containment, then a new reference cannot be create if:
52825 // 1. Multiple parents
52826 neg find mustContains4(problem,interpretation,_,target);
52827 // 2. Circle in the containment hierarchy
52828 neg find mustTransitiveContains(source,target);
52829} or {
52830 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
52831}
52832/**
52833 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
52834 */
52835private pattern mustInRelationeModelElement_reference_EAnnotation(
52836 problem:LogicProblem, interpretation:PartialInterpretation,
52837 source: DefinedElement, target:DefinedElement)
52838{
52839 find interpretation(problem,interpretation);
52840 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52841 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
52842 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52843 BinaryElementRelationLink.param1(link,source);
52844 BinaryElementRelationLink.param2(link,target);
52845}
52846/**
52847 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
52848 */
52849private pattern mayInRelationeModelElement_reference_EAnnotation(
52850 problem:LogicProblem, interpretation:PartialInterpretation,
52851 source: DefinedElement, target:DefinedElement)
52852{
52853 find interpretation(problem,interpretation);
52854 // The two endpoint of the link have to exist
52855 find mayExist(problem, interpretation, source);
52856 find mayExist(problem, interpretation, target);
52857 // Type consistency
52858 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52859 find mayInstanceOfEModelElement_class(problem,interpretation,target);
52860 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
52861 // the upper bound of the multiplicity should be considered.
52862 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
52863 check(numberOfExistingReferences < 1);
52864 // The eOpposite of the reference is containment, then a referene cannot be created if
52865 // 1. Multiple parents
52866 neg find mustContains4(problem,interpretation,source,_);
52867 // 2. Circle in the containment hierarchy
52868 neg find mustTransitiveContains(source,target);
52869} or {
52870 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
52871}
52872/**
52873 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
52874 */
52875private pattern mustInRelationcontents_reference_EAnnotation(
52876 problem:LogicProblem, interpretation:PartialInterpretation,
52877 source: DefinedElement, target:DefinedElement)
52878{
52879 find interpretation(problem,interpretation);
52880 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52881 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
52882 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52883 BinaryElementRelationLink.param1(link,source);
52884 BinaryElementRelationLink.param2(link,target);
52885}
52886/**
52887 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
52888 */
52889private pattern mayInRelationcontents_reference_EAnnotation(
52890 problem:LogicProblem, interpretation:PartialInterpretation,
52891 source: DefinedElement, target:DefinedElement)
52892{
52893 find interpretation(problem,interpretation);
52894 // The two endpoint of the link have to exist
52895 find mayExist(problem, interpretation, source);
52896 find mayExist(problem, interpretation, target);
52897 // Type consistency
52898 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52899 find mayInstanceOfEObject_class(problem,interpretation,target);
52900 // The reference is containment, then a new reference cannot be create if:
52901 // 1. Multiple parents
52902 neg find mustContains4(problem,interpretation,_,target);
52903 // 2. Circle in the containment hierarchy
52904 neg find mustTransitiveContains(source,target);
52905} or {
52906 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
52907}
52908/**
52909 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
52910 */
52911private pattern mustInRelationreferences_reference_EAnnotation(
52912 problem:LogicProblem, interpretation:PartialInterpretation,
52913 source: DefinedElement, target:DefinedElement)
52914{
52915 find interpretation(problem,interpretation);
52916 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52917 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
52918 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52919 BinaryElementRelationLink.param1(link,source);
52920 BinaryElementRelationLink.param2(link,target);
52921}
52922/**
52923 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
52924 */
52925private pattern mayInRelationreferences_reference_EAnnotation(
52926 problem:LogicProblem, interpretation:PartialInterpretation,
52927 source: DefinedElement, target:DefinedElement)
52928{
52929 find interpretation(problem,interpretation);
52930 // The two endpoint of the link have to exist
52931 find mayExist(problem, interpretation, source);
52932 find mayExist(problem, interpretation, target);
52933 // Type consistency
52934 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
52935 find mayInstanceOfEObject_class(problem,interpretation,target);
52936} or {
52937 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
52938}
52939/**
52940 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
52941 */
52942private pattern mustInRelationeSuperTypes_reference_EClass(
52943 problem:LogicProblem, interpretation:PartialInterpretation,
52944 source: DefinedElement, target:DefinedElement)
52945{
52946 find interpretation(problem,interpretation);
52947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
52949 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52950 BinaryElementRelationLink.param1(link,source);
52951 BinaryElementRelationLink.param2(link,target);
52952}
52953/**
52954 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
52955 */
52956private pattern mayInRelationeSuperTypes_reference_EClass(
52957 problem:LogicProblem, interpretation:PartialInterpretation,
52958 source: DefinedElement, target:DefinedElement)
52959{
52960 find interpretation(problem,interpretation);
52961 // The two endpoint of the link have to exist
52962 find mayExist(problem, interpretation, source);
52963 find mayExist(problem, interpretation, target);
52964 // Type consistency
52965 find mayInstanceOfEClass_class(problem,interpretation,source);
52966 find mayInstanceOfEClass_class(problem,interpretation,target);
52967} or {
52968 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
52969}
52970/**
52971 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
52972 */
52973private pattern mustInRelationeOperations_reference_EClass(
52974 problem:LogicProblem, interpretation:PartialInterpretation,
52975 source: DefinedElement, target:DefinedElement)
52976{
52977 find interpretation(problem,interpretation);
52978 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
52979 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
52980 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
52981 BinaryElementRelationLink.param1(link,source);
52982 BinaryElementRelationLink.param2(link,target);
52983}
52984/**
52985 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
52986 */
52987private pattern mayInRelationeOperations_reference_EClass(
52988 problem:LogicProblem, interpretation:PartialInterpretation,
52989 source: DefinedElement, target:DefinedElement)
52990{
52991 find interpretation(problem,interpretation);
52992 // The two endpoint of the link have to exist
52993 find mayExist(problem, interpretation, source);
52994 find mayExist(problem, interpretation, target);
52995 // Type consistency
52996 find mayInstanceOfEClass_class(problem,interpretation,source);
52997 find mayInstanceOfEOperation_class(problem,interpretation,target);
52998 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
52999 // the upper bound of the opposite reference multiplicity should be considered.
53000 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
53001 check(numberOfExistingOppositeReferences < 1);
53002 // The reference is containment, then a new reference cannot be create if:
53003 // 1. Multiple parents
53004 neg find mustContains4(problem,interpretation,_,target);
53005 // 2. Circle in the containment hierarchy
53006 neg find mustTransitiveContains(source,target);
53007} or {
53008 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
53009}
53010/**
53011 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
53012 */
53013private pattern mustInRelationeAllAttributes_reference_EClass(
53014 problem:LogicProblem, interpretation:PartialInterpretation,
53015 source: DefinedElement, target:DefinedElement)
53016{
53017 find interpretation(problem,interpretation);
53018 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53019 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
53020 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53021 BinaryElementRelationLink.param1(link,source);
53022 BinaryElementRelationLink.param2(link,target);
53023}
53024/**
53025 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
53026 */
53027private pattern mayInRelationeAllAttributes_reference_EClass(
53028 problem:LogicProblem, interpretation:PartialInterpretation,
53029 source: DefinedElement, target:DefinedElement)
53030{
53031 find interpretation(problem,interpretation);
53032 // The two endpoint of the link have to exist
53033 find mayExist(problem, interpretation, source);
53034 find mayExist(problem, interpretation, target);
53035 // Type consistency
53036 find mayInstanceOfEClass_class(problem,interpretation,source);
53037 find mayInstanceOfEAttribute_class(problem,interpretation,target);
53038} or {
53039 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
53040}
53041/**
53042 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
53043 */
53044private pattern mustInRelationeAllReferences_reference_EClass(
53045 problem:LogicProblem, interpretation:PartialInterpretation,
53046 source: DefinedElement, target:DefinedElement)
53047{
53048 find interpretation(problem,interpretation);
53049 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53050 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
53051 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53052 BinaryElementRelationLink.param1(link,source);
53053 BinaryElementRelationLink.param2(link,target);
53054}
53055/**
53056 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
53057 */
53058private pattern mayInRelationeAllReferences_reference_EClass(
53059 problem:LogicProblem, interpretation:PartialInterpretation,
53060 source: DefinedElement, target:DefinedElement)
53061{
53062 find interpretation(problem,interpretation);
53063 // The two endpoint of the link have to exist
53064 find mayExist(problem, interpretation, source);
53065 find mayExist(problem, interpretation, target);
53066 // Type consistency
53067 find mayInstanceOfEClass_class(problem,interpretation,source);
53068 find mayInstanceOfEReference_class(problem,interpretation,target);
53069} or {
53070 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
53071}
53072/**
53073 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
53074 */
53075private pattern mustInRelationeReferences_reference_EClass(
53076 problem:LogicProblem, interpretation:PartialInterpretation,
53077 source: DefinedElement, target:DefinedElement)
53078{
53079 find interpretation(problem,interpretation);
53080 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53081 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
53082 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53083 BinaryElementRelationLink.param1(link,source);
53084 BinaryElementRelationLink.param2(link,target);
53085}
53086/**
53087 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
53088 */
53089private pattern mayInRelationeReferences_reference_EClass(
53090 problem:LogicProblem, interpretation:PartialInterpretation,
53091 source: DefinedElement, target:DefinedElement)
53092{
53093 find interpretation(problem,interpretation);
53094 // The two endpoint of the link have to exist
53095 find mayExist(problem, interpretation, source);
53096 find mayExist(problem, interpretation, target);
53097 // Type consistency
53098 find mayInstanceOfEClass_class(problem,interpretation,source);
53099 find mayInstanceOfEReference_class(problem,interpretation,target);
53100} or {
53101 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
53102}
53103/**
53104 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
53105 */
53106private pattern mustInRelationeAttributes_reference_EClass(
53107 problem:LogicProblem, interpretation:PartialInterpretation,
53108 source: DefinedElement, target:DefinedElement)
53109{
53110 find interpretation(problem,interpretation);
53111 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53112 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
53113 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53114 BinaryElementRelationLink.param1(link,source);
53115 BinaryElementRelationLink.param2(link,target);
53116}
53117/**
53118 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
53119 */
53120private pattern mayInRelationeAttributes_reference_EClass(
53121 problem:LogicProblem, interpretation:PartialInterpretation,
53122 source: DefinedElement, target:DefinedElement)
53123{
53124 find interpretation(problem,interpretation);
53125 // The two endpoint of the link have to exist
53126 find mayExist(problem, interpretation, source);
53127 find mayExist(problem, interpretation, target);
53128 // Type consistency
53129 find mayInstanceOfEClass_class(problem,interpretation,source);
53130 find mayInstanceOfEAttribute_class(problem,interpretation,target);
53131} or {
53132 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
53133}
53134/**
53135 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
53136 */
53137private pattern mustInRelationeAllContainments_reference_EClass(
53138 problem:LogicProblem, interpretation:PartialInterpretation,
53139 source: DefinedElement, target:DefinedElement)
53140{
53141 find interpretation(problem,interpretation);
53142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
53144 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53145 BinaryElementRelationLink.param1(link,source);
53146 BinaryElementRelationLink.param2(link,target);
53147}
53148/**
53149 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
53150 */
53151private pattern mayInRelationeAllContainments_reference_EClass(
53152 problem:LogicProblem, interpretation:PartialInterpretation,
53153 source: DefinedElement, target:DefinedElement)
53154{
53155 find interpretation(problem,interpretation);
53156 // The two endpoint of the link have to exist
53157 find mayExist(problem, interpretation, source);
53158 find mayExist(problem, interpretation, target);
53159 // Type consistency
53160 find mayInstanceOfEClass_class(problem,interpretation,source);
53161 find mayInstanceOfEReference_class(problem,interpretation,target);
53162} or {
53163 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
53164}
53165/**
53166 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
53167 */
53168private pattern mustInRelationeAllOperations_reference_EClass(
53169 problem:LogicProblem, interpretation:PartialInterpretation,
53170 source: DefinedElement, target:DefinedElement)
53171{
53172 find interpretation(problem,interpretation);
53173 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53174 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
53175 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53176 BinaryElementRelationLink.param1(link,source);
53177 BinaryElementRelationLink.param2(link,target);
53178}
53179/**
53180 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
53181 */
53182private pattern mayInRelationeAllOperations_reference_EClass(
53183 problem:LogicProblem, interpretation:PartialInterpretation,
53184 source: DefinedElement, target:DefinedElement)
53185{
53186 find interpretation(problem,interpretation);
53187 // The two endpoint of the link have to exist
53188 find mayExist(problem, interpretation, source);
53189 find mayExist(problem, interpretation, target);
53190 // Type consistency
53191 find mayInstanceOfEClass_class(problem,interpretation,source);
53192 find mayInstanceOfEOperation_class(problem,interpretation,target);
53193} or {
53194 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
53195}
53196/**
53197 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
53198 */
53199private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
53200 problem:LogicProblem, interpretation:PartialInterpretation,
53201 source: DefinedElement, target:DefinedElement)
53202{
53203 find interpretation(problem,interpretation);
53204 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53205 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
53206 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53207 BinaryElementRelationLink.param1(link,source);
53208 BinaryElementRelationLink.param2(link,target);
53209}
53210/**
53211 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
53212 */
53213private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
53214 problem:LogicProblem, interpretation:PartialInterpretation,
53215 source: DefinedElement, target:DefinedElement)
53216{
53217 find interpretation(problem,interpretation);
53218 // The two endpoint of the link have to exist
53219 find mayExist(problem, interpretation, source);
53220 find mayExist(problem, interpretation, target);
53221 // Type consistency
53222 find mayInstanceOfEClass_class(problem,interpretation,source);
53223 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
53224} or {
53225 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
53226}
53227/**
53228 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
53229 */
53230private pattern mustInRelationeAllSuperTypes_reference_EClass(
53231 problem:LogicProblem, interpretation:PartialInterpretation,
53232 source: DefinedElement, target:DefinedElement)
53233{
53234 find interpretation(problem,interpretation);
53235 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53236 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
53237 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53238 BinaryElementRelationLink.param1(link,source);
53239 BinaryElementRelationLink.param2(link,target);
53240}
53241/**
53242 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
53243 */
53244private pattern mayInRelationeAllSuperTypes_reference_EClass(
53245 problem:LogicProblem, interpretation:PartialInterpretation,
53246 source: DefinedElement, target:DefinedElement)
53247{
53248 find interpretation(problem,interpretation);
53249 // The two endpoint of the link have to exist
53250 find mayExist(problem, interpretation, source);
53251 find mayExist(problem, interpretation, target);
53252 // Type consistency
53253 find mayInstanceOfEClass_class(problem,interpretation,source);
53254 find mayInstanceOfEClass_class(problem,interpretation,target);
53255} or {
53256 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
53257}
53258/**
53259 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
53260 */
53261private pattern mustInRelationeIDAttribute_reference_EClass(
53262 problem:LogicProblem, interpretation:PartialInterpretation,
53263 source: DefinedElement, target:DefinedElement)
53264{
53265 find interpretation(problem,interpretation);
53266 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53267 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
53268 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53269 BinaryElementRelationLink.param1(link,source);
53270 BinaryElementRelationLink.param2(link,target);
53271}
53272/**
53273 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
53274 */
53275private pattern mayInRelationeIDAttribute_reference_EClass(
53276 problem:LogicProblem, interpretation:PartialInterpretation,
53277 source: DefinedElement, target:DefinedElement)
53278{
53279 find interpretation(problem,interpretation);
53280 // The two endpoint of the link have to exist
53281 find mayExist(problem, interpretation, source);
53282 find mayExist(problem, interpretation, target);
53283 // Type consistency
53284 find mayInstanceOfEClass_class(problem,interpretation,source);
53285 find mayInstanceOfEAttribute_class(problem,interpretation,target);
53286 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53287 // the upper bound of the multiplicity should be considered.
53288 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
53289 check(numberOfExistingReferences < 1);
53290} or {
53291 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
53292}
53293/**
53294 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
53295 */
53296private pattern mustInRelationeStructuralFeatures_reference_EClass(
53297 problem:LogicProblem, interpretation:PartialInterpretation,
53298 source: DefinedElement, target:DefinedElement)
53299{
53300 find interpretation(problem,interpretation);
53301 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53302 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
53303 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53304 BinaryElementRelationLink.param1(link,source);
53305 BinaryElementRelationLink.param2(link,target);
53306}
53307/**
53308 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
53309 */
53310private pattern mayInRelationeStructuralFeatures_reference_EClass(
53311 problem:LogicProblem, interpretation:PartialInterpretation,
53312 source: DefinedElement, target:DefinedElement)
53313{
53314 find interpretation(problem,interpretation);
53315 // The two endpoint of the link have to exist
53316 find mayExist(problem, interpretation, source);
53317 find mayExist(problem, interpretation, target);
53318 // Type consistency
53319 find mayInstanceOfEClass_class(problem,interpretation,source);
53320 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
53321 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53322 // the upper bound of the opposite reference multiplicity should be considered.
53323 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
53324 check(numberOfExistingOppositeReferences < 1);
53325 // The reference is containment, then a new reference cannot be create if:
53326 // 1. Multiple parents
53327 neg find mustContains4(problem,interpretation,_,target);
53328 // 2. Circle in the containment hierarchy
53329 neg find mustTransitiveContains(source,target);
53330} or {
53331 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
53332}
53333/**
53334 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
53335 */
53336private pattern mustInRelationeGenericSuperTypes_reference_EClass(
53337 problem:LogicProblem, interpretation:PartialInterpretation,
53338 source: DefinedElement, target:DefinedElement)
53339{
53340 find interpretation(problem,interpretation);
53341 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53342 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
53343 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53344 BinaryElementRelationLink.param1(link,source);
53345 BinaryElementRelationLink.param2(link,target);
53346}
53347/**
53348 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
53349 */
53350private pattern mayInRelationeGenericSuperTypes_reference_EClass(
53351 problem:LogicProblem, interpretation:PartialInterpretation,
53352 source: DefinedElement, target:DefinedElement)
53353{
53354 find interpretation(problem,interpretation);
53355 // The two endpoint of the link have to exist
53356 find mayExist(problem, interpretation, source);
53357 find mayExist(problem, interpretation, target);
53358 // Type consistency
53359 find mayInstanceOfEClass_class(problem,interpretation,source);
53360 find mayInstanceOfEGenericType_class(problem,interpretation,target);
53361 // The reference is containment, then a new reference cannot be create if:
53362 // 1. Multiple parents
53363 neg find mustContains4(problem,interpretation,_,target);
53364 // 2. Circle in the containment hierarchy
53365 neg find mustTransitiveContains(source,target);
53366} or {
53367 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
53368}
53369/**
53370 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
53371 */
53372private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
53373 problem:LogicProblem, interpretation:PartialInterpretation,
53374 source: DefinedElement, target:DefinedElement)
53375{
53376 find interpretation(problem,interpretation);
53377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
53379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53380 BinaryElementRelationLink.param1(link,source);
53381 BinaryElementRelationLink.param2(link,target);
53382}
53383/**
53384 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
53385 */
53386private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
53387 problem:LogicProblem, interpretation:PartialInterpretation,
53388 source: DefinedElement, target:DefinedElement)
53389{
53390 find interpretation(problem,interpretation);
53391 // The two endpoint of the link have to exist
53392 find mayExist(problem, interpretation, source);
53393 find mayExist(problem, interpretation, target);
53394 // Type consistency
53395 find mayInstanceOfEClass_class(problem,interpretation,source);
53396 find mayInstanceOfEGenericType_class(problem,interpretation,target);
53397} or {
53398 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
53399}
53400/**
53401 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
53402 */
53403private pattern mustInRelationePackage_reference_EClassifier(
53404 problem:LogicProblem, interpretation:PartialInterpretation,
53405 source: DefinedElement, target:DefinedElement)
53406{
53407 find interpretation(problem,interpretation);
53408 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53409 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
53410 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53411 BinaryElementRelationLink.param1(link,source);
53412 BinaryElementRelationLink.param2(link,target);
53413}
53414/**
53415 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
53416 */
53417private pattern mayInRelationePackage_reference_EClassifier(
53418 problem:LogicProblem, interpretation:PartialInterpretation,
53419 source: DefinedElement, target:DefinedElement)
53420{
53421 find interpretation(problem,interpretation);
53422 // The two endpoint of the link have to exist
53423 find mayExist(problem, interpretation, source);
53424 find mayExist(problem, interpretation, target);
53425 // Type consistency
53426 find mayInstanceOfEClassifier_class(problem,interpretation,source);
53427 find mayInstanceOfEPackage_class(problem,interpretation,target);
53428 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53429 // the upper bound of the multiplicity should be considered.
53430 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
53431 check(numberOfExistingReferences < 1);
53432 // The eOpposite of the reference is containment, then a referene cannot be created if
53433 // 1. Multiple parents
53434 neg find mustContains4(problem,interpretation,source,_);
53435 // 2. Circle in the containment hierarchy
53436 neg find mustTransitiveContains(source,target);
53437} or {
53438 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
53439}
53440/**
53441 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
53442 */
53443private pattern mustInRelationeTypeParameters_reference_EClassifier(
53444 problem:LogicProblem, interpretation:PartialInterpretation,
53445 source: DefinedElement, target:DefinedElement)
53446{
53447 find interpretation(problem,interpretation);
53448 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53449 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
53450 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53451 BinaryElementRelationLink.param1(link,source);
53452 BinaryElementRelationLink.param2(link,target);
53453}
53454/**
53455 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
53456 */
53457private pattern mayInRelationeTypeParameters_reference_EClassifier(
53458 problem:LogicProblem, interpretation:PartialInterpretation,
53459 source: DefinedElement, target:DefinedElement)
53460{
53461 find interpretation(problem,interpretation);
53462 // The two endpoint of the link have to exist
53463 find mayExist(problem, interpretation, source);
53464 find mayExist(problem, interpretation, target);
53465 // Type consistency
53466 find mayInstanceOfEClassifier_class(problem,interpretation,source);
53467 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
53468 // The reference is containment, then a new reference cannot be create if:
53469 // 1. Multiple parents
53470 neg find mustContains4(problem,interpretation,_,target);
53471 // 2. Circle in the containment hierarchy
53472 neg find mustTransitiveContains(source,target);
53473} or {
53474 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
53475}
53476/**
53477 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
53478 */
53479private pattern mustInRelationeLiterals_reference_EEnum(
53480 problem:LogicProblem, interpretation:PartialInterpretation,
53481 source: DefinedElement, target:DefinedElement)
53482{
53483 find interpretation(problem,interpretation);
53484 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53485 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
53486 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53487 BinaryElementRelationLink.param1(link,source);
53488 BinaryElementRelationLink.param2(link,target);
53489}
53490/**
53491 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
53492 */
53493private pattern mayInRelationeLiterals_reference_EEnum(
53494 problem:LogicProblem, interpretation:PartialInterpretation,
53495 source: DefinedElement, target:DefinedElement)
53496{
53497 find interpretation(problem,interpretation);
53498 // The two endpoint of the link have to exist
53499 find mayExist(problem, interpretation, source);
53500 find mayExist(problem, interpretation, target);
53501 // Type consistency
53502 find mayInstanceOfEEnum_class(problem,interpretation,source);
53503 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
53504 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53505 // the upper bound of the opposite reference multiplicity should be considered.
53506 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
53507 check(numberOfExistingOppositeReferences < 1);
53508 // The reference is containment, then a new reference cannot be create if:
53509 // 1. Multiple parents
53510 neg find mustContains4(problem,interpretation,_,target);
53511 // 2. Circle in the containment hierarchy
53512 neg find mustTransitiveContains(source,target);
53513} or {
53514 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
53515}
53516/**
53517 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
53518 */
53519private pattern mustInRelationeEnum_reference_EEnumLiteral(
53520 problem:LogicProblem, interpretation:PartialInterpretation,
53521 source: DefinedElement, target:DefinedElement)
53522{
53523 find interpretation(problem,interpretation);
53524 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53525 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
53526 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53527 BinaryElementRelationLink.param1(link,source);
53528 BinaryElementRelationLink.param2(link,target);
53529}
53530/**
53531 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
53532 */
53533private pattern mayInRelationeEnum_reference_EEnumLiteral(
53534 problem:LogicProblem, interpretation:PartialInterpretation,
53535 source: DefinedElement, target:DefinedElement)
53536{
53537 find interpretation(problem,interpretation);
53538 // The two endpoint of the link have to exist
53539 find mayExist(problem, interpretation, source);
53540 find mayExist(problem, interpretation, target);
53541 // Type consistency
53542 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
53543 find mayInstanceOfEEnum_class(problem,interpretation,target);
53544 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53545 // the upper bound of the multiplicity should be considered.
53546 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
53547 check(numberOfExistingReferences < 1);
53548 // The eOpposite of the reference is containment, then a referene cannot be created if
53549 // 1. Multiple parents
53550 neg find mustContains4(problem,interpretation,source,_);
53551 // 2. Circle in the containment hierarchy
53552 neg find mustTransitiveContains(source,target);
53553} or {
53554 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
53555}
53556/**
53557 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
53558 */
53559private pattern mustInRelationeAnnotations_reference_EModelElement(
53560 problem:LogicProblem, interpretation:PartialInterpretation,
53561 source: DefinedElement, target:DefinedElement)
53562{
53563 find interpretation(problem,interpretation);
53564 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53565 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
53566 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53567 BinaryElementRelationLink.param1(link,source);
53568 BinaryElementRelationLink.param2(link,target);
53569}
53570/**
53571 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
53572 */
53573private pattern mayInRelationeAnnotations_reference_EModelElement(
53574 problem:LogicProblem, interpretation:PartialInterpretation,
53575 source: DefinedElement, target:DefinedElement)
53576{
53577 find interpretation(problem,interpretation);
53578 // The two endpoint of the link have to exist
53579 find mayExist(problem, interpretation, source);
53580 find mayExist(problem, interpretation, target);
53581 // Type consistency
53582 find mayInstanceOfEModelElement_class(problem,interpretation,source);
53583 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
53584 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53585 // the upper bound of the opposite reference multiplicity should be considered.
53586 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
53587 check(numberOfExistingOppositeReferences < 1);
53588 // The reference is containment, then a new reference cannot be create if:
53589 // 1. Multiple parents
53590 neg find mustContains4(problem,interpretation,_,target);
53591 // 2. Circle in the containment hierarchy
53592 neg find mustTransitiveContains(source,target);
53593} or {
53594 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
53595}
53596/**
53597 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
53598 */
53599private pattern mustInRelationeContainingClass_reference_EOperation(
53600 problem:LogicProblem, interpretation:PartialInterpretation,
53601 source: DefinedElement, target:DefinedElement)
53602{
53603 find interpretation(problem,interpretation);
53604 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53605 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
53606 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53607 BinaryElementRelationLink.param1(link,source);
53608 BinaryElementRelationLink.param2(link,target);
53609}
53610/**
53611 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
53612 */
53613private pattern mayInRelationeContainingClass_reference_EOperation(
53614 problem:LogicProblem, interpretation:PartialInterpretation,
53615 source: DefinedElement, target:DefinedElement)
53616{
53617 find interpretation(problem,interpretation);
53618 // The two endpoint of the link have to exist
53619 find mayExist(problem, interpretation, source);
53620 find mayExist(problem, interpretation, target);
53621 // Type consistency
53622 find mayInstanceOfEOperation_class(problem,interpretation,source);
53623 find mayInstanceOfEClass_class(problem,interpretation,target);
53624 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53625 // the upper bound of the multiplicity should be considered.
53626 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
53627 check(numberOfExistingReferences < 1);
53628 // The eOpposite of the reference is containment, then a referene cannot be created if
53629 // 1. Multiple parents
53630 neg find mustContains4(problem,interpretation,source,_);
53631 // 2. Circle in the containment hierarchy
53632 neg find mustTransitiveContains(source,target);
53633} or {
53634 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
53635}
53636/**
53637 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
53638 */
53639private pattern mustInRelationeTypeParameters_reference_EOperation(
53640 problem:LogicProblem, interpretation:PartialInterpretation,
53641 source: DefinedElement, target:DefinedElement)
53642{
53643 find interpretation(problem,interpretation);
53644 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53645 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
53646 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53647 BinaryElementRelationLink.param1(link,source);
53648 BinaryElementRelationLink.param2(link,target);
53649}
53650/**
53651 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
53652 */
53653private pattern mayInRelationeTypeParameters_reference_EOperation(
53654 problem:LogicProblem, interpretation:PartialInterpretation,
53655 source: DefinedElement, target:DefinedElement)
53656{
53657 find interpretation(problem,interpretation);
53658 // The two endpoint of the link have to exist
53659 find mayExist(problem, interpretation, source);
53660 find mayExist(problem, interpretation, target);
53661 // Type consistency
53662 find mayInstanceOfEOperation_class(problem,interpretation,source);
53663 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
53664 // The reference is containment, then a new reference cannot be create if:
53665 // 1. Multiple parents
53666 neg find mustContains4(problem,interpretation,_,target);
53667 // 2. Circle in the containment hierarchy
53668 neg find mustTransitiveContains(source,target);
53669} or {
53670 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
53671}
53672/**
53673 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
53674 */
53675private pattern mustInRelationeParameters_reference_EOperation(
53676 problem:LogicProblem, interpretation:PartialInterpretation,
53677 source: DefinedElement, target:DefinedElement)
53678{
53679 find interpretation(problem,interpretation);
53680 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53681 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
53682 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53683 BinaryElementRelationLink.param1(link,source);
53684 BinaryElementRelationLink.param2(link,target);
53685}
53686/**
53687 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
53688 */
53689private pattern mayInRelationeParameters_reference_EOperation(
53690 problem:LogicProblem, interpretation:PartialInterpretation,
53691 source: DefinedElement, target:DefinedElement)
53692{
53693 find interpretation(problem,interpretation);
53694 // The two endpoint of the link have to exist
53695 find mayExist(problem, interpretation, source);
53696 find mayExist(problem, interpretation, target);
53697 // Type consistency
53698 find mayInstanceOfEOperation_class(problem,interpretation,source);
53699 find mayInstanceOfEParameter_class(problem,interpretation,target);
53700 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53701 // the upper bound of the opposite reference multiplicity should be considered.
53702 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
53703 check(numberOfExistingOppositeReferences < 1);
53704 // The reference is containment, then a new reference cannot be create if:
53705 // 1. Multiple parents
53706 neg find mustContains4(problem,interpretation,_,target);
53707 // 2. Circle in the containment hierarchy
53708 neg find mustTransitiveContains(source,target);
53709} or {
53710 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
53711}
53712/**
53713 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
53714 */
53715private pattern mustInRelationeExceptions_reference_EOperation(
53716 problem:LogicProblem, interpretation:PartialInterpretation,
53717 source: DefinedElement, target:DefinedElement)
53718{
53719 find interpretation(problem,interpretation);
53720 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53721 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
53722 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53723 BinaryElementRelationLink.param1(link,source);
53724 BinaryElementRelationLink.param2(link,target);
53725}
53726/**
53727 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
53728 */
53729private pattern mayInRelationeExceptions_reference_EOperation(
53730 problem:LogicProblem, interpretation:PartialInterpretation,
53731 source: DefinedElement, target:DefinedElement)
53732{
53733 find interpretation(problem,interpretation);
53734 // The two endpoint of the link have to exist
53735 find mayExist(problem, interpretation, source);
53736 find mayExist(problem, interpretation, target);
53737 // Type consistency
53738 find mayInstanceOfEOperation_class(problem,interpretation,source);
53739 find mayInstanceOfEClassifier_class(problem,interpretation,target);
53740} or {
53741 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
53742}
53743/**
53744 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
53745 */
53746private pattern mustInRelationeGenericExceptions_reference_EOperation(
53747 problem:LogicProblem, interpretation:PartialInterpretation,
53748 source: DefinedElement, target:DefinedElement)
53749{
53750 find interpretation(problem,interpretation);
53751 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53752 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
53753 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53754 BinaryElementRelationLink.param1(link,source);
53755 BinaryElementRelationLink.param2(link,target);
53756}
53757/**
53758 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
53759 */
53760private pattern mayInRelationeGenericExceptions_reference_EOperation(
53761 problem:LogicProblem, interpretation:PartialInterpretation,
53762 source: DefinedElement, target:DefinedElement)
53763{
53764 find interpretation(problem,interpretation);
53765 // The two endpoint of the link have to exist
53766 find mayExist(problem, interpretation, source);
53767 find mayExist(problem, interpretation, target);
53768 // Type consistency
53769 find mayInstanceOfEOperation_class(problem,interpretation,source);
53770 find mayInstanceOfEGenericType_class(problem,interpretation,target);
53771 // The reference is containment, then a new reference cannot be create if:
53772 // 1. Multiple parents
53773 neg find mustContains4(problem,interpretation,_,target);
53774 // 2. Circle in the containment hierarchy
53775 neg find mustTransitiveContains(source,target);
53776} or {
53777 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
53778}
53779/**
53780 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
53781 */
53782private pattern mustInRelationeClassifiers_reference_EPackage(
53783 problem:LogicProblem, interpretation:PartialInterpretation,
53784 source: DefinedElement, target:DefinedElement)
53785{
53786 find interpretation(problem,interpretation);
53787 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53788 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
53789 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53790 BinaryElementRelationLink.param1(link,source);
53791 BinaryElementRelationLink.param2(link,target);
53792}
53793/**
53794 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
53795 */
53796private pattern mayInRelationeClassifiers_reference_EPackage(
53797 problem:LogicProblem, interpretation:PartialInterpretation,
53798 source: DefinedElement, target:DefinedElement)
53799{
53800 find interpretation(problem,interpretation);
53801 // The two endpoint of the link have to exist
53802 find mayExist(problem, interpretation, source);
53803 find mayExist(problem, interpretation, target);
53804 // Type consistency
53805 find mayInstanceOfEPackage_class(problem,interpretation,source);
53806 find mayInstanceOfEClassifier_class(problem,interpretation,target);
53807 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53808 // the upper bound of the opposite reference multiplicity should be considered.
53809 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
53810 check(numberOfExistingOppositeReferences < 1);
53811 // The reference is containment, then a new reference cannot be create if:
53812 // 1. Multiple parents
53813 neg find mustContains4(problem,interpretation,_,target);
53814 // 2. Circle in the containment hierarchy
53815 neg find mustTransitiveContains(source,target);
53816} or {
53817 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
53818}
53819/**
53820 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
53821 */
53822private pattern mustInRelationeSubpackages_reference_EPackage(
53823 problem:LogicProblem, interpretation:PartialInterpretation,
53824 source: DefinedElement, target:DefinedElement)
53825{
53826 find interpretation(problem,interpretation);
53827 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53828 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
53829 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53830 BinaryElementRelationLink.param1(link,source);
53831 BinaryElementRelationLink.param2(link,target);
53832}
53833/**
53834 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
53835 */
53836private pattern mayInRelationeSubpackages_reference_EPackage(
53837 problem:LogicProblem, interpretation:PartialInterpretation,
53838 source: DefinedElement, target:DefinedElement)
53839{
53840 find interpretation(problem,interpretation);
53841 // The two endpoint of the link have to exist
53842 find mayExist(problem, interpretation, source);
53843 find mayExist(problem, interpretation, target);
53844 // Type consistency
53845 find mayInstanceOfEPackage_class(problem,interpretation,source);
53846 find mayInstanceOfEPackage_class(problem,interpretation,target);
53847 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
53848 // the upper bound of the opposite reference multiplicity should be considered.
53849 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
53850 check(numberOfExistingOppositeReferences < 1);
53851 // The reference is containment, then a new reference cannot be create if:
53852 // 1. Multiple parents
53853 neg find mustContains4(problem,interpretation,_,target);
53854 // 2. Circle in the containment hierarchy
53855 neg find mustTransitiveContains(source,target);
53856} or {
53857 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
53858}
53859/**
53860 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
53861 */
53862private pattern mustInRelationeSuperPackage_reference_EPackage(
53863 problem:LogicProblem, interpretation:PartialInterpretation,
53864 source: DefinedElement, target:DefinedElement)
53865{
53866 find interpretation(problem,interpretation);
53867 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53868 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
53869 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53870 BinaryElementRelationLink.param1(link,source);
53871 BinaryElementRelationLink.param2(link,target);
53872}
53873/**
53874 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
53875 */
53876private pattern mayInRelationeSuperPackage_reference_EPackage(
53877 problem:LogicProblem, interpretation:PartialInterpretation,
53878 source: DefinedElement, target:DefinedElement)
53879{
53880 find interpretation(problem,interpretation);
53881 // The two endpoint of the link have to exist
53882 find mayExist(problem, interpretation, source);
53883 find mayExist(problem, interpretation, target);
53884 // Type consistency
53885 find mayInstanceOfEPackage_class(problem,interpretation,source);
53886 find mayInstanceOfEPackage_class(problem,interpretation,target);
53887 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53888 // the upper bound of the multiplicity should be considered.
53889 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
53890 check(numberOfExistingReferences < 1);
53891 // The eOpposite of the reference is containment, then a referene cannot be created if
53892 // 1. Multiple parents
53893 neg find mustContains4(problem,interpretation,source,_);
53894 // 2. Circle in the containment hierarchy
53895 neg find mustTransitiveContains(source,target);
53896} or {
53897 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
53898}
53899/**
53900 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
53901 */
53902private pattern mustInRelationeOperation_reference_EParameter(
53903 problem:LogicProblem, interpretation:PartialInterpretation,
53904 source: DefinedElement, target:DefinedElement)
53905{
53906 find interpretation(problem,interpretation);
53907 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53908 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
53909 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53910 BinaryElementRelationLink.param1(link,source);
53911 BinaryElementRelationLink.param2(link,target);
53912}
53913/**
53914 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
53915 */
53916private pattern mayInRelationeOperation_reference_EParameter(
53917 problem:LogicProblem, interpretation:PartialInterpretation,
53918 source: DefinedElement, target:DefinedElement)
53919{
53920 find interpretation(problem,interpretation);
53921 // The two endpoint of the link have to exist
53922 find mayExist(problem, interpretation, source);
53923 find mayExist(problem, interpretation, target);
53924 // Type consistency
53925 find mayInstanceOfEParameter_class(problem,interpretation,source);
53926 find mayInstanceOfEOperation_class(problem,interpretation,target);
53927 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53928 // the upper bound of the multiplicity should be considered.
53929 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
53930 check(numberOfExistingReferences < 1);
53931 // The eOpposite of the reference is containment, then a referene cannot be created if
53932 // 1. Multiple parents
53933 neg find mustContains4(problem,interpretation,source,_);
53934 // 2. Circle in the containment hierarchy
53935 neg find mustTransitiveContains(source,target);
53936} or {
53937 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
53938}
53939/**
53940 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
53941 */
53942private pattern mustInRelationeOpposite_reference_EReference(
53943 problem:LogicProblem, interpretation:PartialInterpretation,
53944 source: DefinedElement, target:DefinedElement)
53945{
53946 find interpretation(problem,interpretation);
53947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
53949 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53950 BinaryElementRelationLink.param1(link,source);
53951 BinaryElementRelationLink.param2(link,target);
53952}
53953/**
53954 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
53955 */
53956private pattern mayInRelationeOpposite_reference_EReference(
53957 problem:LogicProblem, interpretation:PartialInterpretation,
53958 source: DefinedElement, target:DefinedElement)
53959{
53960 find interpretation(problem,interpretation);
53961 // The two endpoint of the link have to exist
53962 find mayExist(problem, interpretation, source);
53963 find mayExist(problem, interpretation, target);
53964 // Type consistency
53965 find mayInstanceOfEReference_class(problem,interpretation,source);
53966 find mayInstanceOfEReference_class(problem,interpretation,target);
53967 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
53968 // the upper bound of the multiplicity should be considered.
53969 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
53970 check(numberOfExistingReferences < 1);
53971} or {
53972 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
53973}
53974/**
53975 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
53976 */
53977private pattern mustInRelationeReferenceType_reference_EReference(
53978 problem:LogicProblem, interpretation:PartialInterpretation,
53979 source: DefinedElement, target:DefinedElement)
53980{
53981 find interpretation(problem,interpretation);
53982 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
53983 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
53984 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
53985 BinaryElementRelationLink.param1(link,source);
53986 BinaryElementRelationLink.param2(link,target);
53987}
53988/**
53989 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
53990 */
53991private pattern mayInRelationeReferenceType_reference_EReference(
53992 problem:LogicProblem, interpretation:PartialInterpretation,
53993 source: DefinedElement, target:DefinedElement)
53994{
53995 find interpretation(problem,interpretation);
53996 // The two endpoint of the link have to exist
53997 find mayExist(problem, interpretation, source);
53998 find mayExist(problem, interpretation, target);
53999 // Type consistency
54000 find mayInstanceOfEReference_class(problem,interpretation,source);
54001 find mayInstanceOfEClass_class(problem,interpretation,target);
54002 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54003 // the upper bound of the multiplicity should be considered.
54004 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
54005 check(numberOfExistingReferences < 1);
54006} or {
54007 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
54008}
54009/**
54010 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
54011 */
54012private pattern mustInRelationeKeys_reference_EReference(
54013 problem:LogicProblem, interpretation:PartialInterpretation,
54014 source: DefinedElement, target:DefinedElement)
54015{
54016 find interpretation(problem,interpretation);
54017 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54018 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
54019 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54020 BinaryElementRelationLink.param1(link,source);
54021 BinaryElementRelationLink.param2(link,target);
54022}
54023/**
54024 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
54025 */
54026private pattern mayInRelationeKeys_reference_EReference(
54027 problem:LogicProblem, interpretation:PartialInterpretation,
54028 source: DefinedElement, target:DefinedElement)
54029{
54030 find interpretation(problem,interpretation);
54031 // The two endpoint of the link have to exist
54032 find mayExist(problem, interpretation, source);
54033 find mayExist(problem, interpretation, target);
54034 // Type consistency
54035 find mayInstanceOfEReference_class(problem,interpretation,source);
54036 find mayInstanceOfEAttribute_class(problem,interpretation,target);
54037} or {
54038 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
54039}
54040/**
54041 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
54042 */
54043private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
54044 problem:LogicProblem, interpretation:PartialInterpretation,
54045 source: DefinedElement, target:DefinedElement)
54046{
54047 find interpretation(problem,interpretation);
54048 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54049 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
54050 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54051 BinaryElementRelationLink.param1(link,source);
54052 BinaryElementRelationLink.param2(link,target);
54053}
54054/**
54055 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
54056 */
54057private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
54058 problem:LogicProblem, interpretation:PartialInterpretation,
54059 source: DefinedElement, target:DefinedElement)
54060{
54061 find interpretation(problem,interpretation);
54062 // The two endpoint of the link have to exist
54063 find mayExist(problem, interpretation, source);
54064 find mayExist(problem, interpretation, target);
54065 // Type consistency
54066 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
54067 find mayInstanceOfEClass_class(problem,interpretation,target);
54068 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54069 // the upper bound of the multiplicity should be considered.
54070 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
54071 check(numberOfExistingReferences < 1);
54072 // The eOpposite of the reference is containment, then a referene cannot be created if
54073 // 1. Multiple parents
54074 neg find mustContains4(problem,interpretation,source,_);
54075 // 2. Circle in the containment hierarchy
54076 neg find mustTransitiveContains(source,target);
54077} or {
54078 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
54079}
54080/**
54081 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
54082 */
54083private pattern mustInRelationeType_reference_ETypedElement(
54084 problem:LogicProblem, interpretation:PartialInterpretation,
54085 source: DefinedElement, target:DefinedElement)
54086{
54087 find interpretation(problem,interpretation);
54088 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54089 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
54090 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54091 BinaryElementRelationLink.param1(link,source);
54092 BinaryElementRelationLink.param2(link,target);
54093}
54094/**
54095 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
54096 */
54097private pattern mayInRelationeType_reference_ETypedElement(
54098 problem:LogicProblem, interpretation:PartialInterpretation,
54099 source: DefinedElement, target:DefinedElement)
54100{
54101 find interpretation(problem,interpretation);
54102 // The two endpoint of the link have to exist
54103 find mayExist(problem, interpretation, source);
54104 find mayExist(problem, interpretation, target);
54105 // Type consistency
54106 find mayInstanceOfETypedElement_class(problem,interpretation,source);
54107 find mayInstanceOfEClassifier_class(problem,interpretation,target);
54108 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54109 // the upper bound of the multiplicity should be considered.
54110 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
54111 check(numberOfExistingReferences < 1);
54112} or {
54113 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
54114}
54115/**
54116 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
54117 */
54118private pattern mustInRelationeGenericType_reference_ETypedElement(
54119 problem:LogicProblem, interpretation:PartialInterpretation,
54120 source: DefinedElement, target:DefinedElement)
54121{
54122 find interpretation(problem,interpretation);
54123 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54124 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
54125 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54126 BinaryElementRelationLink.param1(link,source);
54127 BinaryElementRelationLink.param2(link,target);
54128}
54129/**
54130 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
54131 */
54132private pattern mayInRelationeGenericType_reference_ETypedElement(
54133 problem:LogicProblem, interpretation:PartialInterpretation,
54134 source: DefinedElement, target:DefinedElement)
54135{
54136 find interpretation(problem,interpretation);
54137 // The two endpoint of the link have to exist
54138 find mayExist(problem, interpretation, source);
54139 find mayExist(problem, interpretation, target);
54140 // Type consistency
54141 find mayInstanceOfETypedElement_class(problem,interpretation,source);
54142 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54143 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54144 // the upper bound of the multiplicity should be considered.
54145 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
54146 check(numberOfExistingReferences < 1);
54147 // The reference is containment, then a new reference cannot be create if:
54148 // 1. Multiple parents
54149 neg find mustContains4(problem,interpretation,_,target);
54150 // 2. Circle in the containment hierarchy
54151 neg find mustTransitiveContains(source,target);
54152} or {
54153 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
54154}
54155/**
54156 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
54157 */
54158private pattern mustInRelationeUpperBound_reference_EGenericType(
54159 problem:LogicProblem, interpretation:PartialInterpretation,
54160 source: DefinedElement, target:DefinedElement)
54161{
54162 find interpretation(problem,interpretation);
54163 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54164 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
54165 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54166 BinaryElementRelationLink.param1(link,source);
54167 BinaryElementRelationLink.param2(link,target);
54168}
54169/**
54170 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
54171 */
54172private pattern mayInRelationeUpperBound_reference_EGenericType(
54173 problem:LogicProblem, interpretation:PartialInterpretation,
54174 source: DefinedElement, target:DefinedElement)
54175{
54176 find interpretation(problem,interpretation);
54177 // The two endpoint of the link have to exist
54178 find mayExist(problem, interpretation, source);
54179 find mayExist(problem, interpretation, target);
54180 // Type consistency
54181 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54182 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54183 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54184 // the upper bound of the multiplicity should be considered.
54185 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
54186 check(numberOfExistingReferences < 1);
54187 // The reference is containment, then a new reference cannot be create if:
54188 // 1. Multiple parents
54189 neg find mustContains4(problem,interpretation,_,target);
54190 // 2. Circle in the containment hierarchy
54191 neg find mustTransitiveContains(source,target);
54192} or {
54193 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
54194}
54195/**
54196 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
54197 */
54198private pattern mustInRelationeTypeArguments_reference_EGenericType(
54199 problem:LogicProblem, interpretation:PartialInterpretation,
54200 source: DefinedElement, target:DefinedElement)
54201{
54202 find interpretation(problem,interpretation);
54203 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54204 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
54205 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54206 BinaryElementRelationLink.param1(link,source);
54207 BinaryElementRelationLink.param2(link,target);
54208}
54209/**
54210 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
54211 */
54212private pattern mayInRelationeTypeArguments_reference_EGenericType(
54213 problem:LogicProblem, interpretation:PartialInterpretation,
54214 source: DefinedElement, target:DefinedElement)
54215{
54216 find interpretation(problem,interpretation);
54217 // The two endpoint of the link have to exist
54218 find mayExist(problem, interpretation, source);
54219 find mayExist(problem, interpretation, target);
54220 // Type consistency
54221 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54222 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54223 // The reference is containment, then a new reference cannot be create if:
54224 // 1. Multiple parents
54225 neg find mustContains4(problem,interpretation,_,target);
54226 // 2. Circle in the containment hierarchy
54227 neg find mustTransitiveContains(source,target);
54228} or {
54229 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
54230}
54231/**
54232 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
54233 */
54234private pattern mustInRelationeRawType_reference_EGenericType(
54235 problem:LogicProblem, interpretation:PartialInterpretation,
54236 source: DefinedElement, target:DefinedElement)
54237{
54238 find interpretation(problem,interpretation);
54239 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54240 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
54241 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54242 BinaryElementRelationLink.param1(link,source);
54243 BinaryElementRelationLink.param2(link,target);
54244}
54245/**
54246 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
54247 */
54248private pattern mayInRelationeRawType_reference_EGenericType(
54249 problem:LogicProblem, interpretation:PartialInterpretation,
54250 source: DefinedElement, target:DefinedElement)
54251{
54252 find interpretation(problem,interpretation);
54253 // The two endpoint of the link have to exist
54254 find mayExist(problem, interpretation, source);
54255 find mayExist(problem, interpretation, target);
54256 // Type consistency
54257 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54258 find mayInstanceOfEClassifier_class(problem,interpretation,target);
54259 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54260 // the upper bound of the multiplicity should be considered.
54261 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
54262 check(numberOfExistingReferences < 1);
54263} or {
54264 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
54265}
54266/**
54267 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
54268 */
54269private pattern mustInRelationeLowerBound_reference_EGenericType(
54270 problem:LogicProblem, interpretation:PartialInterpretation,
54271 source: DefinedElement, target:DefinedElement)
54272{
54273 find interpretation(problem,interpretation);
54274 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54275 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
54276 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54277 BinaryElementRelationLink.param1(link,source);
54278 BinaryElementRelationLink.param2(link,target);
54279}
54280/**
54281 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
54282 */
54283private pattern mayInRelationeLowerBound_reference_EGenericType(
54284 problem:LogicProblem, interpretation:PartialInterpretation,
54285 source: DefinedElement, target:DefinedElement)
54286{
54287 find interpretation(problem,interpretation);
54288 // The two endpoint of the link have to exist
54289 find mayExist(problem, interpretation, source);
54290 find mayExist(problem, interpretation, target);
54291 // Type consistency
54292 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54293 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54294 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54295 // the upper bound of the multiplicity should be considered.
54296 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
54297 check(numberOfExistingReferences < 1);
54298 // The reference is containment, then a new reference cannot be create if:
54299 // 1. Multiple parents
54300 neg find mustContains4(problem,interpretation,_,target);
54301 // 2. Circle in the containment hierarchy
54302 neg find mustTransitiveContains(source,target);
54303} or {
54304 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
54305}
54306/**
54307 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
54308 */
54309private pattern mustInRelationeTypeParameter_reference_EGenericType(
54310 problem:LogicProblem, interpretation:PartialInterpretation,
54311 source: DefinedElement, target:DefinedElement)
54312{
54313 find interpretation(problem,interpretation);
54314 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54315 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
54316 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54317 BinaryElementRelationLink.param1(link,source);
54318 BinaryElementRelationLink.param2(link,target);
54319}
54320/**
54321 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
54322 */
54323private pattern mayInRelationeTypeParameter_reference_EGenericType(
54324 problem:LogicProblem, interpretation:PartialInterpretation,
54325 source: DefinedElement, target:DefinedElement)
54326{
54327 find interpretation(problem,interpretation);
54328 // The two endpoint of the link have to exist
54329 find mayExist(problem, interpretation, source);
54330 find mayExist(problem, interpretation, target);
54331 // Type consistency
54332 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54333 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
54334 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54335 // the upper bound of the multiplicity should be considered.
54336 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
54337 check(numberOfExistingReferences < 1);
54338} or {
54339 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
54340}
54341/**
54342 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
54343 */
54344private pattern mustInRelationeClassifier_reference_EGenericType(
54345 problem:LogicProblem, interpretation:PartialInterpretation,
54346 source: DefinedElement, target:DefinedElement)
54347{
54348 find interpretation(problem,interpretation);
54349 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54350 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
54351 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54352 BinaryElementRelationLink.param1(link,source);
54353 BinaryElementRelationLink.param2(link,target);
54354}
54355/**
54356 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
54357 */
54358private pattern mayInRelationeClassifier_reference_EGenericType(
54359 problem:LogicProblem, interpretation:PartialInterpretation,
54360 source: DefinedElement, target:DefinedElement)
54361{
54362 find interpretation(problem,interpretation);
54363 // The two endpoint of the link have to exist
54364 find mayExist(problem, interpretation, source);
54365 find mayExist(problem, interpretation, target);
54366 // Type consistency
54367 find mayInstanceOfEGenericType_class(problem,interpretation,source);
54368 find mayInstanceOfEClassifier_class(problem,interpretation,target);
54369 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54370 // the upper bound of the multiplicity should be considered.
54371 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
54372 check(numberOfExistingReferences < 1);
54373} or {
54374 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
54375}
54376/**
54377 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
54378 */
54379private pattern mustInRelationeBounds_reference_ETypeParameter(
54380 problem:LogicProblem, interpretation:PartialInterpretation,
54381 source: DefinedElement, target:DefinedElement)
54382{
54383 find interpretation(problem,interpretation);
54384 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54385 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
54386 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54387 BinaryElementRelationLink.param1(link,source);
54388 BinaryElementRelationLink.param2(link,target);
54389}
54390/**
54391 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
54392 */
54393private pattern mayInRelationeBounds_reference_ETypeParameter(
54394 problem:LogicProblem, interpretation:PartialInterpretation,
54395 source: DefinedElement, target:DefinedElement)
54396{
54397 find interpretation(problem,interpretation);
54398 // The two endpoint of the link have to exist
54399 find mayExist(problem, interpretation, source);
54400 find mayExist(problem, interpretation, target);
54401 // Type consistency
54402 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
54403 find mayInstanceOfEGenericType_class(problem,interpretation,target);
54404 // The reference is containment, then a new reference cannot be create if:
54405 // 1. Multiple parents
54406 neg find mustContains4(problem,interpretation,_,target);
54407 // 2. Circle in the containment hierarchy
54408 neg find mustTransitiveContains(source,target);
54409} or {
54410 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
54411}
54412/**
54413 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
54414 */
54415private pattern mustInRelationiD_attribute_EAttribute(
54416 problem:LogicProblem, interpretation:PartialInterpretation,
54417 source: DefinedElement, target:DefinedElement)
54418{
54419 find interpretation(problem,interpretation);
54420 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54421 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
54422 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54423 BinaryElementRelationLink.param1(link,source);
54424 BinaryElementRelationLink.param2(link,target);
54425}
54426/**
54427 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
54428 */
54429private pattern mayInRelationiD_attribute_EAttribute(
54430 problem:LogicProblem, interpretation:PartialInterpretation,
54431 source: DefinedElement, target:DefinedElement)
54432{
54433 find interpretation(problem,interpretation);
54434 // The two endpoint of the link have to exist
54435 find mayExist(problem, interpretation, source);
54436 find mayExist(problem, interpretation, target);
54437 // Type consistency
54438 find mayInstanceOfEAttribute_class(problem,interpretation,source);
54439 BooleanElement(target);
54440 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54441 // the upper bound of the multiplicity should be considered.
54442 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
54443 check(numberOfExistingReferences < 1);
54444} or {
54445 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
54446}
54447/**
54448 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
54449 */
54450private pattern mustInRelationsource_attribute_EAnnotation(
54451 problem:LogicProblem, interpretation:PartialInterpretation,
54452 source: DefinedElement, target:DefinedElement)
54453{
54454 find interpretation(problem,interpretation);
54455 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54456 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
54457 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54458 BinaryElementRelationLink.param1(link,source);
54459 BinaryElementRelationLink.param2(link,target);
54460}
54461/**
54462 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
54463 */
54464private pattern mayInRelationsource_attribute_EAnnotation(
54465 problem:LogicProblem, interpretation:PartialInterpretation,
54466 source: DefinedElement, target:DefinedElement)
54467{
54468 find interpretation(problem,interpretation);
54469 // The two endpoint of the link have to exist
54470 find mayExist(problem, interpretation, source);
54471 find mayExist(problem, interpretation, target);
54472 // Type consistency
54473 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
54474 StringElement(target);
54475 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54476 // the upper bound of the multiplicity should be considered.
54477 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
54478 check(numberOfExistingReferences < 1);
54479} or {
54480 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
54481}
54482/**
54483 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
54484 */
54485private pattern mustInRelationabstract_attribute_EClass(
54486 problem:LogicProblem, interpretation:PartialInterpretation,
54487 source: DefinedElement, target:DefinedElement)
54488{
54489 find interpretation(problem,interpretation);
54490 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54491 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
54492 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54493 BinaryElementRelationLink.param1(link,source);
54494 BinaryElementRelationLink.param2(link,target);
54495}
54496/**
54497 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
54498 */
54499private pattern mayInRelationabstract_attribute_EClass(
54500 problem:LogicProblem, interpretation:PartialInterpretation,
54501 source: DefinedElement, target:DefinedElement)
54502{
54503 find interpretation(problem,interpretation);
54504 // The two endpoint of the link have to exist
54505 find mayExist(problem, interpretation, source);
54506 find mayExist(problem, interpretation, target);
54507 // Type consistency
54508 find mayInstanceOfEClass_class(problem,interpretation,source);
54509 BooleanElement(target);
54510 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54511 // the upper bound of the multiplicity should be considered.
54512 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
54513 check(numberOfExistingReferences < 1);
54514} or {
54515 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
54516}
54517/**
54518 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
54519 */
54520private pattern mustInRelationinterface_attribute_EClass(
54521 problem:LogicProblem, interpretation:PartialInterpretation,
54522 source: DefinedElement, target:DefinedElement)
54523{
54524 find interpretation(problem,interpretation);
54525 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54526 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
54527 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54528 BinaryElementRelationLink.param1(link,source);
54529 BinaryElementRelationLink.param2(link,target);
54530}
54531/**
54532 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
54533 */
54534private pattern mayInRelationinterface_attribute_EClass(
54535 problem:LogicProblem, interpretation:PartialInterpretation,
54536 source: DefinedElement, target:DefinedElement)
54537{
54538 find interpretation(problem,interpretation);
54539 // The two endpoint of the link have to exist
54540 find mayExist(problem, interpretation, source);
54541 find mayExist(problem, interpretation, target);
54542 // Type consistency
54543 find mayInstanceOfEClass_class(problem,interpretation,source);
54544 BooleanElement(target);
54545 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54546 // the upper bound of the multiplicity should be considered.
54547 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
54548 check(numberOfExistingReferences < 1);
54549} or {
54550 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
54551}
54552/**
54553 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
54554 */
54555private pattern mustInRelationinstanceClassName_attribute_EClassifier(
54556 problem:LogicProblem, interpretation:PartialInterpretation,
54557 source: DefinedElement, target:DefinedElement)
54558{
54559 find interpretation(problem,interpretation);
54560 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54561 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
54562 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54563 BinaryElementRelationLink.param1(link,source);
54564 BinaryElementRelationLink.param2(link,target);
54565}
54566/**
54567 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
54568 */
54569private pattern mayInRelationinstanceClassName_attribute_EClassifier(
54570 problem:LogicProblem, interpretation:PartialInterpretation,
54571 source: DefinedElement, target:DefinedElement)
54572{
54573 find interpretation(problem,interpretation);
54574 // The two endpoint of the link have to exist
54575 find mayExist(problem, interpretation, source);
54576 find mayExist(problem, interpretation, target);
54577 // Type consistency
54578 find mayInstanceOfEClassifier_class(problem,interpretation,source);
54579 StringElement(target);
54580 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54581 // the upper bound of the multiplicity should be considered.
54582 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
54583 check(numberOfExistingReferences < 1);
54584} or {
54585 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
54586}
54587/**
54588 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
54589 */
54590private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
54591 problem:LogicProblem, interpretation:PartialInterpretation,
54592 source: DefinedElement, target:DefinedElement)
54593{
54594 find interpretation(problem,interpretation);
54595 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54596 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
54597 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54598 BinaryElementRelationLink.param1(link,source);
54599 BinaryElementRelationLink.param2(link,target);
54600}
54601/**
54602 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
54603 */
54604private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
54605 problem:LogicProblem, interpretation:PartialInterpretation,
54606 source: DefinedElement, target:DefinedElement)
54607{
54608 find interpretation(problem,interpretation);
54609 // The two endpoint of the link have to exist
54610 find mayExist(problem, interpretation, source);
54611 find mayExist(problem, interpretation, target);
54612 // Type consistency
54613 find mayInstanceOfEClassifier_class(problem,interpretation,source);
54614 StringElement(target);
54615 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54616 // the upper bound of the multiplicity should be considered.
54617 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
54618 check(numberOfExistingReferences < 1);
54619} or {
54620 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
54621}
54622/**
54623 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
54624 */
54625private pattern mustInRelationserializable_attribute_EDataType(
54626 problem:LogicProblem, interpretation:PartialInterpretation,
54627 source: DefinedElement, target:DefinedElement)
54628{
54629 find interpretation(problem,interpretation);
54630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
54632 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54633 BinaryElementRelationLink.param1(link,source);
54634 BinaryElementRelationLink.param2(link,target);
54635}
54636/**
54637 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
54638 */
54639private pattern mayInRelationserializable_attribute_EDataType(
54640 problem:LogicProblem, interpretation:PartialInterpretation,
54641 source: DefinedElement, target:DefinedElement)
54642{
54643 find interpretation(problem,interpretation);
54644 // The two endpoint of the link have to exist
54645 find mayExist(problem, interpretation, source);
54646 find mayExist(problem, interpretation, target);
54647 // Type consistency
54648 find mayInstanceOfEDataType_class(problem,interpretation,source);
54649 BooleanElement(target);
54650 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54651 // the upper bound of the multiplicity should be considered.
54652 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
54653 check(numberOfExistingReferences < 1);
54654} or {
54655 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
54656}
54657/**
54658 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
54659 */
54660private pattern mustInRelationvalue_attribute_EEnumLiteral(
54661 problem:LogicProblem, interpretation:PartialInterpretation,
54662 source: DefinedElement, target:DefinedElement)
54663{
54664 find interpretation(problem,interpretation);
54665 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54666 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
54667 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54668 BinaryElementRelationLink.param1(link,source);
54669 BinaryElementRelationLink.param2(link,target);
54670}
54671/**
54672 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
54673 */
54674private pattern mayInRelationvalue_attribute_EEnumLiteral(
54675 problem:LogicProblem, interpretation:PartialInterpretation,
54676 source: DefinedElement, target:DefinedElement)
54677{
54678 find interpretation(problem,interpretation);
54679 // The two endpoint of the link have to exist
54680 find mayExist(problem, interpretation, source);
54681 find mayExist(problem, interpretation, target);
54682 // Type consistency
54683 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
54684 IntegerElement(target);
54685 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54686 // the upper bound of the multiplicity should be considered.
54687 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
54688 check(numberOfExistingReferences < 1);
54689} or {
54690 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
54691}
54692/**
54693 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
54694 */
54695private pattern mustInRelationliteral_attribute_EEnumLiteral(
54696 problem:LogicProblem, interpretation:PartialInterpretation,
54697 source: DefinedElement, target:DefinedElement)
54698{
54699 find interpretation(problem,interpretation);
54700 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54701 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
54702 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54703 BinaryElementRelationLink.param1(link,source);
54704 BinaryElementRelationLink.param2(link,target);
54705}
54706/**
54707 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
54708 */
54709private pattern mayInRelationliteral_attribute_EEnumLiteral(
54710 problem:LogicProblem, interpretation:PartialInterpretation,
54711 source: DefinedElement, target:DefinedElement)
54712{
54713 find interpretation(problem,interpretation);
54714 // The two endpoint of the link have to exist
54715 find mayExist(problem, interpretation, source);
54716 find mayExist(problem, interpretation, target);
54717 // Type consistency
54718 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
54719 StringElement(target);
54720 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54721 // the upper bound of the multiplicity should be considered.
54722 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
54723 check(numberOfExistingReferences < 1);
54724} or {
54725 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
54726}
54727/**
54728 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
54729 */
54730private pattern mustInRelationname_attribute_ENamedElement(
54731 problem:LogicProblem, interpretation:PartialInterpretation,
54732 source: DefinedElement, target:DefinedElement)
54733{
54734 find interpretation(problem,interpretation);
54735 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54736 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
54737 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54738 BinaryElementRelationLink.param1(link,source);
54739 BinaryElementRelationLink.param2(link,target);
54740}
54741/**
54742 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
54743 */
54744private pattern mayInRelationname_attribute_ENamedElement(
54745 problem:LogicProblem, interpretation:PartialInterpretation,
54746 source: DefinedElement, target:DefinedElement)
54747{
54748 find interpretation(problem,interpretation);
54749 // The two endpoint of the link have to exist
54750 find mayExist(problem, interpretation, source);
54751 find mayExist(problem, interpretation, target);
54752 // Type consistency
54753 find mayInstanceOfENamedElement_class(problem,interpretation,source);
54754 StringElement(target);
54755 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54756 // the upper bound of the multiplicity should be considered.
54757 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
54758 check(numberOfExistingReferences < 1);
54759} or {
54760 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
54761}
54762/**
54763 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
54764 */
54765private pattern mustInRelationnsURI_attribute_EPackage(
54766 problem:LogicProblem, interpretation:PartialInterpretation,
54767 source: DefinedElement, target:DefinedElement)
54768{
54769 find interpretation(problem,interpretation);
54770 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54771 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
54772 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54773 BinaryElementRelationLink.param1(link,source);
54774 BinaryElementRelationLink.param2(link,target);
54775}
54776/**
54777 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
54778 */
54779private pattern mayInRelationnsURI_attribute_EPackage(
54780 problem:LogicProblem, interpretation:PartialInterpretation,
54781 source: DefinedElement, target:DefinedElement)
54782{
54783 find interpretation(problem,interpretation);
54784 // The two endpoint of the link have to exist
54785 find mayExist(problem, interpretation, source);
54786 find mayExist(problem, interpretation, target);
54787 // Type consistency
54788 find mayInstanceOfEPackage_class(problem,interpretation,source);
54789 StringElement(target);
54790 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54791 // the upper bound of the multiplicity should be considered.
54792 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
54793 check(numberOfExistingReferences < 1);
54794} or {
54795 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
54796}
54797/**
54798 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
54799 */
54800private pattern mustInRelationnsPrefix_attribute_EPackage(
54801 problem:LogicProblem, interpretation:PartialInterpretation,
54802 source: DefinedElement, target:DefinedElement)
54803{
54804 find interpretation(problem,interpretation);
54805 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54806 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
54807 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54808 BinaryElementRelationLink.param1(link,source);
54809 BinaryElementRelationLink.param2(link,target);
54810}
54811/**
54812 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
54813 */
54814private pattern mayInRelationnsPrefix_attribute_EPackage(
54815 problem:LogicProblem, interpretation:PartialInterpretation,
54816 source: DefinedElement, target:DefinedElement)
54817{
54818 find interpretation(problem,interpretation);
54819 // The two endpoint of the link have to exist
54820 find mayExist(problem, interpretation, source);
54821 find mayExist(problem, interpretation, target);
54822 // Type consistency
54823 find mayInstanceOfEPackage_class(problem,interpretation,source);
54824 StringElement(target);
54825 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54826 // the upper bound of the multiplicity should be considered.
54827 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
54828 check(numberOfExistingReferences < 1);
54829} or {
54830 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
54831}
54832/**
54833 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
54834 */
54835private pattern mustInRelationcontainment_attribute_EReference(
54836 problem:LogicProblem, interpretation:PartialInterpretation,
54837 source: DefinedElement, target:DefinedElement)
54838{
54839 find interpretation(problem,interpretation);
54840 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54841 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
54842 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54843 BinaryElementRelationLink.param1(link,source);
54844 BinaryElementRelationLink.param2(link,target);
54845}
54846/**
54847 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
54848 */
54849private pattern mayInRelationcontainment_attribute_EReference(
54850 problem:LogicProblem, interpretation:PartialInterpretation,
54851 source: DefinedElement, target:DefinedElement)
54852{
54853 find interpretation(problem,interpretation);
54854 // The two endpoint of the link have to exist
54855 find mayExist(problem, interpretation, source);
54856 find mayExist(problem, interpretation, target);
54857 // Type consistency
54858 find mayInstanceOfEReference_class(problem,interpretation,source);
54859 BooleanElement(target);
54860 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54861 // the upper bound of the multiplicity should be considered.
54862 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
54863 check(numberOfExistingReferences < 1);
54864} or {
54865 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
54866}
54867/**
54868 * Matcher for detecting tuples t where []container attribute EReference(source,target)
54869 */
54870private pattern mustInRelationcontainer_attribute_EReference(
54871 problem:LogicProblem, interpretation:PartialInterpretation,
54872 source: DefinedElement, target:DefinedElement)
54873{
54874 find interpretation(problem,interpretation);
54875 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54876 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
54877 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54878 BinaryElementRelationLink.param1(link,source);
54879 BinaryElementRelationLink.param2(link,target);
54880}
54881/**
54882 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
54883 */
54884private pattern mayInRelationcontainer_attribute_EReference(
54885 problem:LogicProblem, interpretation:PartialInterpretation,
54886 source: DefinedElement, target:DefinedElement)
54887{
54888 find interpretation(problem,interpretation);
54889 // The two endpoint of the link have to exist
54890 find mayExist(problem, interpretation, source);
54891 find mayExist(problem, interpretation, target);
54892 // Type consistency
54893 find mayInstanceOfEReference_class(problem,interpretation,source);
54894 BooleanElement(target);
54895 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54896 // the upper bound of the multiplicity should be considered.
54897 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
54898 check(numberOfExistingReferences < 1);
54899} or {
54900 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
54901}
54902/**
54903 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
54904 */
54905private pattern mustInRelationresolveProxies_attribute_EReference(
54906 problem:LogicProblem, interpretation:PartialInterpretation,
54907 source: DefinedElement, target:DefinedElement)
54908{
54909 find interpretation(problem,interpretation);
54910 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54911 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
54912 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54913 BinaryElementRelationLink.param1(link,source);
54914 BinaryElementRelationLink.param2(link,target);
54915}
54916/**
54917 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
54918 */
54919private pattern mayInRelationresolveProxies_attribute_EReference(
54920 problem:LogicProblem, interpretation:PartialInterpretation,
54921 source: DefinedElement, target:DefinedElement)
54922{
54923 find interpretation(problem,interpretation);
54924 // The two endpoint of the link have to exist
54925 find mayExist(problem, interpretation, source);
54926 find mayExist(problem, interpretation, target);
54927 // Type consistency
54928 find mayInstanceOfEReference_class(problem,interpretation,source);
54929 BooleanElement(target);
54930 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54931 // the upper bound of the multiplicity should be considered.
54932 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
54933 check(numberOfExistingReferences < 1);
54934} or {
54935 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
54936}
54937/**
54938 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
54939 */
54940private pattern mustInRelationchangeable_attribute_EStructuralFeature(
54941 problem:LogicProblem, interpretation:PartialInterpretation,
54942 source: DefinedElement, target:DefinedElement)
54943{
54944 find interpretation(problem,interpretation);
54945 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54946 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
54947 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54948 BinaryElementRelationLink.param1(link,source);
54949 BinaryElementRelationLink.param2(link,target);
54950}
54951/**
54952 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
54953 */
54954private pattern mayInRelationchangeable_attribute_EStructuralFeature(
54955 problem:LogicProblem, interpretation:PartialInterpretation,
54956 source: DefinedElement, target:DefinedElement)
54957{
54958 find interpretation(problem,interpretation);
54959 // The two endpoint of the link have to exist
54960 find mayExist(problem, interpretation, source);
54961 find mayExist(problem, interpretation, target);
54962 // Type consistency
54963 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
54964 BooleanElement(target);
54965 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
54966 // the upper bound of the multiplicity should be considered.
54967 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
54968 check(numberOfExistingReferences < 1);
54969} or {
54970 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
54971}
54972/**
54973 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
54974 */
54975private pattern mustInRelationvolatile_attribute_EStructuralFeature(
54976 problem:LogicProblem, interpretation:PartialInterpretation,
54977 source: DefinedElement, target:DefinedElement)
54978{
54979 find interpretation(problem,interpretation);
54980 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
54981 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
54982 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
54983 BinaryElementRelationLink.param1(link,source);
54984 BinaryElementRelationLink.param2(link,target);
54985}
54986/**
54987 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
54988 */
54989private pattern mayInRelationvolatile_attribute_EStructuralFeature(
54990 problem:LogicProblem, interpretation:PartialInterpretation,
54991 source: DefinedElement, target:DefinedElement)
54992{
54993 find interpretation(problem,interpretation);
54994 // The two endpoint of the link have to exist
54995 find mayExist(problem, interpretation, source);
54996 find mayExist(problem, interpretation, target);
54997 // Type consistency
54998 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
54999 BooleanElement(target);
55000 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55001 // the upper bound of the multiplicity should be considered.
55002 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
55003 check(numberOfExistingReferences < 1);
55004} or {
55005 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
55006}
55007/**
55008 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
55009 */
55010private pattern mustInRelationtransient_attribute_EStructuralFeature(
55011 problem:LogicProblem, interpretation:PartialInterpretation,
55012 source: DefinedElement, target:DefinedElement)
55013{
55014 find interpretation(problem,interpretation);
55015 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55016 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
55017 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55018 BinaryElementRelationLink.param1(link,source);
55019 BinaryElementRelationLink.param2(link,target);
55020}
55021/**
55022 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
55023 */
55024private pattern mayInRelationtransient_attribute_EStructuralFeature(
55025 problem:LogicProblem, interpretation:PartialInterpretation,
55026 source: DefinedElement, target:DefinedElement)
55027{
55028 find interpretation(problem,interpretation);
55029 // The two endpoint of the link have to exist
55030 find mayExist(problem, interpretation, source);
55031 find mayExist(problem, interpretation, target);
55032 // Type consistency
55033 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55034 BooleanElement(target);
55035 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55036 // the upper bound of the multiplicity should be considered.
55037 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
55038 check(numberOfExistingReferences < 1);
55039} or {
55040 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
55041}
55042/**
55043 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
55044 */
55045private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
55046 problem:LogicProblem, interpretation:PartialInterpretation,
55047 source: DefinedElement, target:DefinedElement)
55048{
55049 find interpretation(problem,interpretation);
55050 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55051 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
55052 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55053 BinaryElementRelationLink.param1(link,source);
55054 BinaryElementRelationLink.param2(link,target);
55055}
55056/**
55057 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
55058 */
55059private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
55060 problem:LogicProblem, interpretation:PartialInterpretation,
55061 source: DefinedElement, target:DefinedElement)
55062{
55063 find interpretation(problem,interpretation);
55064 // The two endpoint of the link have to exist
55065 find mayExist(problem, interpretation, source);
55066 find mayExist(problem, interpretation, target);
55067 // Type consistency
55068 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55069 StringElement(target);
55070 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55071 // the upper bound of the multiplicity should be considered.
55072 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
55073 check(numberOfExistingReferences < 1);
55074} or {
55075 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
55076}
55077/**
55078 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
55079 */
55080private pattern mustInRelationunsettable_attribute_EStructuralFeature(
55081 problem:LogicProblem, interpretation:PartialInterpretation,
55082 source: DefinedElement, target:DefinedElement)
55083{
55084 find interpretation(problem,interpretation);
55085 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55086 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
55087 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55088 BinaryElementRelationLink.param1(link,source);
55089 BinaryElementRelationLink.param2(link,target);
55090}
55091/**
55092 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
55093 */
55094private pattern mayInRelationunsettable_attribute_EStructuralFeature(
55095 problem:LogicProblem, interpretation:PartialInterpretation,
55096 source: DefinedElement, target:DefinedElement)
55097{
55098 find interpretation(problem,interpretation);
55099 // The two endpoint of the link have to exist
55100 find mayExist(problem, interpretation, source);
55101 find mayExist(problem, interpretation, target);
55102 // Type consistency
55103 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55104 BooleanElement(target);
55105 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55106 // the upper bound of the multiplicity should be considered.
55107 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
55108 check(numberOfExistingReferences < 1);
55109} or {
55110 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
55111}
55112/**
55113 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
55114 */
55115private pattern mustInRelationderived_attribute_EStructuralFeature(
55116 problem:LogicProblem, interpretation:PartialInterpretation,
55117 source: DefinedElement, target:DefinedElement)
55118{
55119 find interpretation(problem,interpretation);
55120 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55121 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
55122 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55123 BinaryElementRelationLink.param1(link,source);
55124 BinaryElementRelationLink.param2(link,target);
55125}
55126/**
55127 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
55128 */
55129private pattern mayInRelationderived_attribute_EStructuralFeature(
55130 problem:LogicProblem, interpretation:PartialInterpretation,
55131 source: DefinedElement, target:DefinedElement)
55132{
55133 find interpretation(problem,interpretation);
55134 // The two endpoint of the link have to exist
55135 find mayExist(problem, interpretation, source);
55136 find mayExist(problem, interpretation, target);
55137 // Type consistency
55138 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
55139 BooleanElement(target);
55140 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55141 // the upper bound of the multiplicity should be considered.
55142 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
55143 check(numberOfExistingReferences < 1);
55144} or {
55145 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
55146}
55147/**
55148 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
55149 */
55150private pattern mustInRelationordered_attribute_ETypedElement(
55151 problem:LogicProblem, interpretation:PartialInterpretation,
55152 source: DefinedElement, target:DefinedElement)
55153{
55154 find interpretation(problem,interpretation);
55155 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55156 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
55157 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55158 BinaryElementRelationLink.param1(link,source);
55159 BinaryElementRelationLink.param2(link,target);
55160}
55161/**
55162 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
55163 */
55164private pattern mayInRelationordered_attribute_ETypedElement(
55165 problem:LogicProblem, interpretation:PartialInterpretation,
55166 source: DefinedElement, target:DefinedElement)
55167{
55168 find interpretation(problem,interpretation);
55169 // The two endpoint of the link have to exist
55170 find mayExist(problem, interpretation, source);
55171 find mayExist(problem, interpretation, target);
55172 // Type consistency
55173 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55174 BooleanElement(target);
55175 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55176 // the upper bound of the multiplicity should be considered.
55177 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
55178 check(numberOfExistingReferences < 1);
55179} or {
55180 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
55181}
55182/**
55183 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
55184 */
55185private pattern mustInRelationunique_attribute_ETypedElement(
55186 problem:LogicProblem, interpretation:PartialInterpretation,
55187 source: DefinedElement, target:DefinedElement)
55188{
55189 find interpretation(problem,interpretation);
55190 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55191 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
55192 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55193 BinaryElementRelationLink.param1(link,source);
55194 BinaryElementRelationLink.param2(link,target);
55195}
55196/**
55197 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
55198 */
55199private pattern mayInRelationunique_attribute_ETypedElement(
55200 problem:LogicProblem, interpretation:PartialInterpretation,
55201 source: DefinedElement, target:DefinedElement)
55202{
55203 find interpretation(problem,interpretation);
55204 // The two endpoint of the link have to exist
55205 find mayExist(problem, interpretation, source);
55206 find mayExist(problem, interpretation, target);
55207 // Type consistency
55208 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55209 BooleanElement(target);
55210 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55211 // the upper bound of the multiplicity should be considered.
55212 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
55213 check(numberOfExistingReferences < 1);
55214} or {
55215 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
55216}
55217/**
55218 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
55219 */
55220private pattern mustInRelationlowerBound_attribute_ETypedElement(
55221 problem:LogicProblem, interpretation:PartialInterpretation,
55222 source: DefinedElement, target:DefinedElement)
55223{
55224 find interpretation(problem,interpretation);
55225 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55226 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
55227 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55228 BinaryElementRelationLink.param1(link,source);
55229 BinaryElementRelationLink.param2(link,target);
55230}
55231/**
55232 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
55233 */
55234private pattern mayInRelationlowerBound_attribute_ETypedElement(
55235 problem:LogicProblem, interpretation:PartialInterpretation,
55236 source: DefinedElement, target:DefinedElement)
55237{
55238 find interpretation(problem,interpretation);
55239 // The two endpoint of the link have to exist
55240 find mayExist(problem, interpretation, source);
55241 find mayExist(problem, interpretation, target);
55242 // Type consistency
55243 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55244 IntegerElement(target);
55245 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55246 // the upper bound of the multiplicity should be considered.
55247 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
55248 check(numberOfExistingReferences < 1);
55249} or {
55250 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
55251}
55252/**
55253 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
55254 */
55255private pattern mustInRelationupperBound_attribute_ETypedElement(
55256 problem:LogicProblem, interpretation:PartialInterpretation,
55257 source: DefinedElement, target:DefinedElement)
55258{
55259 find interpretation(problem,interpretation);
55260 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55261 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
55262 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55263 BinaryElementRelationLink.param1(link,source);
55264 BinaryElementRelationLink.param2(link,target);
55265}
55266/**
55267 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
55268 */
55269private pattern mayInRelationupperBound_attribute_ETypedElement(
55270 problem:LogicProblem, interpretation:PartialInterpretation,
55271 source: DefinedElement, target:DefinedElement)
55272{
55273 find interpretation(problem,interpretation);
55274 // The two endpoint of the link have to exist
55275 find mayExist(problem, interpretation, source);
55276 find mayExist(problem, interpretation, target);
55277 // Type consistency
55278 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55279 IntegerElement(target);
55280 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55281 // the upper bound of the multiplicity should be considered.
55282 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
55283 check(numberOfExistingReferences < 1);
55284} or {
55285 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
55286}
55287/**
55288 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
55289 */
55290private pattern mustInRelationmany_attribute_ETypedElement(
55291 problem:LogicProblem, interpretation:PartialInterpretation,
55292 source: DefinedElement, target:DefinedElement)
55293{
55294 find interpretation(problem,interpretation);
55295 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55296 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
55297 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55298 BinaryElementRelationLink.param1(link,source);
55299 BinaryElementRelationLink.param2(link,target);
55300}
55301/**
55302 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
55303 */
55304private pattern mayInRelationmany_attribute_ETypedElement(
55305 problem:LogicProblem, interpretation:PartialInterpretation,
55306 source: DefinedElement, target:DefinedElement)
55307{
55308 find interpretation(problem,interpretation);
55309 // The two endpoint of the link have to exist
55310 find mayExist(problem, interpretation, source);
55311 find mayExist(problem, interpretation, target);
55312 // Type consistency
55313 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55314 BooleanElement(target);
55315 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55316 // the upper bound of the multiplicity should be considered.
55317 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
55318 check(numberOfExistingReferences < 1);
55319} or {
55320 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
55321}
55322/**
55323 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
55324 */
55325private pattern mustInRelationrequired_attribute_ETypedElement(
55326 problem:LogicProblem, interpretation:PartialInterpretation,
55327 source: DefinedElement, target:DefinedElement)
55328{
55329 find interpretation(problem,interpretation);
55330 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55331 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
55332 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55333 BinaryElementRelationLink.param1(link,source);
55334 BinaryElementRelationLink.param2(link,target);
55335}
55336/**
55337 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
55338 */
55339private pattern mayInRelationrequired_attribute_ETypedElement(
55340 problem:LogicProblem, interpretation:PartialInterpretation,
55341 source: DefinedElement, target:DefinedElement)
55342{
55343 find interpretation(problem,interpretation);
55344 // The two endpoint of the link have to exist
55345 find mayExist(problem, interpretation, source);
55346 find mayExist(problem, interpretation, target);
55347 // Type consistency
55348 find mayInstanceOfETypedElement_class(problem,interpretation,source);
55349 BooleanElement(target);
55350 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55351 // the upper bound of the multiplicity should be considered.
55352 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
55353 check(numberOfExistingReferences < 1);
55354} or {
55355 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
55356}
55357/**
55358 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
55359 */
55360private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
55361 problem:LogicProblem, interpretation:PartialInterpretation,
55362 source: DefinedElement, target:DefinedElement)
55363{
55364 find interpretation(problem,interpretation);
55365 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55366 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
55367 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55368 BinaryElementRelationLink.param1(link,source);
55369 BinaryElementRelationLink.param2(link,target);
55370}
55371/**
55372 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
55373 */
55374private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
55375 problem:LogicProblem, interpretation:PartialInterpretation,
55376 source: DefinedElement, target:DefinedElement)
55377{
55378 find interpretation(problem,interpretation);
55379 // The two endpoint of the link have to exist
55380 find mayExist(problem, interpretation, source);
55381 find mayExist(problem, interpretation, target);
55382 // Type consistency
55383 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
55384 StringElement(target);
55385 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55386 // the upper bound of the multiplicity should be considered.
55387 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
55388 check(numberOfExistingReferences < 1);
55389} or {
55390 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
55391}
55392/**
55393 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
55394 */
55395private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
55396 problem:LogicProblem, interpretation:PartialInterpretation,
55397 source: DefinedElement, target:DefinedElement)
55398{
55399 find interpretation(problem,interpretation);
55400 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55401 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
55402 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
55403 BinaryElementRelationLink.param1(link,source);
55404 BinaryElementRelationLink.param2(link,target);
55405}
55406/**
55407 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
55408 */
55409private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
55410 problem:LogicProblem, interpretation:PartialInterpretation,
55411 source: DefinedElement, target:DefinedElement)
55412{
55413 find interpretation(problem,interpretation);
55414 // The two endpoint of the link have to exist
55415 find mayExist(problem, interpretation, source);
55416 find mayExist(problem, interpretation, target);
55417 // Type consistency
55418 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
55419 StringElement(target);
55420 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
55421 // the upper bound of the multiplicity should be considered.
55422 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
55423 check(numberOfExistingReferences < 1);
55424} or {
55425 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
55426}
55427
55428//////////
55429// 1.3 Relation Definition Indexers
55430//////////
55431
55432//////////
55433// 1.4 Containment Indexer
55434//////////
55435private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
55436 find mustContains4(_,_,source,target);
55437}
55438
55439private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
55440 source: DefinedElement, target: DefinedElement)
55441 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
55442
55443 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
55444
55445 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
55446
55447 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
55448
55449 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
55450
55451 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
55452
55453 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
55454
55455 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
55456
55457 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
55458
55459 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
55460
55461 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
55462
55463 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
55464
55465 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
55466
55467 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
55468
55469 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
55470
55471 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
55472
55473 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
55474
55475 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
55476
55477private pattern mustTransitiveContains(source,target) {
55478 find mustContains2+(source,target);
55479}
55480
55481//////////
55482// 2. Invalidation Indexers
55483//////////
55484// 2.1 Invalidated by WF Queries
55485//////////
55486
55487//////////
55488// 3. Unfinishedness Indexers
55489//////////
55490// 3.1 Unfinishedness Measured by Multiplicity
55491//////////
55492pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
55493 find interpretation(problem,interpretation);
55494 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55495 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
55496 find mustInstanceOfEAttribute_class(problem,interpretation,object);
55497 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
55498 check(numberOfExistingReferences < 1);
55499 missingMultiplicity == eval(1-numberOfExistingReferences);
55500}
55501pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
55502 find interpretation(problem,interpretation);
55503 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55504 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
55505 find mustInstanceOfEReference_class(problem,interpretation,object);
55506 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
55507 check(numberOfExistingReferences < 1);
55508 missingMultiplicity == eval(1-numberOfExistingReferences);
55509}
55510pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
55511 find interpretation(problem,interpretation);
55512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
55513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
55514 find mustInstanceOfEGenericType_class(problem,interpretation,object);
55515 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
55516 check(numberOfExistingReferences < 1);
55517 missingMultiplicity == eval(1-numberOfExistingReferences);
55518}
55519
55520//////////
55521// 3.2 Unfinishedness Measured by WF Queries
55522//////////
55523
55524//////////
55525// 4. Refinement Indexers
55526//////////
55527// 4.1 Object constructors
55528//////////
55529private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
55530{
55531 find interpretation(problem,interpretation);
55532 find mustInstanceOfEOperation_class(problem,interpretation,root);
55533 find mustExist(problem, interpretation, root);
55534}or{
55535 find interpretation(problem,interpretation);
55536 find mustInstanceOfENamedElement_class(problem,interpretation,root);
55537 find mustExist(problem, interpretation, root);
55538}or{
55539 find interpretation(problem,interpretation);
55540 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
55541 find mustExist(problem, interpretation, root);
55542}or{
55543 find interpretation(problem,interpretation);
55544 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
55545 find mustExist(problem, interpretation, root);
55546}or{
55547 find interpretation(problem,interpretation);
55548 find mustInstanceOfEGenericType_class(problem,interpretation,root);
55549 find mustExist(problem, interpretation, root);
55550}or{
55551 find interpretation(problem,interpretation);
55552 find mustInstanceOfEObject_class(problem,interpretation,root);
55553 find mustExist(problem, interpretation, root);
55554}or{
55555 find interpretation(problem,interpretation);
55556 find mustInstanceOfEAttribute_class(problem,interpretation,root);
55557 find mustExist(problem, interpretation, root);
55558}or{
55559 find interpretation(problem,interpretation);
55560 find mustInstanceOfEPackage_class(problem,interpretation,root);
55561 find mustExist(problem, interpretation, root);
55562}or{
55563 find interpretation(problem,interpretation);
55564 find mustInstanceOfEParameter_class(problem,interpretation,root);
55565 find mustExist(problem, interpretation, root);
55566}or{
55567 find interpretation(problem,interpretation);
55568 find mustInstanceOfEDataType_class(problem,interpretation,root);
55569 find mustExist(problem, interpretation, root);
55570}or{
55571 find interpretation(problem,interpretation);
55572 find mustInstanceOfEClassifier_class(problem,interpretation,root);
55573 find mustExist(problem, interpretation, root);
55574}or{
55575 find interpretation(problem,interpretation);
55576 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
55577 find mustExist(problem, interpretation, root);
55578}or{
55579 find interpretation(problem,interpretation);
55580 find mustInstanceOfEModelElement_class(problem,interpretation,root);
55581 find mustExist(problem, interpretation, root);
55582}or{
55583 find interpretation(problem,interpretation);
55584 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
55585 find mustExist(problem, interpretation, root);
55586}or{
55587 find interpretation(problem,interpretation);
55588 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
55589 find mustExist(problem, interpretation, root);
55590}or{
55591 find interpretation(problem,interpretation);
55592 find mustInstanceOfEReference_class(problem,interpretation,root);
55593 find mustExist(problem, interpretation, root);
55594}or{
55595 find interpretation(problem,interpretation);
55596 find mustInstanceOfEEnum_class(problem,interpretation,root);
55597 find mustExist(problem, interpretation, root);
55598}or{
55599 find interpretation(problem,interpretation);
55600 find mustInstanceOfETypedElement_class(problem,interpretation,root);
55601 find mustExist(problem, interpretation, root);
55602}or{
55603 find interpretation(problem,interpretation);
55604 find mustInstanceOfEClass_class(problem,interpretation,root);
55605 find mustExist(problem, interpretation, root);
55606}or{
55607 find interpretation(problem,interpretation);
55608 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
55609 find mustExist(problem, interpretation, root);
55610}or{
55611 find interpretation(problem,interpretation);
55612 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
55613 find mustExist(problem, interpretation, root);
55614}or{
55615 find interpretation(problem,interpretation);
55616 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
55617 find mustExist(problem, interpretation, root);
55618}or{
55619 find interpretation(problem,interpretation);
55620 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
55621 find mustExist(problem, interpretation, root);
55622}or{
55623 find interpretation(problem,interpretation);
55624 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
55625 find mustExist(problem, interpretation, root);
55626}or{
55627 find interpretation(problem,interpretation);
55628 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
55629 find mustExist(problem, interpretation, root);
55630}
55631pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
55632 problem:LogicProblem, interpretation:PartialInterpretation,
55633 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55634 container:DefinedElement)
55635{
55636 find interpretation(problem,interpretation);
55637 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55638 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
55639 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55640 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
55641 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55642 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
55643 find mustInstanceOfEModelElement_class(problem,interpretation,container);
55644 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
55645 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
55646 find mustExist(problem, interpretation, container);
55647 neg find mustExist(problem, interpretation, newObject);
55648}
55649pattern createObject_EAnnotation_class(
55650 problem:LogicProblem, interpretation:PartialInterpretation,
55651 typeInterpretation:PartialComplexTypeInterpretation)
55652{
55653 find interpretation(problem,interpretation);
55654 neg find hasElementInContainment(problem,interpretation);
55655 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55656 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
55657 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
55658 find mayExist(problem, interpretation, newObject);
55659 neg find mustExist(problem, interpretation, newObject);
55660}
55661pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
55662 problem:LogicProblem, interpretation:PartialInterpretation,
55663 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55664 container:DefinedElement)
55665{
55666 find interpretation(problem,interpretation);
55667 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55668 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
55669 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55670 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
55671 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55672 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
55673 find mustInstanceOfEPackage_class(problem,interpretation,container);
55674 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
55675 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
55676 find mustExist(problem, interpretation, container);
55677 neg find mustExist(problem, interpretation, newObject);
55678}
55679pattern createObject_EEnum_class(
55680 problem:LogicProblem, interpretation:PartialInterpretation,
55681 typeInterpretation:PartialComplexTypeInterpretation)
55682{
55683 find interpretation(problem,interpretation);
55684 neg find hasElementInContainment(problem,interpretation);
55685 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55686 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
55687 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
55688 find mayExist(problem, interpretation, newObject);
55689 neg find mustExist(problem, interpretation, newObject);
55690}
55691pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
55692 problem:LogicProblem, interpretation:PartialInterpretation,
55693 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55694 container:DefinedElement)
55695{
55696 find interpretation(problem,interpretation);
55697 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55698 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
55699 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55700 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
55701 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55702 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
55703 find mustInstanceOfEOperation_class(problem,interpretation,container);
55704 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
55705 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
55706 find mustExist(problem, interpretation, container);
55707 neg find mustExist(problem, interpretation, newObject);
55708}
55709pattern createObject_EParameter_class(
55710 problem:LogicProblem, interpretation:PartialInterpretation,
55711 typeInterpretation:PartialComplexTypeInterpretation)
55712{
55713 find interpretation(problem,interpretation);
55714 neg find hasElementInContainment(problem,interpretation);
55715 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55716 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
55717 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
55718 find mayExist(problem, interpretation, newObject);
55719 neg find mustExist(problem, interpretation, newObject);
55720}
55721pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
55722 problem:LogicProblem, interpretation:PartialInterpretation,
55723 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55724 container:DefinedElement)
55725{
55726 find interpretation(problem,interpretation);
55727 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55728 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
55729 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55730 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
55731 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55732 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
55733 find mustInstanceOfEPackage_class(problem,interpretation,container);
55734 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
55735 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
55736 find mustExist(problem, interpretation, container);
55737 neg find mustExist(problem, interpretation, newObject);
55738}
55739pattern createObject_EPackage_class_UndefinedPart(
55740 problem:LogicProblem, interpretation:PartialInterpretation,
55741 typeInterpretation:PartialComplexTypeInterpretation)
55742{
55743 find interpretation(problem,interpretation);
55744 neg find hasElementInContainment(problem,interpretation);
55745 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55746 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
55747 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
55748 find mayExist(problem, interpretation, newObject);
55749 neg find mustExist(problem, interpretation, newObject);
55750}
55751pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
55752 problem:LogicProblem, interpretation:PartialInterpretation,
55753 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55754 container:DefinedElement)
55755{
55756 find interpretation(problem,interpretation);
55757 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55758 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
55759 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55760 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
55761 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55762 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
55763 find mustInstanceOfEPackage_class(problem,interpretation,container);
55764 find mayInstanceOfEClass_class(problem,interpretation,newObject);
55765 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
55766 find mustExist(problem, interpretation, container);
55767 neg find mustExist(problem, interpretation, newObject);
55768}
55769pattern createObject_EClass_class(
55770 problem:LogicProblem, interpretation:PartialInterpretation,
55771 typeInterpretation:PartialComplexTypeInterpretation)
55772{
55773 find interpretation(problem,interpretation);
55774 neg find hasElementInContainment(problem,interpretation);
55775 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55776 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
55777 find mayInstanceOfEClass_class(problem,interpretation,newObject);
55778 find mayExist(problem, interpretation, newObject);
55779 neg find mustExist(problem, interpretation, newObject);
55780}
55781pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
55782 problem:LogicProblem, interpretation:PartialInterpretation,
55783 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55784 container:DefinedElement)
55785{
55786 find interpretation(problem,interpretation);
55787 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55788 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
55789 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55790 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
55791 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55792 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
55793 find mustInstanceOfEClass_class(problem,interpretation,container);
55794 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
55795 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
55796 find mustExist(problem, interpretation, container);
55797 neg find mustExist(problem, interpretation, newObject);
55798}
55799pattern createObject_EOperation_class(
55800 problem:LogicProblem, interpretation:PartialInterpretation,
55801 typeInterpretation:PartialComplexTypeInterpretation)
55802{
55803 find interpretation(problem,interpretation);
55804 neg find hasElementInContainment(problem,interpretation);
55805 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55806 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
55807 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
55808 find mayExist(problem, interpretation, newObject);
55809 neg find mustExist(problem, interpretation, newObject);
55810}
55811pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
55812 problem:LogicProblem, interpretation:PartialInterpretation,
55813 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55814 container:DefinedElement)
55815{
55816 find interpretation(problem,interpretation);
55817 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55818 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
55819 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55820 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
55821 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55822 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
55823 find mustInstanceOfEClass_class(problem,interpretation,container);
55824 find mayInstanceOfEReference_class(problem,interpretation,newObject);
55825 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
55826 find mustExist(problem, interpretation, container);
55827 neg find mustExist(problem, interpretation, newObject);
55828}
55829pattern createObject_EReference_class(
55830 problem:LogicProblem, interpretation:PartialInterpretation,
55831 typeInterpretation:PartialComplexTypeInterpretation)
55832{
55833 find interpretation(problem,interpretation);
55834 neg find hasElementInContainment(problem,interpretation);
55835 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55836 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
55837 find mayInstanceOfEReference_class(problem,interpretation,newObject);
55838 find mayExist(problem, interpretation, newObject);
55839 neg find mustExist(problem, interpretation, newObject);
55840}
55841pattern createObject_EObject_class_by_contents_reference_EAnnotation(
55842 problem:LogicProblem, interpretation:PartialInterpretation,
55843 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55844 container:DefinedElement)
55845{
55846 find interpretation(problem,interpretation);
55847 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55848 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
55849 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55850 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
55851 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
55852 find mayInstanceOfEObject_class(problem,interpretation,newObject);
55853 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
55854 find mustExist(problem, interpretation, container);
55855 neg find mustExist(problem, interpretation, newObject);
55856}
55857pattern createObject_EObject_class(
55858 problem:LogicProblem, interpretation:PartialInterpretation,
55859 typeInterpretation:PartialComplexTypeInterpretation)
55860{
55861 find interpretation(problem,interpretation);
55862 neg find hasElementInContainment(problem,interpretation);
55863 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55864 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
55865 find mayInstanceOfEObject_class(problem,interpretation,newObject);
55866 find mayExist(problem, interpretation, newObject);
55867 neg find mustExist(problem, interpretation, newObject);
55868}
55869pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
55870 problem:LogicProblem, interpretation:PartialInterpretation,
55871 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55872 container:DefinedElement)
55873{
55874 find interpretation(problem,interpretation);
55875 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55876 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
55877 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55878 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
55879 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55880 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
55881 find mustInstanceOfEEnum_class(problem,interpretation,container);
55882 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
55883 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
55884 find mustExist(problem, interpretation, container);
55885 neg find mustExist(problem, interpretation, newObject);
55886}
55887pattern createObject_EEnumLiteral_class(
55888 problem:LogicProblem, interpretation:PartialInterpretation,
55889 typeInterpretation:PartialComplexTypeInterpretation)
55890{
55891 find interpretation(problem,interpretation);
55892 neg find hasElementInContainment(problem,interpretation);
55893 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55894 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
55895 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
55896 find mayExist(problem, interpretation, newObject);
55897 neg find mustExist(problem, interpretation, newObject);
55898}
55899pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
55900 problem:LogicProblem, interpretation:PartialInterpretation,
55901 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55902 container:DefinedElement)
55903{
55904 find interpretation(problem,interpretation);
55905 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55906 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
55907 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55908 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
55909 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55910 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
55911 find mustInstanceOfEClass_class(problem,interpretation,container);
55912 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
55913 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
55914 find mustExist(problem, interpretation, container);
55915 neg find mustExist(problem, interpretation, newObject);
55916}
55917pattern createObject_EAttribute_class(
55918 problem:LogicProblem, interpretation:PartialInterpretation,
55919 typeInterpretation:PartialComplexTypeInterpretation)
55920{
55921 find interpretation(problem,interpretation);
55922 neg find hasElementInContainment(problem,interpretation);
55923 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55924 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
55925 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
55926 find mayExist(problem, interpretation, newObject);
55927 neg find mustExist(problem, interpretation, newObject);
55928}
55929pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
55930 problem:LogicProblem, interpretation:PartialInterpretation,
55931 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55932 container:DefinedElement)
55933{
55934 find interpretation(problem,interpretation);
55935 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55936 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
55937 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55938 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
55939 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
55940 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
55941 find mustInstanceOfEPackage_class(problem,interpretation,container);
55942 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
55943 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
55944 find mustExist(problem, interpretation, container);
55945 neg find mustExist(problem, interpretation, newObject);
55946}
55947pattern createObject_EDataType_class(
55948 problem:LogicProblem, interpretation:PartialInterpretation,
55949 typeInterpretation:PartialComplexTypeInterpretation)
55950{
55951 find interpretation(problem,interpretation);
55952 neg find hasElementInContainment(problem,interpretation);
55953 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55954 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
55955 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
55956 find mayExist(problem, interpretation, newObject);
55957 neg find mustExist(problem, interpretation, newObject);
55958}
55959pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
55960 problem:LogicProblem, interpretation:PartialInterpretation,
55961 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55962 container:DefinedElement)
55963{
55964 find interpretation(problem,interpretation);
55965 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55966 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
55967 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55968 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
55969 find mustInstanceOfEClass_class(problem,interpretation,container);
55970 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
55971 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
55972 find mustExist(problem, interpretation, container);
55973 neg find mustExist(problem, interpretation, newObject);
55974}
55975pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
55976 problem:LogicProblem, interpretation:PartialInterpretation,
55977 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55978 container:DefinedElement)
55979{
55980 find interpretation(problem,interpretation);
55981 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55982 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
55983 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
55984 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
55985 find mustInstanceOfEOperation_class(problem,interpretation,container);
55986 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
55987 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
55988 find mustExist(problem, interpretation, container);
55989 neg find mustExist(problem, interpretation, newObject);
55990}
55991pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
55992 problem:LogicProblem, interpretation:PartialInterpretation,
55993 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
55994 container:DefinedElement)
55995{
55996 find interpretation(problem,interpretation);
55997 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
55998 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
55999 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56000 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
56001 find mustInstanceOfETypedElement_class(problem,interpretation,container);
56002 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56003 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
56004 find mustExist(problem, interpretation, container);
56005 neg find mustExist(problem, interpretation, newObject);
56006}
56007pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
56008 problem:LogicProblem, interpretation:PartialInterpretation,
56009 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56010 container:DefinedElement)
56011{
56012 find interpretation(problem,interpretation);
56013 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56014 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56015 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56016 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
56017 find mustInstanceOfEGenericType_class(problem,interpretation,container);
56018 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56019 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
56020 find mustExist(problem, interpretation, container);
56021 neg find mustExist(problem, interpretation, newObject);
56022}
56023pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
56024 problem:LogicProblem, interpretation:PartialInterpretation,
56025 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56026 container:DefinedElement)
56027{
56028 find interpretation(problem,interpretation);
56029 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56030 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56031 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56032 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
56033 find mustInstanceOfEGenericType_class(problem,interpretation,container);
56034 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56035 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
56036 find mustExist(problem, interpretation, container);
56037 neg find mustExist(problem, interpretation, newObject);
56038}
56039pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
56040 problem:LogicProblem, interpretation:PartialInterpretation,
56041 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56042 container:DefinedElement)
56043{
56044 find interpretation(problem,interpretation);
56045 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56046 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56047 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56048 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
56049 find mustInstanceOfEGenericType_class(problem,interpretation,container);
56050 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56051 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
56052 find mustExist(problem, interpretation, container);
56053 neg find mustExist(problem, interpretation, newObject);
56054}
56055pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
56056 problem:LogicProblem, interpretation:PartialInterpretation,
56057 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56058 container:DefinedElement)
56059{
56060 find interpretation(problem,interpretation);
56061 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56062 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56063 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56064 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
56065 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
56066 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56067 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
56068 find mustExist(problem, interpretation, container);
56069 neg find mustExist(problem, interpretation, newObject);
56070}
56071pattern createObject_EGenericType_class(
56072 problem:LogicProblem, interpretation:PartialInterpretation,
56073 typeInterpretation:PartialComplexTypeInterpretation)
56074{
56075 find interpretation(problem,interpretation);
56076 neg find hasElementInContainment(problem,interpretation);
56077 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56078 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
56079 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
56080 find mayExist(problem, interpretation, newObject);
56081 neg find mustExist(problem, interpretation, newObject);
56082}
56083pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
56084 problem:LogicProblem, interpretation:PartialInterpretation,
56085 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56086 container:DefinedElement)
56087{
56088 find interpretation(problem,interpretation);
56089 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56090 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
56091 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56092 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
56093 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
56094 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
56095 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
56096 find mustExist(problem, interpretation, container);
56097 neg find mustExist(problem, interpretation, newObject);
56098}
56099pattern createObject_EStringToStringMapEntry_class(
56100 problem:LogicProblem, interpretation:PartialInterpretation,
56101 typeInterpretation:PartialComplexTypeInterpretation)
56102{
56103 find interpretation(problem,interpretation);
56104 neg find hasElementInContainment(problem,interpretation);
56105 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56106 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
56107 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
56108 find mayExist(problem, interpretation, newObject);
56109 neg find mustExist(problem, interpretation, newObject);
56110}
56111pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
56112 problem:LogicProblem, interpretation:PartialInterpretation,
56113 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56114 container:DefinedElement)
56115{
56116 find interpretation(problem,interpretation);
56117 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56118 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
56119 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56120 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
56121 find mustInstanceOfEClassifier_class(problem,interpretation,container);
56122 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
56123 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
56124 find mustExist(problem, interpretation, container);
56125 neg find mustExist(problem, interpretation, newObject);
56126}
56127pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
56128 problem:LogicProblem, interpretation:PartialInterpretation,
56129 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
56130 container:DefinedElement)
56131{
56132 find interpretation(problem,interpretation);
56133 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56134 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
56135 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
56136 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
56137 find mustInstanceOfEOperation_class(problem,interpretation,container);
56138 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
56139 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
56140 find mustExist(problem, interpretation, container);
56141 neg find mustExist(problem, interpretation, newObject);
56142}
56143pattern createObject_ETypeParameter_class(
56144 problem:LogicProblem, interpretation:PartialInterpretation,
56145 typeInterpretation:PartialComplexTypeInterpretation)
56146{
56147 find interpretation(problem,interpretation);
56148 neg find hasElementInContainment(problem,interpretation);
56149 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
56150 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
56151 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
56152 find mayExist(problem, interpretation, newObject);
56153 neg find mustExist(problem, interpretation, newObject);
56154}
56155
56156//////////
56157// 4.2 Type refinement
56158//////////
56159pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56160 find interpretation(problem,interpretation);
56161 PartialInterpretation.newElements(interpretation,element);
56162 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
56163 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56164 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
56165 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56166 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56167 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56168}
56169pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56170 find interpretation(problem,interpretation);
56171 PartialInterpretation.newElements(interpretation,element);
56172 find mayInstanceOfEEnum_class(problem,interpretation,element);
56173 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56174 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56175 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
56176 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56177 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56178 neg find mustInstanceOfEClass_class(problem,interpretation,element);
56179 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56180 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56181 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56182 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56183}
56184pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56185 find interpretation(problem,interpretation);
56186 PartialInterpretation.newElements(interpretation,element);
56187 find mayInstanceOfEParameter_class(problem,interpretation,element);
56188 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56189 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56190 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56191 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56192 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56193 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56194 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56195 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
56196 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56197 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56198 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56199}
56200pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56201 find interpretation(problem,interpretation);
56202 PartialInterpretation.newElements(interpretation,element);
56203 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
56204 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56205 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56206 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56207 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
56208 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56209 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56210 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56211 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56212 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56213}
56214pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56215 find interpretation(problem,interpretation);
56216 PartialInterpretation.newElements(interpretation,element);
56217 find mayInstanceOfEClass_class(problem,interpretation,element);
56218 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56219 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56220 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56221 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
56222 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56223 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56224 neg find mustInstanceOfEClass_class(problem,interpretation,element);
56225 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56226 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56227 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56228}
56229pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56230 find interpretation(problem,interpretation);
56231 PartialInterpretation.newElements(interpretation,element);
56232 find mayInstanceOfEOperation_class(problem,interpretation,element);
56233 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56234 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56235 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56236 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56237 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56238 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56239 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56240 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
56241 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56242 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56243 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56244}
56245pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56246 find interpretation(problem,interpretation);
56247 PartialInterpretation.newElements(interpretation,element);
56248 find mayInstanceOfEReference_class(problem,interpretation,element);
56249 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56250 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56251 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
56252 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56253 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56254 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56255 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56256 neg find mustInstanceOfEReference_class(problem,interpretation,element);
56257 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56258 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56259 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56260 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56261}
56262pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56263 find interpretation(problem,interpretation);
56264 PartialInterpretation.newElements(interpretation,element);
56265 find mayInstanceOfEObject_class(problem,interpretation,element);
56266 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56267 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
56268 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56269 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56270}
56271pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56272 find interpretation(problem,interpretation);
56273 PartialInterpretation.newElements(interpretation,element);
56274 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
56275 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56276 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56277 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56278 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56279 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56280 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56281 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56282 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56283 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56284}
56285pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56286 find interpretation(problem,interpretation);
56287 PartialInterpretation.newElements(interpretation,element);
56288 find mayInstanceOfEAttribute_class(problem,interpretation,element);
56289 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56290 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56291 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
56292 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
56293 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56294 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56295 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56296 neg find mustInstanceOfEReference_class(problem,interpretation,element);
56297 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
56298 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56299 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56300 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56301}
56302pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56303 find interpretation(problem,interpretation);
56304 PartialInterpretation.newElements(interpretation,element);
56305 find mayInstanceOfEDataType_class(problem,interpretation,element);
56306 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56307 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56308 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
56309 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
56310 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56311 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56312 neg find mustInstanceOfEClass_class(problem,interpretation,element);
56313 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56314 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56315 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56316 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56317}
56318pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56319 find interpretation(problem,interpretation);
56320 PartialInterpretation.newElements(interpretation,element);
56321 find mayInstanceOfEGenericType_class(problem,interpretation,element);
56322 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56323 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
56324 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56325 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56326}
56327pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56328 find interpretation(problem,interpretation);
56329 PartialInterpretation.newElements(interpretation,element);
56330 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56331 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56332 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
56333 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56334 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56335}
56336pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
56337 find interpretation(problem,interpretation);
56338 PartialInterpretation.newElements(interpretation,element);
56339 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
56340 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
56341 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
56342 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
56343 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
56344 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
56345 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
56346 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
56347 neg find mustInstanceOfEObject_class(problem,interpretation,element);
56348 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
56349}
56350
56351//////////
56352// 4.3 Relation refinement
56353//////////
56354pattern refineRelation_eAttributeType_reference_EAttribute(
56355 problem:LogicProblem, interpretation:PartialInterpretation,
56356 relationIterpretation:PartialRelationInterpretation,
56357 from: DefinedElement, to: DefinedElement)
56358{
56359 find interpretation(problem,interpretation);
56360 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56361 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
56362 find mustExist(problem, interpretation, from);
56363 find mustExist(problem, interpretation, to);
56364 find mustInstanceOfEAttribute_class(problem,interpretation,from);
56365 find mustInstanceOfEDataType_class(problem,interpretation,to);
56366 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
56367 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
56368}
56369pattern refineRelation_references_reference_EAnnotation(
56370 problem:LogicProblem, interpretation:PartialInterpretation,
56371 relationIterpretation:PartialRelationInterpretation,
56372 from: DefinedElement, to: DefinedElement)
56373{
56374 find interpretation(problem,interpretation);
56375 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56376 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
56377 find mustExist(problem, interpretation, from);
56378 find mustExist(problem, interpretation, to);
56379 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
56380 find mustInstanceOfEObject_class(problem,interpretation,to);
56381 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
56382 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
56383}
56384pattern refineRelation_eSuperTypes_reference_EClass(
56385 problem:LogicProblem, interpretation:PartialInterpretation,
56386 relationIterpretation:PartialRelationInterpretation,
56387 from: DefinedElement, to: DefinedElement)
56388{
56389 find interpretation(problem,interpretation);
56390 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56391 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
56392 find mustExist(problem, interpretation, from);
56393 find mustExist(problem, interpretation, to);
56394 find mustInstanceOfEClass_class(problem,interpretation,from);
56395 find mustInstanceOfEClass_class(problem,interpretation,to);
56396 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
56397 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
56398}
56399pattern refineRelation_eAllAttributes_reference_EClass(
56400 problem:LogicProblem, interpretation:PartialInterpretation,
56401 relationIterpretation:PartialRelationInterpretation,
56402 from: DefinedElement, to: DefinedElement)
56403{
56404 find interpretation(problem,interpretation);
56405 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56406 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
56407 find mustExist(problem, interpretation, from);
56408 find mustExist(problem, interpretation, to);
56409 find mustInstanceOfEClass_class(problem,interpretation,from);
56410 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56411 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
56412 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
56413}
56414pattern refineRelation_eAllReferences_reference_EClass(
56415 problem:LogicProblem, interpretation:PartialInterpretation,
56416 relationIterpretation:PartialRelationInterpretation,
56417 from: DefinedElement, to: DefinedElement)
56418{
56419 find interpretation(problem,interpretation);
56420 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56421 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
56422 find mustExist(problem, interpretation, from);
56423 find mustExist(problem, interpretation, to);
56424 find mustInstanceOfEClass_class(problem,interpretation,from);
56425 find mustInstanceOfEReference_class(problem,interpretation,to);
56426 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
56427 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
56428}
56429pattern refineRelation_eReferences_reference_EClass(
56430 problem:LogicProblem, interpretation:PartialInterpretation,
56431 relationIterpretation:PartialRelationInterpretation,
56432 from: DefinedElement, to: DefinedElement)
56433{
56434 find interpretation(problem,interpretation);
56435 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56436 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
56437 find mustExist(problem, interpretation, from);
56438 find mustExist(problem, interpretation, to);
56439 find mustInstanceOfEClass_class(problem,interpretation,from);
56440 find mustInstanceOfEReference_class(problem,interpretation,to);
56441 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
56442 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
56443}
56444pattern refineRelation_eAttributes_reference_EClass(
56445 problem:LogicProblem, interpretation:PartialInterpretation,
56446 relationIterpretation:PartialRelationInterpretation,
56447 from: DefinedElement, to: DefinedElement)
56448{
56449 find interpretation(problem,interpretation);
56450 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56451 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
56452 find mustExist(problem, interpretation, from);
56453 find mustExist(problem, interpretation, to);
56454 find mustInstanceOfEClass_class(problem,interpretation,from);
56455 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56456 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
56457 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
56458}
56459pattern refineRelation_eAllContainments_reference_EClass(
56460 problem:LogicProblem, interpretation:PartialInterpretation,
56461 relationIterpretation:PartialRelationInterpretation,
56462 from: DefinedElement, to: DefinedElement)
56463{
56464 find interpretation(problem,interpretation);
56465 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56466 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
56467 find mustExist(problem, interpretation, from);
56468 find mustExist(problem, interpretation, to);
56469 find mustInstanceOfEClass_class(problem,interpretation,from);
56470 find mustInstanceOfEReference_class(problem,interpretation,to);
56471 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
56472 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
56473}
56474pattern refineRelation_eAllOperations_reference_EClass(
56475 problem:LogicProblem, interpretation:PartialInterpretation,
56476 relationIterpretation:PartialRelationInterpretation,
56477 from: DefinedElement, to: DefinedElement)
56478{
56479 find interpretation(problem,interpretation);
56480 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56481 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
56482 find mustExist(problem, interpretation, from);
56483 find mustExist(problem, interpretation, to);
56484 find mustInstanceOfEClass_class(problem,interpretation,from);
56485 find mustInstanceOfEOperation_class(problem,interpretation,to);
56486 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
56487 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
56488}
56489pattern refineRelation_eAllStructuralFeatures_reference_EClass(
56490 problem:LogicProblem, interpretation:PartialInterpretation,
56491 relationIterpretation:PartialRelationInterpretation,
56492 from: DefinedElement, to: DefinedElement)
56493{
56494 find interpretation(problem,interpretation);
56495 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56496 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
56497 find mustExist(problem, interpretation, from);
56498 find mustExist(problem, interpretation, to);
56499 find mustInstanceOfEClass_class(problem,interpretation,from);
56500 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
56501 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
56502 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
56503}
56504pattern refineRelation_eAllSuperTypes_reference_EClass(
56505 problem:LogicProblem, interpretation:PartialInterpretation,
56506 relationIterpretation:PartialRelationInterpretation,
56507 from: DefinedElement, to: DefinedElement)
56508{
56509 find interpretation(problem,interpretation);
56510 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56511 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
56512 find mustExist(problem, interpretation, from);
56513 find mustExist(problem, interpretation, to);
56514 find mustInstanceOfEClass_class(problem,interpretation,from);
56515 find mustInstanceOfEClass_class(problem,interpretation,to);
56516 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
56517 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
56518}
56519pattern refineRelation_eIDAttribute_reference_EClass(
56520 problem:LogicProblem, interpretation:PartialInterpretation,
56521 relationIterpretation:PartialRelationInterpretation,
56522 from: DefinedElement, to: DefinedElement)
56523{
56524 find interpretation(problem,interpretation);
56525 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56526 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
56527 find mustExist(problem, interpretation, from);
56528 find mustExist(problem, interpretation, to);
56529 find mustInstanceOfEClass_class(problem,interpretation,from);
56530 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56531 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
56532 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
56533}
56534pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
56535 problem:LogicProblem, interpretation:PartialInterpretation,
56536 relationIterpretation:PartialRelationInterpretation,
56537 from: DefinedElement, to: DefinedElement)
56538{
56539 find interpretation(problem,interpretation);
56540 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56541 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
56542 find mustExist(problem, interpretation, from);
56543 find mustExist(problem, interpretation, to);
56544 find mustInstanceOfEClass_class(problem,interpretation,from);
56545 find mustInstanceOfEGenericType_class(problem,interpretation,to);
56546 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
56547 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
56548}
56549pattern refineRelation_eExceptions_reference_EOperation(
56550 problem:LogicProblem, interpretation:PartialInterpretation,
56551 relationIterpretation:PartialRelationInterpretation,
56552 from: DefinedElement, to: DefinedElement)
56553{
56554 find interpretation(problem,interpretation);
56555 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56556 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
56557 find mustExist(problem, interpretation, from);
56558 find mustExist(problem, interpretation, to);
56559 find mustInstanceOfEOperation_class(problem,interpretation,from);
56560 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56561 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
56562 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
56563}
56564pattern refineRelation_eOpposite_reference_EReference(
56565 problem:LogicProblem, interpretation:PartialInterpretation,
56566 relationIterpretation:PartialRelationInterpretation,
56567 from: DefinedElement, to: DefinedElement)
56568{
56569 find interpretation(problem,interpretation);
56570 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56571 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
56572 find mustExist(problem, interpretation, from);
56573 find mustExist(problem, interpretation, to);
56574 find mustInstanceOfEReference_class(problem,interpretation,from);
56575 find mustInstanceOfEReference_class(problem,interpretation,to);
56576 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
56577 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
56578}
56579pattern refineRelation_eReferenceType_reference_EReference(
56580 problem:LogicProblem, interpretation:PartialInterpretation,
56581 relationIterpretation:PartialRelationInterpretation,
56582 from: DefinedElement, to: DefinedElement)
56583{
56584 find interpretation(problem,interpretation);
56585 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56586 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
56587 find mustExist(problem, interpretation, from);
56588 find mustExist(problem, interpretation, to);
56589 find mustInstanceOfEReference_class(problem,interpretation,from);
56590 find mustInstanceOfEClass_class(problem,interpretation,to);
56591 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
56592 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
56593}
56594pattern refineRelation_eKeys_reference_EReference(
56595 problem:LogicProblem, interpretation:PartialInterpretation,
56596 relationIterpretation:PartialRelationInterpretation,
56597 from: DefinedElement, to: DefinedElement)
56598{
56599 find interpretation(problem,interpretation);
56600 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56601 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
56602 find mustExist(problem, interpretation, from);
56603 find mustExist(problem, interpretation, to);
56604 find mustInstanceOfEReference_class(problem,interpretation,from);
56605 find mustInstanceOfEAttribute_class(problem,interpretation,to);
56606 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
56607 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
56608}
56609pattern refineRelation_eType_reference_ETypedElement(
56610 problem:LogicProblem, interpretation:PartialInterpretation,
56611 relationIterpretation:PartialRelationInterpretation,
56612 from: DefinedElement, to: DefinedElement)
56613{
56614 find interpretation(problem,interpretation);
56615 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56616 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
56617 find mustExist(problem, interpretation, from);
56618 find mustExist(problem, interpretation, to);
56619 find mustInstanceOfETypedElement_class(problem,interpretation,from);
56620 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56621 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
56622 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
56623}
56624pattern refineRelation_eRawType_reference_EGenericType(
56625 problem:LogicProblem, interpretation:PartialInterpretation,
56626 relationIterpretation:PartialRelationInterpretation,
56627 from: DefinedElement, to: DefinedElement)
56628{
56629 find interpretation(problem,interpretation);
56630 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56631 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
56632 find mustExist(problem, interpretation, from);
56633 find mustExist(problem, interpretation, to);
56634 find mustInstanceOfEGenericType_class(problem,interpretation,from);
56635 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56636 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
56637 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
56638}
56639pattern refineRelation_eTypeParameter_reference_EGenericType(
56640 problem:LogicProblem, interpretation:PartialInterpretation,
56641 relationIterpretation:PartialRelationInterpretation,
56642 from: DefinedElement, to: DefinedElement)
56643{
56644 find interpretation(problem,interpretation);
56645 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56646 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
56647 find mustExist(problem, interpretation, from);
56648 find mustExist(problem, interpretation, to);
56649 find mustInstanceOfEGenericType_class(problem,interpretation,from);
56650 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
56651 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
56652 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
56653}
56654pattern refineRelation_eClassifier_reference_EGenericType(
56655 problem:LogicProblem, interpretation:PartialInterpretation,
56656 relationIterpretation:PartialRelationInterpretation,
56657 from: DefinedElement, to: DefinedElement)
56658{
56659 find interpretation(problem,interpretation);
56660 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56661 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
56662 find mustExist(problem, interpretation, from);
56663 find mustExist(problem, interpretation, to);
56664 find mustInstanceOfEGenericType_class(problem,interpretation,from);
56665 find mustInstanceOfEClassifier_class(problem,interpretation,to);
56666 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
56667 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
56668}
56669pattern refineRelation_iD_attribute_EAttribute(
56670 problem:LogicProblem, interpretation:PartialInterpretation,
56671 relationIterpretation:PartialRelationInterpretation,
56672 from: DefinedElement, to: DefinedElement)
56673{
56674 find interpretation(problem,interpretation);
56675 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56676 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
56677 find mustExist(problem, interpretation, from);
56678 find mustExist(problem, interpretation, to);
56679 find mustInstanceOfEAttribute_class(problem,interpretation,from);
56680 BooleanElement(to);
56681 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
56682 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
56683}
56684pattern refineRelation_source_attribute_EAnnotation(
56685 problem:LogicProblem, interpretation:PartialInterpretation,
56686 relationIterpretation:PartialRelationInterpretation,
56687 from: DefinedElement, to: DefinedElement)
56688{
56689 find interpretation(problem,interpretation);
56690 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56691 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
56692 find mustExist(problem, interpretation, from);
56693 find mustExist(problem, interpretation, to);
56694 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
56695 StringElement(to);
56696 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
56697 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
56698}
56699pattern refineRelation_abstract_attribute_EClass(
56700 problem:LogicProblem, interpretation:PartialInterpretation,
56701 relationIterpretation:PartialRelationInterpretation,
56702 from: DefinedElement, to: DefinedElement)
56703{
56704 find interpretation(problem,interpretation);
56705 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56706 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
56707 find mustExist(problem, interpretation, from);
56708 find mustExist(problem, interpretation, to);
56709 find mustInstanceOfEClass_class(problem,interpretation,from);
56710 BooleanElement(to);
56711 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
56712 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
56713}
56714pattern refineRelation_interface_attribute_EClass(
56715 problem:LogicProblem, interpretation:PartialInterpretation,
56716 relationIterpretation:PartialRelationInterpretation,
56717 from: DefinedElement, to: DefinedElement)
56718{
56719 find interpretation(problem,interpretation);
56720 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56721 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
56722 find mustExist(problem, interpretation, from);
56723 find mustExist(problem, interpretation, to);
56724 find mustInstanceOfEClass_class(problem,interpretation,from);
56725 BooleanElement(to);
56726 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
56727 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
56728}
56729pattern refineRelation_instanceClassName_attribute_EClassifier(
56730 problem:LogicProblem, interpretation:PartialInterpretation,
56731 relationIterpretation:PartialRelationInterpretation,
56732 from: DefinedElement, to: DefinedElement)
56733{
56734 find interpretation(problem,interpretation);
56735 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56736 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
56737 find mustExist(problem, interpretation, from);
56738 find mustExist(problem, interpretation, to);
56739 find mustInstanceOfEClassifier_class(problem,interpretation,from);
56740 StringElement(to);
56741 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
56742 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
56743}
56744pattern refineRelation_instanceTypeName_attribute_EClassifier(
56745 problem:LogicProblem, interpretation:PartialInterpretation,
56746 relationIterpretation:PartialRelationInterpretation,
56747 from: DefinedElement, to: DefinedElement)
56748{
56749 find interpretation(problem,interpretation);
56750 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56751 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
56752 find mustExist(problem, interpretation, from);
56753 find mustExist(problem, interpretation, to);
56754 find mustInstanceOfEClassifier_class(problem,interpretation,from);
56755 StringElement(to);
56756 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
56757 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
56758}
56759pattern refineRelation_serializable_attribute_EDataType(
56760 problem:LogicProblem, interpretation:PartialInterpretation,
56761 relationIterpretation:PartialRelationInterpretation,
56762 from: DefinedElement, to: DefinedElement)
56763{
56764 find interpretation(problem,interpretation);
56765 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56766 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
56767 find mustExist(problem, interpretation, from);
56768 find mustExist(problem, interpretation, to);
56769 find mustInstanceOfEDataType_class(problem,interpretation,from);
56770 BooleanElement(to);
56771 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
56772 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
56773}
56774pattern refineRelation_value_attribute_EEnumLiteral(
56775 problem:LogicProblem, interpretation:PartialInterpretation,
56776 relationIterpretation:PartialRelationInterpretation,
56777 from: DefinedElement, to: DefinedElement)
56778{
56779 find interpretation(problem,interpretation);
56780 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56781 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
56782 find mustExist(problem, interpretation, from);
56783 find mustExist(problem, interpretation, to);
56784 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
56785 IntegerElement(to);
56786 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
56787 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
56788}
56789pattern refineRelation_literal_attribute_EEnumLiteral(
56790 problem:LogicProblem, interpretation:PartialInterpretation,
56791 relationIterpretation:PartialRelationInterpretation,
56792 from: DefinedElement, to: DefinedElement)
56793{
56794 find interpretation(problem,interpretation);
56795 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56796 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
56797 find mustExist(problem, interpretation, from);
56798 find mustExist(problem, interpretation, to);
56799 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
56800 StringElement(to);
56801 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
56802 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
56803}
56804pattern refineRelation_name_attribute_ENamedElement(
56805 problem:LogicProblem, interpretation:PartialInterpretation,
56806 relationIterpretation:PartialRelationInterpretation,
56807 from: DefinedElement, to: DefinedElement)
56808{
56809 find interpretation(problem,interpretation);
56810 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56811 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
56812 find mustExist(problem, interpretation, from);
56813 find mustExist(problem, interpretation, to);
56814 find mustInstanceOfENamedElement_class(problem,interpretation,from);
56815 StringElement(to);
56816 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
56817 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
56818}
56819pattern refineRelation_nsURI_attribute_EPackage(
56820 problem:LogicProblem, interpretation:PartialInterpretation,
56821 relationIterpretation:PartialRelationInterpretation,
56822 from: DefinedElement, to: DefinedElement)
56823{
56824 find interpretation(problem,interpretation);
56825 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56826 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
56827 find mustExist(problem, interpretation, from);
56828 find mustExist(problem, interpretation, to);
56829 find mustInstanceOfEPackage_class(problem,interpretation,from);
56830 StringElement(to);
56831 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
56832 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
56833}
56834pattern refineRelation_nsPrefix_attribute_EPackage(
56835 problem:LogicProblem, interpretation:PartialInterpretation,
56836 relationIterpretation:PartialRelationInterpretation,
56837 from: DefinedElement, to: DefinedElement)
56838{
56839 find interpretation(problem,interpretation);
56840 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56841 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
56842 find mustExist(problem, interpretation, from);
56843 find mustExist(problem, interpretation, to);
56844 find mustInstanceOfEPackage_class(problem,interpretation,from);
56845 StringElement(to);
56846 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
56847 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
56848}
56849pattern refineRelation_containment_attribute_EReference(
56850 problem:LogicProblem, interpretation:PartialInterpretation,
56851 relationIterpretation:PartialRelationInterpretation,
56852 from: DefinedElement, to: DefinedElement)
56853{
56854 find interpretation(problem,interpretation);
56855 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56856 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
56857 find mustExist(problem, interpretation, from);
56858 find mustExist(problem, interpretation, to);
56859 find mustInstanceOfEReference_class(problem,interpretation,from);
56860 BooleanElement(to);
56861 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
56862 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
56863}
56864pattern refineRelation_container_attribute_EReference(
56865 problem:LogicProblem, interpretation:PartialInterpretation,
56866 relationIterpretation:PartialRelationInterpretation,
56867 from: DefinedElement, to: DefinedElement)
56868{
56869 find interpretation(problem,interpretation);
56870 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56871 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
56872 find mustExist(problem, interpretation, from);
56873 find mustExist(problem, interpretation, to);
56874 find mustInstanceOfEReference_class(problem,interpretation,from);
56875 BooleanElement(to);
56876 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
56877 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
56878}
56879pattern refineRelation_resolveProxies_attribute_EReference(
56880 problem:LogicProblem, interpretation:PartialInterpretation,
56881 relationIterpretation:PartialRelationInterpretation,
56882 from: DefinedElement, to: DefinedElement)
56883{
56884 find interpretation(problem,interpretation);
56885 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56886 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
56887 find mustExist(problem, interpretation, from);
56888 find mustExist(problem, interpretation, to);
56889 find mustInstanceOfEReference_class(problem,interpretation,from);
56890 BooleanElement(to);
56891 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
56892 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
56893}
56894pattern refineRelation_changeable_attribute_EStructuralFeature(
56895 problem:LogicProblem, interpretation:PartialInterpretation,
56896 relationIterpretation:PartialRelationInterpretation,
56897 from: DefinedElement, to: DefinedElement)
56898{
56899 find interpretation(problem,interpretation);
56900 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56901 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
56902 find mustExist(problem, interpretation, from);
56903 find mustExist(problem, interpretation, to);
56904 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56905 BooleanElement(to);
56906 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
56907 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
56908}
56909pattern refineRelation_volatile_attribute_EStructuralFeature(
56910 problem:LogicProblem, interpretation:PartialInterpretation,
56911 relationIterpretation:PartialRelationInterpretation,
56912 from: DefinedElement, to: DefinedElement)
56913{
56914 find interpretation(problem,interpretation);
56915 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56916 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
56917 find mustExist(problem, interpretation, from);
56918 find mustExist(problem, interpretation, to);
56919 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56920 BooleanElement(to);
56921 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
56922 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
56923}
56924pattern refineRelation_transient_attribute_EStructuralFeature(
56925 problem:LogicProblem, interpretation:PartialInterpretation,
56926 relationIterpretation:PartialRelationInterpretation,
56927 from: DefinedElement, to: DefinedElement)
56928{
56929 find interpretation(problem,interpretation);
56930 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56931 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
56932 find mustExist(problem, interpretation, from);
56933 find mustExist(problem, interpretation, to);
56934 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56935 BooleanElement(to);
56936 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
56937 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
56938}
56939pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
56940 problem:LogicProblem, interpretation:PartialInterpretation,
56941 relationIterpretation:PartialRelationInterpretation,
56942 from: DefinedElement, to: DefinedElement)
56943{
56944 find interpretation(problem,interpretation);
56945 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56946 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
56947 find mustExist(problem, interpretation, from);
56948 find mustExist(problem, interpretation, to);
56949 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56950 StringElement(to);
56951 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
56952 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
56953}
56954pattern refineRelation_unsettable_attribute_EStructuralFeature(
56955 problem:LogicProblem, interpretation:PartialInterpretation,
56956 relationIterpretation:PartialRelationInterpretation,
56957 from: DefinedElement, to: DefinedElement)
56958{
56959 find interpretation(problem,interpretation);
56960 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56961 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
56962 find mustExist(problem, interpretation, from);
56963 find mustExist(problem, interpretation, to);
56964 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56965 BooleanElement(to);
56966 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
56967 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
56968}
56969pattern refineRelation_derived_attribute_EStructuralFeature(
56970 problem:LogicProblem, interpretation:PartialInterpretation,
56971 relationIterpretation:PartialRelationInterpretation,
56972 from: DefinedElement, to: DefinedElement)
56973{
56974 find interpretation(problem,interpretation);
56975 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56976 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
56977 find mustExist(problem, interpretation, from);
56978 find mustExist(problem, interpretation, to);
56979 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
56980 BooleanElement(to);
56981 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
56982 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
56983}
56984pattern refineRelation_ordered_attribute_ETypedElement(
56985 problem:LogicProblem, interpretation:PartialInterpretation,
56986 relationIterpretation:PartialRelationInterpretation,
56987 from: DefinedElement, to: DefinedElement)
56988{
56989 find interpretation(problem,interpretation);
56990 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
56991 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
56992 find mustExist(problem, interpretation, from);
56993 find mustExist(problem, interpretation, to);
56994 find mustInstanceOfETypedElement_class(problem,interpretation,from);
56995 BooleanElement(to);
56996 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
56997 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
56998}
56999pattern refineRelation_unique_attribute_ETypedElement(
57000 problem:LogicProblem, interpretation:PartialInterpretation,
57001 relationIterpretation:PartialRelationInterpretation,
57002 from: DefinedElement, to: DefinedElement)
57003{
57004 find interpretation(problem,interpretation);
57005 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57006 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
57007 find mustExist(problem, interpretation, from);
57008 find mustExist(problem, interpretation, to);
57009 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57010 BooleanElement(to);
57011 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
57012 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
57013}
57014pattern refineRelation_lowerBound_attribute_ETypedElement(
57015 problem:LogicProblem, interpretation:PartialInterpretation,
57016 relationIterpretation:PartialRelationInterpretation,
57017 from: DefinedElement, to: DefinedElement)
57018{
57019 find interpretation(problem,interpretation);
57020 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57021 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
57022 find mustExist(problem, interpretation, from);
57023 find mustExist(problem, interpretation, to);
57024 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57025 IntegerElement(to);
57026 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
57027 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
57028}
57029pattern refineRelation_upperBound_attribute_ETypedElement(
57030 problem:LogicProblem, interpretation:PartialInterpretation,
57031 relationIterpretation:PartialRelationInterpretation,
57032 from: DefinedElement, to: DefinedElement)
57033{
57034 find interpretation(problem,interpretation);
57035 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57036 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
57037 find mustExist(problem, interpretation, from);
57038 find mustExist(problem, interpretation, to);
57039 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57040 IntegerElement(to);
57041 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
57042 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
57043}
57044pattern refineRelation_many_attribute_ETypedElement(
57045 problem:LogicProblem, interpretation:PartialInterpretation,
57046 relationIterpretation:PartialRelationInterpretation,
57047 from: DefinedElement, to: DefinedElement)
57048{
57049 find interpretation(problem,interpretation);
57050 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57051 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
57052 find mustExist(problem, interpretation, from);
57053 find mustExist(problem, interpretation, to);
57054 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57055 BooleanElement(to);
57056 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
57057 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
57058}
57059pattern refineRelation_required_attribute_ETypedElement(
57060 problem:LogicProblem, interpretation:PartialInterpretation,
57061 relationIterpretation:PartialRelationInterpretation,
57062 from: DefinedElement, to: DefinedElement)
57063{
57064 find interpretation(problem,interpretation);
57065 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57066 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
57067 find mustExist(problem, interpretation, from);
57068 find mustExist(problem, interpretation, to);
57069 find mustInstanceOfETypedElement_class(problem,interpretation,from);
57070 BooleanElement(to);
57071 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
57072 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
57073}
57074pattern refineRelation_key_attribute_EStringToStringMapEntry(
57075 problem:LogicProblem, interpretation:PartialInterpretation,
57076 relationIterpretation:PartialRelationInterpretation,
57077 from: DefinedElement, to: DefinedElement)
57078{
57079 find interpretation(problem,interpretation);
57080 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57081 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
57082 find mustExist(problem, interpretation, from);
57083 find mustExist(problem, interpretation, to);
57084 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
57085 StringElement(to);
57086 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57087 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57088}
57089pattern refineRelation_value_attribute_EStringToStringMapEntry(
57090 problem:LogicProblem, interpretation:PartialInterpretation,
57091 relationIterpretation:PartialRelationInterpretation,
57092 from: DefinedElement, to: DefinedElement)
57093{
57094 find interpretation(problem,interpretation);
57095 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57096 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
57097 find mustExist(problem, interpretation, from);
57098 find mustExist(problem, interpretation, to);
57099 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
57100 StringElement(to);
57101 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57102 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
57103}
57104import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
57105import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
57106import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
57107
57108//////////
57109// 0. Util
57110//////////
57111private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
57112 PartialInterpretation.problem(interpretation,problem);
57113}
57114
57115/////////////////////////
57116// 0.1 Existence
57117/////////////////////////
57118private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57119 find interpretation(problem,interpretation);
57120 LogicProblem.elements(problem,element);
57121} or {
57122 find interpretation(problem,interpretation);
57123 PartialInterpretation.newElements(interpretation,element);
57124}
57125
57126private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57127 find mustExist(problem,interpretation,element);
57128} or {
57129 find interpretation(problem,interpretation);
57130 neg find elementCloseWorld(element);
57131 PartialInterpretation.openWorldElements(interpretation,element);
57132}
57133
57134private pattern elementCloseWorld(element:DefinedElement) {
57135 PartialInterpretation.openWorldElements(i,element);
57136 PartialInterpretation.maxNewElements(i,0);
57137} or {
57138 Scope.targetTypeInterpretation(scope,interpretation);
57139 PartialTypeInterpratation.elements(interpretation,element);
57140 Scope.maxNewElements(scope,0);
57141}
57142
57143////////////////////////
57144// 0.2 Equivalence
57145////////////////////////
57146pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
57147 find mayExist(problem,interpretation,a);
57148 find mayExist(problem,interpretation,b);
57149 a == b;
57150}
57151
57152////////////////////////
57153// 0.3 Required Patterns by TypeIndexer
57154////////////////////////
57155private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
57156 find interpretation(problem,interpretation);
57157 LogicProblem.types(problem,type);
57158 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
57159 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57160}
57161
57162private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
57163 find interpretation(problem,interpretation);
57164 LogicProblem.types(problem,type);
57165 TypeDefinition.elements(type,element);
57166} or {
57167 find interpretation(problem,interpretation);
57168 find typeInterpretation(problem,interpretation,type,typeInterpretation);
57169 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
57170}
57171
57172private pattern isPrimitive(element: PrimitiveElement) {
57173 PrimitiveElement(element);
57174}
57175
57176//////////
57177// 1. Problem-Specific Base Indexers
57178//////////
57179// 1.1 Type Indexers
57180//////////
57181// 1.1.1 primitive Type Indexers
57182//////////
57183
57184//////////
57185// 1.1.2 domain-specific Type Indexers
57186//////////
57187/**
57188 * An element must be an instance of type "FunctionalElement class".
57189 */
57190private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57191 Type.name(type,"FunctionalElement class");
57192 find directInstanceOf(problem,interpretation,element,type);
57193}
57194private pattern scopeDisallowsNewFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57195 find interpretation(problem,interpretation);
57196 PartialInterpretation.scopes(interpretation,scope);
57197 Scope.targetTypeInterpretation(scope,typeInterpretation);
57198 Scope.maxNewElements(scope,0);
57199 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57200 Type.name(type,"FunctionalElement class");
57201}
57202
57203/**
57204 * An element may be an instance of type "FunctionalElement class".
57205 */
57206private pattern mayInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57207{
57208 find interpretation(problem,interpretation);
57209 PartialInterpretation.newElements(interpretation,element);
57210 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57211 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57212 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57213 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57214 neg find mustInstanceOfFunction_class(problem,interpretation,element);
57215 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57216 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
57217 neg find isPrimitive(element);
57218} or {
57219 find interpretation(problem,interpretation);
57220 PartialInterpretation.openWorldElements(interpretation,element);
57221 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57222 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57223 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57224 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57225 neg find mustInstanceOfFunction_class(problem,interpretation,element);
57226 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57227 neg find scopeDisallowsNewFunctionalElement_class(problem, interpretation);
57228 neg find isPrimitive(element);
57229} or
57230{ find mustInstanceOfFunctionalElement_class(problem,interpretation,element); }
57231/**
57232 * An element must be an instance of type "FunctionalArchitectureModel class".
57233 */
57234private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57235 Type.name(type,"FunctionalArchitectureModel class");
57236 find directInstanceOf(problem,interpretation,element,type);
57237}
57238private pattern scopeDisallowsNewFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57239 find interpretation(problem,interpretation);
57240 PartialInterpretation.scopes(interpretation,scope);
57241 Scope.targetTypeInterpretation(scope,typeInterpretation);
57242 Scope.maxNewElements(scope,0);
57243 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57244 Type.name(type,"FunctionalArchitectureModel class");
57245}
57246
57247/**
57248 * An element may be an instance of type "FunctionalArchitectureModel class".
57249 */
57250private pattern mayInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57251{
57252 find interpretation(problem,interpretation);
57253 PartialInterpretation.newElements(interpretation,element);
57254 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57255 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57256 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57257 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
57258 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57259 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57260 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
57261 neg find isPrimitive(element);
57262} or {
57263 find interpretation(problem,interpretation);
57264 PartialInterpretation.openWorldElements(interpretation,element);
57265 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57266 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57267 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57268 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
57269 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57270 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57271 neg find scopeDisallowsNewFunctionalArchitectureModel_class(problem, interpretation);
57272 neg find isPrimitive(element);
57273} or
57274{ find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element); }
57275/**
57276 * An element must be an instance of type "Function class".
57277 */
57278private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57279 Type.name(type,"Function class");
57280 find directInstanceOf(problem,interpretation,element,type);
57281}
57282private pattern scopeDisallowsNewFunction_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57283 find interpretation(problem,interpretation);
57284 PartialInterpretation.scopes(interpretation,scope);
57285 Scope.targetTypeInterpretation(scope,typeInterpretation);
57286 Scope.maxNewElements(scope,0);
57287 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57288 Type.name(type,"Function class");
57289}
57290
57291/**
57292 * An element may be an instance of type "Function class".
57293 */
57294private pattern mayInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57295{
57296 find interpretation(problem,interpretation);
57297 PartialInterpretation.newElements(interpretation,element);
57298 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57299 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57300 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57301 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57302 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57303 neg find scopeDisallowsNewFunction_class(problem, interpretation);
57304 neg find isPrimitive(element);
57305} or {
57306 find interpretation(problem,interpretation);
57307 PartialInterpretation.openWorldElements(interpretation,element);
57308 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57309 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57310 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57311 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57312 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57313 neg find scopeDisallowsNewFunction_class(problem, interpretation);
57314 neg find isPrimitive(element);
57315} or
57316{ find mustInstanceOfFunction_class(problem,interpretation,element); }
57317/**
57318 * An element must be an instance of type "FAMTerminator class".
57319 */
57320private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57321 Type.name(type,"FAMTerminator class");
57322 find directInstanceOf(problem,interpretation,element,type);
57323}
57324private pattern scopeDisallowsNewFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57325 find interpretation(problem,interpretation);
57326 PartialInterpretation.scopes(interpretation,scope);
57327 Scope.targetTypeInterpretation(scope,typeInterpretation);
57328 Scope.maxNewElements(scope,0);
57329 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57330 Type.name(type,"FAMTerminator class");
57331}
57332
57333/**
57334 * An element may be an instance of type "FAMTerminator class".
57335 */
57336private pattern mayInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57337{
57338 find interpretation(problem,interpretation);
57339 PartialInterpretation.newElements(interpretation,element);
57340 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57341 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57342 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57343 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57344 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57345 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
57346 neg find isPrimitive(element);
57347} or {
57348 find interpretation(problem,interpretation);
57349 PartialInterpretation.openWorldElements(interpretation,element);
57350 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57351 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57352 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57353 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57354 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57355 neg find scopeDisallowsNewFAMTerminator_class(problem, interpretation);
57356 neg find isPrimitive(element);
57357} or
57358{ find mustInstanceOfFAMTerminator_class(problem,interpretation,element); }
57359/**
57360 * An element must be an instance of type "InformationLink class".
57361 */
57362private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57363 Type.name(type,"InformationLink class");
57364 find directInstanceOf(problem,interpretation,element,type);
57365}
57366private pattern scopeDisallowsNewInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57367 find interpretation(problem,interpretation);
57368 PartialInterpretation.scopes(interpretation,scope);
57369 Scope.targetTypeInterpretation(scope,typeInterpretation);
57370 Scope.maxNewElements(scope,0);
57371 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57372 Type.name(type,"InformationLink class");
57373}
57374
57375/**
57376 * An element may be an instance of type "InformationLink class".
57377 */
57378private pattern mayInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57379{
57380 find interpretation(problem,interpretation);
57381 PartialInterpretation.newElements(interpretation,element);
57382 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57383 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57384 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57385 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57386 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57387 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
57388 neg find isPrimitive(element);
57389} or {
57390 find interpretation(problem,interpretation);
57391 PartialInterpretation.openWorldElements(interpretation,element);
57392 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57393 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57394 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57395 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57396 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57397 neg find scopeDisallowsNewInformationLink_class(problem, interpretation);
57398 neg find isPrimitive(element);
57399} or
57400{ find mustInstanceOfInformationLink_class(problem,interpretation,element); }
57401/**
57402 * An element must be an instance of type "FunctionalInterface class".
57403 */
57404private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57405 Type.name(type,"FunctionalInterface class");
57406 find directInstanceOf(problem,interpretation,element,type);
57407}
57408private pattern scopeDisallowsNewFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57409 find interpretation(problem,interpretation);
57410 PartialInterpretation.scopes(interpretation,scope);
57411 Scope.targetTypeInterpretation(scope,typeInterpretation);
57412 Scope.maxNewElements(scope,0);
57413 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57414 Type.name(type,"FunctionalInterface class");
57415}
57416
57417/**
57418 * An element may be an instance of type "FunctionalInterface class".
57419 */
57420private pattern mayInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57421{
57422 find interpretation(problem,interpretation);
57423 PartialInterpretation.newElements(interpretation,element);
57424 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57425 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57426 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57427 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57428 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57429 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
57430 neg find isPrimitive(element);
57431} or {
57432 find interpretation(problem,interpretation);
57433 PartialInterpretation.openWorldElements(interpretation,element);
57434 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57435 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57436 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57437 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57438 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57439 neg find scopeDisallowsNewFunctionalInterface_class(problem, interpretation);
57440 neg find isPrimitive(element);
57441} or
57442{ find mustInstanceOfFunctionalInterface_class(problem,interpretation,element); }
57443/**
57444 * An element must be an instance of type "FunctionalInput class".
57445 */
57446private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57447 Type.name(type,"FunctionalInput class");
57448 find directInstanceOf(problem,interpretation,element,type);
57449}
57450private pattern scopeDisallowsNewFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57451 find interpretation(problem,interpretation);
57452 PartialInterpretation.scopes(interpretation,scope);
57453 Scope.targetTypeInterpretation(scope,typeInterpretation);
57454 Scope.maxNewElements(scope,0);
57455 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57456 Type.name(type,"FunctionalInput class");
57457}
57458
57459/**
57460 * An element may be an instance of type "FunctionalInput class".
57461 */
57462private pattern mayInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57463{
57464 find interpretation(problem,interpretation);
57465 PartialInterpretation.newElements(interpretation,element);
57466 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57467 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57468 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57469 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57470 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57471 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57472 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
57473 neg find isPrimitive(element);
57474} or {
57475 find interpretation(problem,interpretation);
57476 PartialInterpretation.openWorldElements(interpretation,element);
57477 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57478 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57479 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57480 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57481 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57482 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57483 neg find scopeDisallowsNewFunctionalInput_class(problem, interpretation);
57484 neg find isPrimitive(element);
57485} or
57486{ find mustInstanceOfFunctionalInput_class(problem,interpretation,element); }
57487/**
57488 * An element must be an instance of type "FunctionalOutput class".
57489 */
57490private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57491 Type.name(type,"FunctionalOutput class");
57492 find directInstanceOf(problem,interpretation,element,type);
57493}
57494private pattern scopeDisallowsNewFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57495 find interpretation(problem,interpretation);
57496 PartialInterpretation.scopes(interpretation,scope);
57497 Scope.targetTypeInterpretation(scope,typeInterpretation);
57498 Scope.maxNewElements(scope,0);
57499 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57500 Type.name(type,"FunctionalOutput class");
57501}
57502
57503/**
57504 * An element may be an instance of type "FunctionalOutput class".
57505 */
57506private pattern mayInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57507{
57508 find interpretation(problem,interpretation);
57509 PartialInterpretation.newElements(interpretation,element);
57510 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57511 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57512 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57513 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57514 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57515 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57516 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
57517 neg find isPrimitive(element);
57518} or {
57519 find interpretation(problem,interpretation);
57520 PartialInterpretation.openWorldElements(interpretation,element);
57521 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57522 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57523 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57524 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57525 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57526 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57527 neg find scopeDisallowsNewFunctionalOutput_class(problem, interpretation);
57528 neg find isPrimitive(element);
57529} or
57530{ find mustInstanceOfFunctionalOutput_class(problem,interpretation,element); }
57531/**
57532 * An element must be an instance of type "FunctionalData class".
57533 */
57534private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57535 Type.name(type,"FunctionalData class");
57536 find directInstanceOf(problem,interpretation,element,type);
57537}
57538private pattern scopeDisallowsNewFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation) {
57539 find interpretation(problem,interpretation);
57540 PartialInterpretation.scopes(interpretation,scope);
57541 Scope.targetTypeInterpretation(scope,typeInterpretation);
57542 Scope.maxNewElements(scope,0);
57543 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57544 Type.name(type,"FunctionalData class");
57545}
57546
57547/**
57548 * An element may be an instance of type "FunctionalData class".
57549 */
57550private pattern mayInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57551{
57552 find interpretation(problem,interpretation);
57553 PartialInterpretation.newElements(interpretation,element);
57554 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57555 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57556 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57557 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57558 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57559 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57560 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57561 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
57562 neg find isPrimitive(element);
57563} or {
57564 find interpretation(problem,interpretation);
57565 PartialInterpretation.openWorldElements(interpretation,element);
57566 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
57567 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57568 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57569 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
57570 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57571 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57572 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
57573 neg find scopeDisallowsNewFunctionalData_class(problem, interpretation);
57574 neg find isPrimitive(element);
57575} or
57576{ find mustInstanceOfFunctionalData_class(problem,interpretation,element); }
57577/**
57578 * An element must be an instance of type "FunctionType enum".
57579 */
57580private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57581 Type.name(type,"FunctionType enum");
57582 find directInstanceOf(problem,interpretation,element,type);
57583}
57584private pattern scopeDisallowsNewFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation) {
57585 find interpretation(problem,interpretation);
57586 PartialInterpretation.scopes(interpretation,scope);
57587 Scope.targetTypeInterpretation(scope,typeInterpretation);
57588 Scope.maxNewElements(scope,0);
57589 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57590 Type.name(type,"FunctionType enum");
57591}
57592
57593/**
57594 * An element may be an instance of type "FunctionType enum".
57595 */
57596private pattern mayInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57597{ find mustInstanceOfFunctionType_enum(problem,interpretation,element); }
57598/**
57599 * An element must be an instance of type "FunctionalArchitectureModel class DefinedPart".
57600 */
57601private pattern mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57602 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
57603 find directInstanceOf(problem,interpretation,element,type);
57604}
57605private pattern scopeDisallowsNewFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
57606 find interpretation(problem,interpretation);
57607 PartialInterpretation.scopes(interpretation,scope);
57608 Scope.targetTypeInterpretation(scope,typeInterpretation);
57609 Scope.maxNewElements(scope,0);
57610 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57611 Type.name(type,"FunctionalArchitectureModel class DefinedPart");
57612}
57613
57614/**
57615 * An element may be an instance of type "FunctionalArchitectureModel class DefinedPart".
57616 */
57617private pattern mayInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57618{ find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,element); }
57619/**
57620 * An element must be an instance of type "FunctionalArchitectureModel class UndefinedPart".
57621 */
57622private pattern mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
57623 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
57624 find directInstanceOf(problem,interpretation,element,type);
57625}
57626private pattern scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
57627 find interpretation(problem,interpretation);
57628 PartialInterpretation.scopes(interpretation,scope);
57629 Scope.targetTypeInterpretation(scope,typeInterpretation);
57630 Scope.maxNewElements(scope,0);
57631 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
57632 Type.name(type,"FunctionalArchitectureModel class UndefinedPart");
57633}
57634
57635/**
57636 * An element may be an instance of type "FunctionalArchitectureModel class UndefinedPart".
57637 */
57638private pattern mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
57639{
57640 find interpretation(problem,interpretation);
57641 PartialInterpretation.newElements(interpretation,element);
57642 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57643 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57644 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57645 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57646 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57647 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
57648 neg find isPrimitive(element);
57649} or {
57650 find interpretation(problem,interpretation);
57651 PartialInterpretation.openWorldElements(interpretation,element);
57652 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
57653 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
57654 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
57655 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
57656 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
57657 neg find scopeDisallowsNewFunctionalArchitectureModel_class_UndefinedPart(problem, interpretation);
57658 neg find isPrimitive(element);
57659} or
57660{ find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element); }
57661
57662//////////
57663// 1.2 Relation Declaration Indexers
57664//////////
57665/**
57666 * Matcher for detecting tuples t where []interface reference FunctionalElement(source,target)
57667 */
57668private pattern mustInRelationinterface_reference_FunctionalElement(
57669 problem:LogicProblem, interpretation:PartialInterpretation,
57670 source: DefinedElement, target:DefinedElement)
57671{
57672 find interpretation(problem,interpretation);
57673 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57674 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalElement");
57675 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57676 BinaryElementRelationLink.param1(link,source);
57677 BinaryElementRelationLink.param2(link,target);
57678}
57679/**
57680 * Matcher for detecting tuples t where <>interface reference FunctionalElement(source,target)
57681 */
57682private pattern mayInRelationinterface_reference_FunctionalElement(
57683 problem:LogicProblem, interpretation:PartialInterpretation,
57684 source: DefinedElement, target:DefinedElement)
57685{
57686 find interpretation(problem,interpretation);
57687 // The two endpoint of the link have to exist
57688 find mayExist(problem, interpretation, source);
57689 find mayExist(problem, interpretation, target);
57690 // Type consistency
57691 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
57692 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
57693 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57694 // the upper bound of the multiplicity should be considered.
57695 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,_);
57696 check(numberOfExistingReferences < 1);
57697 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
57698 // the upper bound of the opposite reference multiplicity should be considered.
57699 numberOfExistingOppositeReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,target,_);
57700 check(numberOfExistingOppositeReferences < 1);
57701 // The reference is containment, then a new reference cannot be create if:
57702 // 1. Multiple parents
57703 neg find mustContains4(problem,interpretation,_,target);
57704 // 2. Circle in the containment hierarchy
57705 neg find mustTransitiveContains(source,target);
57706} or {
57707 find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target);
57708}
57709/**
57710 * Matcher for detecting tuples t where []model reference FunctionalElement(source,target)
57711 */
57712private pattern mustInRelationmodel_reference_FunctionalElement(
57713 problem:LogicProblem, interpretation:PartialInterpretation,
57714 source: DefinedElement, target:DefinedElement)
57715{
57716 find interpretation(problem,interpretation);
57717 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57718 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
57719 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57720 BinaryElementRelationLink.param1(link,source);
57721 BinaryElementRelationLink.param2(link,target);
57722}
57723/**
57724 * Matcher for detecting tuples t where <>model reference FunctionalElement(source,target)
57725 */
57726private pattern mayInRelationmodel_reference_FunctionalElement(
57727 problem:LogicProblem, interpretation:PartialInterpretation,
57728 source: DefinedElement, target:DefinedElement)
57729{
57730 find interpretation(problem,interpretation);
57731 // The two endpoint of the link have to exist
57732 find mayExist(problem, interpretation, source);
57733 find mayExist(problem, interpretation, target);
57734 // Type consistency
57735 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
57736 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,target);
57737 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57738 // the upper bound of the multiplicity should be considered.
57739 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,_);
57740 check(numberOfExistingReferences < 1);
57741} or {
57742 find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,source,target);
57743}
57744/**
57745 * Matcher for detecting tuples t where []parent reference FunctionalElement(source,target)
57746 */
57747private pattern mustInRelationparent_reference_FunctionalElement(
57748 problem:LogicProblem, interpretation:PartialInterpretation,
57749 source: DefinedElement, target:DefinedElement)
57750{
57751 find interpretation(problem,interpretation);
57752 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57753 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parent reference FunctionalElement");
57754 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57755 BinaryElementRelationLink.param1(link,source);
57756 BinaryElementRelationLink.param2(link,target);
57757}
57758/**
57759 * Matcher for detecting tuples t where <>parent reference FunctionalElement(source,target)
57760 */
57761private pattern mayInRelationparent_reference_FunctionalElement(
57762 problem:LogicProblem, interpretation:PartialInterpretation,
57763 source: DefinedElement, target:DefinedElement)
57764{
57765 find interpretation(problem,interpretation);
57766 // The two endpoint of the link have to exist
57767 find mayExist(problem, interpretation, source);
57768 find mayExist(problem, interpretation, target);
57769 // Type consistency
57770 find mayInstanceOfFunctionalElement_class(problem,interpretation,source);
57771 find mayInstanceOfFunction_class(problem,interpretation,target);
57772 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57773 // the upper bound of the multiplicity should be considered.
57774 numberOfExistingReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,_);
57775 check(numberOfExistingReferences < 1);
57776 // The eOpposite of the reference is containment, then a referene cannot be created if
57777 // 1. Multiple parents
57778 neg find mustContains4(problem,interpretation,source,_);
57779 // 2. Circle in the containment hierarchy
57780 neg find mustTransitiveContains(source,target);
57781} or {
57782 find mustInRelationparent_reference_FunctionalElement(problem,interpretation,source,target);
57783}
57784/**
57785 * Matcher for detecting tuples t where []rootElements reference FunctionalArchitectureModel(source,target)
57786 */
57787private pattern mustInRelationrootElements_reference_FunctionalArchitectureModel(
57788 problem:LogicProblem, interpretation:PartialInterpretation,
57789 source: DefinedElement, target:DefinedElement)
57790{
57791 find interpretation(problem,interpretation);
57792 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57793 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"rootElements reference FunctionalArchitectureModel");
57794 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57795 BinaryElementRelationLink.param1(link,source);
57796 BinaryElementRelationLink.param2(link,target);
57797}
57798/**
57799 * Matcher for detecting tuples t where <>rootElements reference FunctionalArchitectureModel(source,target)
57800 */
57801private pattern mayInRelationrootElements_reference_FunctionalArchitectureModel(
57802 problem:LogicProblem, interpretation:PartialInterpretation,
57803 source: DefinedElement, target:DefinedElement)
57804{
57805 find interpretation(problem,interpretation);
57806 // The two endpoint of the link have to exist
57807 find mayExist(problem, interpretation, source);
57808 find mayExist(problem, interpretation, target);
57809 // Type consistency
57810 find mayInstanceOfFunctionalArchitectureModel_class(problem,interpretation,source);
57811 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
57812 // The reference is containment, then a new reference cannot be create if:
57813 // 1. Multiple parents
57814 neg find mustContains4(problem,interpretation,_,target);
57815 // 2. Circle in the containment hierarchy
57816 neg find mustTransitiveContains(source,target);
57817} or {
57818 find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target);
57819}
57820/**
57821 * Matcher for detecting tuples t where []subElements reference Function(source,target)
57822 */
57823private pattern mustInRelationsubElements_reference_Function(
57824 problem:LogicProblem, interpretation:PartialInterpretation,
57825 source: DefinedElement, target:DefinedElement)
57826{
57827 find interpretation(problem,interpretation);
57828 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57829 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"subElements reference Function");
57830 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57831 BinaryElementRelationLink.param1(link,source);
57832 BinaryElementRelationLink.param2(link,target);
57833}
57834/**
57835 * Matcher for detecting tuples t where <>subElements reference Function(source,target)
57836 */
57837private pattern mayInRelationsubElements_reference_Function(
57838 problem:LogicProblem, interpretation:PartialInterpretation,
57839 source: DefinedElement, target:DefinedElement)
57840{
57841 find interpretation(problem,interpretation);
57842 // The two endpoint of the link have to exist
57843 find mayExist(problem, interpretation, source);
57844 find mayExist(problem, interpretation, target);
57845 // Type consistency
57846 find mayInstanceOfFunction_class(problem,interpretation,source);
57847 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
57848 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
57849 // the upper bound of the opposite reference multiplicity should be considered.
57850 numberOfExistingOppositeReferences == count find mustInRelationparent_reference_FunctionalElement(problem,interpretation,target,_);
57851 check(numberOfExistingOppositeReferences < 1);
57852 // The reference is containment, then a new reference cannot be create if:
57853 // 1. Multiple parents
57854 neg find mustContains4(problem,interpretation,_,target);
57855 // 2. Circle in the containment hierarchy
57856 neg find mustTransitiveContains(source,target);
57857} or {
57858 find mustInRelationsubElements_reference_Function(problem,interpretation,source,target);
57859}
57860/**
57861 * Matcher for detecting tuples t where []data reference FAMTerminator(source,target)
57862 */
57863private pattern mustInRelationdata_reference_FAMTerminator(
57864 problem:LogicProblem, interpretation:PartialInterpretation,
57865 source: DefinedElement, target:DefinedElement)
57866{
57867 find interpretation(problem,interpretation);
57868 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57869 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FAMTerminator");
57870 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57871 BinaryElementRelationLink.param1(link,source);
57872 BinaryElementRelationLink.param2(link,target);
57873}
57874/**
57875 * Matcher for detecting tuples t where <>data reference FAMTerminator(source,target)
57876 */
57877private pattern mayInRelationdata_reference_FAMTerminator(
57878 problem:LogicProblem, interpretation:PartialInterpretation,
57879 source: DefinedElement, target:DefinedElement)
57880{
57881 find interpretation(problem,interpretation);
57882 // The two endpoint of the link have to exist
57883 find mayExist(problem, interpretation, source);
57884 find mayExist(problem, interpretation, target);
57885 // Type consistency
57886 find mayInstanceOfFAMTerminator_class(problem,interpretation,source);
57887 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
57888 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57889 // the upper bound of the multiplicity should be considered.
57890 numberOfExistingReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,_);
57891 check(numberOfExistingReferences < 1);
57892 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
57893 // the upper bound of the opposite reference multiplicity should be considered.
57894 numberOfExistingOppositeReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,target,_);
57895 check(numberOfExistingOppositeReferences < 1);
57896 // The eOpposite of the reference is containment, then a referene cannot be created if
57897 // 1. Multiple parents
57898 neg find mustContains4(problem,interpretation,source,_);
57899 // 2. Circle in the containment hierarchy
57900 neg find mustTransitiveContains(source,target);
57901} or {
57902 find mustInRelationdata_reference_FAMTerminator(problem,interpretation,source,target);
57903}
57904/**
57905 * Matcher for detecting tuples t where []from reference InformationLink(source,target)
57906 */
57907private pattern mustInRelationfrom_reference_InformationLink(
57908 problem:LogicProblem, interpretation:PartialInterpretation,
57909 source: DefinedElement, target:DefinedElement)
57910{
57911 find interpretation(problem,interpretation);
57912 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57913 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"from reference InformationLink");
57914 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57915 BinaryElementRelationLink.param1(link,source);
57916 BinaryElementRelationLink.param2(link,target);
57917}
57918/**
57919 * Matcher for detecting tuples t where <>from reference InformationLink(source,target)
57920 */
57921private pattern mayInRelationfrom_reference_InformationLink(
57922 problem:LogicProblem, interpretation:PartialInterpretation,
57923 source: DefinedElement, target:DefinedElement)
57924{
57925 find interpretation(problem,interpretation);
57926 // The two endpoint of the link have to exist
57927 find mayExist(problem, interpretation, source);
57928 find mayExist(problem, interpretation, target);
57929 // Type consistency
57930 find mayInstanceOfInformationLink_class(problem,interpretation,source);
57931 find mayInstanceOfFunctionalOutput_class(problem,interpretation,target);
57932 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57933 // the upper bound of the multiplicity should be considered.
57934 numberOfExistingReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,_);
57935 check(numberOfExistingReferences < 1);
57936 // The eOpposite of the reference is containment, then a referene cannot be created if
57937 // 1. Multiple parents
57938 neg find mustContains4(problem,interpretation,source,_);
57939 // 2. Circle in the containment hierarchy
57940 neg find mustTransitiveContains(source,target);
57941} or {
57942 find mustInRelationfrom_reference_InformationLink(problem,interpretation,source,target);
57943}
57944/**
57945 * Matcher for detecting tuples t where []to reference InformationLink(source,target)
57946 */
57947private pattern mustInRelationto_reference_InformationLink(
57948 problem:LogicProblem, interpretation:PartialInterpretation,
57949 source: DefinedElement, target:DefinedElement)
57950{
57951 find interpretation(problem,interpretation);
57952 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57953 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
57954 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57955 BinaryElementRelationLink.param1(link,source);
57956 BinaryElementRelationLink.param2(link,target);
57957}
57958/**
57959 * Matcher for detecting tuples t where <>to reference InformationLink(source,target)
57960 */
57961private pattern mayInRelationto_reference_InformationLink(
57962 problem:LogicProblem, interpretation:PartialInterpretation,
57963 source: DefinedElement, target:DefinedElement)
57964{
57965 find interpretation(problem,interpretation);
57966 // The two endpoint of the link have to exist
57967 find mayExist(problem, interpretation, source);
57968 find mayExist(problem, interpretation, target);
57969 // Type consistency
57970 find mayInstanceOfInformationLink_class(problem,interpretation,source);
57971 find mayInstanceOfFunctionalInput_class(problem,interpretation,target);
57972 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
57973 // the upper bound of the multiplicity should be considered.
57974 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,source,_);
57975 check(numberOfExistingReferences < 1);
57976} or {
57977 find mustInRelationto_reference_InformationLink(problem,interpretation,source,target);
57978}
57979/**
57980 * Matcher for detecting tuples t where []data reference FunctionalInterface(source,target)
57981 */
57982private pattern mustInRelationdata_reference_FunctionalInterface(
57983 problem:LogicProblem, interpretation:PartialInterpretation,
57984 source: DefinedElement, target:DefinedElement)
57985{
57986 find interpretation(problem,interpretation);
57987 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
57988 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"data reference FunctionalInterface");
57989 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
57990 BinaryElementRelationLink.param1(link,source);
57991 BinaryElementRelationLink.param2(link,target);
57992}
57993/**
57994 * Matcher for detecting tuples t where <>data reference FunctionalInterface(source,target)
57995 */
57996private pattern mayInRelationdata_reference_FunctionalInterface(
57997 problem:LogicProblem, interpretation:PartialInterpretation,
57998 source: DefinedElement, target:DefinedElement)
57999{
58000 find interpretation(problem,interpretation);
58001 // The two endpoint of the link have to exist
58002 find mayExist(problem, interpretation, source);
58003 find mayExist(problem, interpretation, target);
58004 // Type consistency
58005 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
58006 find mayInstanceOfFunctionalData_class(problem,interpretation,target);
58007 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58008 // the upper bound of the opposite reference multiplicity should be considered.
58009 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,target,_);
58010 check(numberOfExistingOppositeReferences < 1);
58011 // The reference is containment, then a new reference cannot be create if:
58012 // 1. Multiple parents
58013 neg find mustContains4(problem,interpretation,_,target);
58014 // 2. Circle in the containment hierarchy
58015 neg find mustTransitiveContains(source,target);
58016} or {
58017 find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target);
58018}
58019/**
58020 * Matcher for detecting tuples t where []element reference FunctionalInterface(source,target)
58021 */
58022private pattern mustInRelationelement_reference_FunctionalInterface(
58023 problem:LogicProblem, interpretation:PartialInterpretation,
58024 source: DefinedElement, target:DefinedElement)
58025{
58026 find interpretation(problem,interpretation);
58027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"element reference FunctionalInterface");
58029 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58030 BinaryElementRelationLink.param1(link,source);
58031 BinaryElementRelationLink.param2(link,target);
58032}
58033/**
58034 * Matcher for detecting tuples t where <>element reference FunctionalInterface(source,target)
58035 */
58036private pattern mayInRelationelement_reference_FunctionalInterface(
58037 problem:LogicProblem, interpretation:PartialInterpretation,
58038 source: DefinedElement, target:DefinedElement)
58039{
58040 find interpretation(problem,interpretation);
58041 // The two endpoint of the link have to exist
58042 find mayExist(problem, interpretation, source);
58043 find mayExist(problem, interpretation, target);
58044 // Type consistency
58045 find mayInstanceOfFunctionalInterface_class(problem,interpretation,source);
58046 find mayInstanceOfFunctionalElement_class(problem,interpretation,target);
58047 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58048 // the upper bound of the multiplicity should be considered.
58049 numberOfExistingReferences == count find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,_);
58050 check(numberOfExistingReferences < 1);
58051 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58052 // the upper bound of the opposite reference multiplicity should be considered.
58053 numberOfExistingOppositeReferences == count find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,target,_);
58054 check(numberOfExistingOppositeReferences < 1);
58055 // The eOpposite of the reference is containment, then a referene cannot be created if
58056 // 1. Multiple parents
58057 neg find mustContains4(problem,interpretation,source,_);
58058 // 2. Circle in the containment hierarchy
58059 neg find mustTransitiveContains(source,target);
58060} or {
58061 find mustInRelationelement_reference_FunctionalInterface(problem,interpretation,source,target);
58062}
58063/**
58064 * Matcher for detecting tuples t where []IncomingLinks reference FunctionalInput(source,target)
58065 */
58066private pattern mustInRelationIncomingLinks_reference_FunctionalInput(
58067 problem:LogicProblem, interpretation:PartialInterpretation,
58068 source: DefinedElement, target:DefinedElement)
58069{
58070 find interpretation(problem,interpretation);
58071 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58072 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
58073 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58074 BinaryElementRelationLink.param1(link,source);
58075 BinaryElementRelationLink.param2(link,target);
58076}
58077/**
58078 * Matcher for detecting tuples t where <>IncomingLinks reference FunctionalInput(source,target)
58079 */
58080private pattern mayInRelationIncomingLinks_reference_FunctionalInput(
58081 problem:LogicProblem, interpretation:PartialInterpretation,
58082 source: DefinedElement, target:DefinedElement)
58083{
58084 find interpretation(problem,interpretation);
58085 // The two endpoint of the link have to exist
58086 find mayExist(problem, interpretation, source);
58087 find mayExist(problem, interpretation, target);
58088 // Type consistency
58089 find mayInstanceOfFunctionalInput_class(problem,interpretation,source);
58090 find mayInstanceOfInformationLink_class(problem,interpretation,target);
58091 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58092 // the upper bound of the opposite reference multiplicity should be considered.
58093 numberOfExistingOppositeReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,target,_);
58094 check(numberOfExistingOppositeReferences < 1);
58095} or {
58096 find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,source,target);
58097}
58098/**
58099 * Matcher for detecting tuples t where []outgoingLinks reference FunctionalOutput(source,target)
58100 */
58101private pattern mustInRelationoutgoingLinks_reference_FunctionalOutput(
58102 problem:LogicProblem, interpretation:PartialInterpretation,
58103 source: DefinedElement, target:DefinedElement)
58104{
58105 find interpretation(problem,interpretation);
58106 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58107 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"outgoingLinks reference FunctionalOutput");
58108 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58109 BinaryElementRelationLink.param1(link,source);
58110 BinaryElementRelationLink.param2(link,target);
58111}
58112/**
58113 * Matcher for detecting tuples t where <>outgoingLinks reference FunctionalOutput(source,target)
58114 */
58115private pattern mayInRelationoutgoingLinks_reference_FunctionalOutput(
58116 problem:LogicProblem, interpretation:PartialInterpretation,
58117 source: DefinedElement, target:DefinedElement)
58118{
58119 find interpretation(problem,interpretation);
58120 // The two endpoint of the link have to exist
58121 find mayExist(problem, interpretation, source);
58122 find mayExist(problem, interpretation, target);
58123 // Type consistency
58124 find mayInstanceOfFunctionalOutput_class(problem,interpretation,source);
58125 find mayInstanceOfInformationLink_class(problem,interpretation,target);
58126 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58127 // the upper bound of the opposite reference multiplicity should be considered.
58128 numberOfExistingOppositeReferences == count find mustInRelationfrom_reference_InformationLink(problem,interpretation,target,_);
58129 check(numberOfExistingOppositeReferences < 1);
58130 // The reference is containment, then a new reference cannot be create if:
58131 // 1. Multiple parents
58132 neg find mustContains4(problem,interpretation,_,target);
58133 // 2. Circle in the containment hierarchy
58134 neg find mustTransitiveContains(source,target);
58135} or {
58136 find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target);
58137}
58138/**
58139 * Matcher for detecting tuples t where []terminator reference FunctionalData(source,target)
58140 */
58141private pattern mustInRelationterminator_reference_FunctionalData(
58142 problem:LogicProblem, interpretation:PartialInterpretation,
58143 source: DefinedElement, target:DefinedElement)
58144{
58145 find interpretation(problem,interpretation);
58146 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58147 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"terminator reference FunctionalData");
58148 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58149 BinaryElementRelationLink.param1(link,source);
58150 BinaryElementRelationLink.param2(link,target);
58151}
58152/**
58153 * Matcher for detecting tuples t where <>terminator reference FunctionalData(source,target)
58154 */
58155private pattern mayInRelationterminator_reference_FunctionalData(
58156 problem:LogicProblem, interpretation:PartialInterpretation,
58157 source: DefinedElement, target:DefinedElement)
58158{
58159 find interpretation(problem,interpretation);
58160 // The two endpoint of the link have to exist
58161 find mayExist(problem, interpretation, source);
58162 find mayExist(problem, interpretation, target);
58163 // Type consistency
58164 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
58165 find mayInstanceOfFAMTerminator_class(problem,interpretation,target);
58166 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58167 // the upper bound of the multiplicity should be considered.
58168 numberOfExistingReferences == count find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,_);
58169 check(numberOfExistingReferences < 1);
58170 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
58171 // the upper bound of the opposite reference multiplicity should be considered.
58172 numberOfExistingOppositeReferences == count find mustInRelationdata_reference_FAMTerminator(problem,interpretation,target,_);
58173 check(numberOfExistingOppositeReferences < 1);
58174 // The reference is containment, then a new reference cannot be create if:
58175 // 1. Multiple parents
58176 neg find mustContains4(problem,interpretation,_,target);
58177 // 2. Circle in the containment hierarchy
58178 neg find mustTransitiveContains(source,target);
58179} or {
58180 find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target);
58181}
58182/**
58183 * Matcher for detecting tuples t where []interface reference FunctionalData(source,target)
58184 */
58185private pattern mustInRelationinterface_reference_FunctionalData(
58186 problem:LogicProblem, interpretation:PartialInterpretation,
58187 source: DefinedElement, target:DefinedElement)
58188{
58189 find interpretation(problem,interpretation);
58190 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58191 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface reference FunctionalData");
58192 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58193 BinaryElementRelationLink.param1(link,source);
58194 BinaryElementRelationLink.param2(link,target);
58195}
58196/**
58197 * Matcher for detecting tuples t where <>interface reference FunctionalData(source,target)
58198 */
58199private pattern mayInRelationinterface_reference_FunctionalData(
58200 problem:LogicProblem, interpretation:PartialInterpretation,
58201 source: DefinedElement, target:DefinedElement)
58202{
58203 find interpretation(problem,interpretation);
58204 // The two endpoint of the link have to exist
58205 find mayExist(problem, interpretation, source);
58206 find mayExist(problem, interpretation, target);
58207 // Type consistency
58208 find mayInstanceOfFunctionalData_class(problem,interpretation,source);
58209 find mayInstanceOfFunctionalInterface_class(problem,interpretation,target);
58210 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58211 // the upper bound of the multiplicity should be considered.
58212 numberOfExistingReferences == count find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,_);
58213 check(numberOfExistingReferences < 1);
58214 // The eOpposite of the reference is containment, then a referene cannot be created if
58215 // 1. Multiple parents
58216 neg find mustContains4(problem,interpretation,source,_);
58217 // 2. Circle in the containment hierarchy
58218 neg find mustTransitiveContains(source,target);
58219} or {
58220 find mustInRelationinterface_reference_FunctionalData(problem,interpretation,source,target);
58221}
58222/**
58223 * Matcher for detecting tuples t where []type attribute Function(source,target)
58224 */
58225private pattern mustInRelationtype_attribute_Function(
58226 problem:LogicProblem, interpretation:PartialInterpretation,
58227 source: DefinedElement, target:DefinedElement)
58228{
58229 find interpretation(problem,interpretation);
58230 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58231 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
58232 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
58233 BinaryElementRelationLink.param1(link,source);
58234 BinaryElementRelationLink.param2(link,target);
58235}
58236/**
58237 * Matcher for detecting tuples t where <>type attribute Function(source,target)
58238 */
58239private pattern mayInRelationtype_attribute_Function(
58240 problem:LogicProblem, interpretation:PartialInterpretation,
58241 source: DefinedElement, target:DefinedElement)
58242{
58243 find interpretation(problem,interpretation);
58244 // The two endpoint of the link have to exist
58245 find mayExist(problem, interpretation, source);
58246 find mayExist(problem, interpretation, target);
58247 // Type consistency
58248 find mayInstanceOfFunction_class(problem,interpretation,source);
58249 find mayInstanceOfFunctionType_enum(problem,interpretation,target);
58250 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
58251 // the upper bound of the multiplicity should be considered.
58252 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,source,_);
58253 check(numberOfExistingReferences < 1);
58254} or {
58255 find mustInRelationtype_attribute_Function(problem,interpretation,source,target);
58256}
58257
58258//////////
58259// 1.3 Relation Definition Indexers
58260//////////
58261
58262//////////
58263// 1.4 Containment Indexer
58264//////////
58265private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
58266 find mustContains4(_,_,source,target);
58267}
58268
58269private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
58270 source: DefinedElement, target: DefinedElement)
58271 { find mustInRelationinterface_reference_FunctionalElement(problem,interpretation,source,target); }or
58272
58273 { find mustInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,source,target); }or
58274
58275 { find mustInRelationsubElements_reference_Function(problem,interpretation,source,target); }or
58276
58277 { find mustInRelationdata_reference_FunctionalInterface(problem,interpretation,source,target); }or
58278
58279 { find mustInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,source,target); }or
58280
58281 { find mustInRelationterminator_reference_FunctionalData(problem,interpretation,source,target); }
58282
58283private pattern mustTransitiveContains(source,target) {
58284 find mustContains2+(source,target);
58285}
58286
58287//////////
58288// 2. Invalidation Indexers
58289//////////
58290// 2.1 Invalidated by WF Queries
58291//////////
58292
58293//////////
58294// 3. Unfinishedness Indexers
58295//////////
58296// 3.1 Unfinishedness Measured by Multiplicity
58297//////////
58298pattern unfinishedLowerMultiplicity_model_reference_FunctionalElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
58299 find interpretation(problem,interpretation);
58300 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58301 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
58302 find mustInstanceOfFunctionalElement_class(problem,interpretation,object);
58303 numberOfExistingReferences == count find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,object,_);
58304 check(numberOfExistingReferences < 1);
58305 missingMultiplicity == eval(1-numberOfExistingReferences);
58306}
58307pattern unfinishedLowerMultiplicity_to_reference_InformationLink(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
58308 find interpretation(problem,interpretation);
58309 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58310 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"to reference InformationLink");
58311 find mustInstanceOfInformationLink_class(problem,interpretation,object);
58312 numberOfExistingReferences == count find mustInRelationto_reference_InformationLink(problem,interpretation,object,_);
58313 check(numberOfExistingReferences < 1);
58314 missingMultiplicity == eval(1-numberOfExistingReferences);
58315}
58316pattern unfinishedLowerMultiplicity_type_attribute_Function(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
58317 find interpretation(problem,interpretation);
58318 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58319 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
58320 find mustInstanceOfFunction_class(problem,interpretation,object);
58321 numberOfExistingReferences == count find mustInRelationtype_attribute_Function(problem,interpretation,object,_);
58322 check(numberOfExistingReferences < 1);
58323 missingMultiplicity == eval(1-numberOfExistingReferences);
58324}
58325
58326//////////
58327// 3.2 Unfinishedness Measured by WF Queries
58328//////////
58329
58330//////////
58331// 4. Refinement Indexers
58332//////////
58333// 4.1 Object constructors
58334//////////
58335private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
58336{
58337 find interpretation(problem,interpretation);
58338 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,root);
58339 find mustExist(problem, interpretation, root);
58340}or{
58341 find interpretation(problem,interpretation);
58342 find mustInstanceOfFunctionalData_class(problem,interpretation,root);
58343 find mustExist(problem, interpretation, root);
58344}or{
58345 find interpretation(problem,interpretation);
58346 find mustInstanceOfFunction_class(problem,interpretation,root);
58347 find mustExist(problem, interpretation, root);
58348}or{
58349 find interpretation(problem,interpretation);
58350 find mustInstanceOfFAMTerminator_class(problem,interpretation,root);
58351 find mustExist(problem, interpretation, root);
58352}or{
58353 find interpretation(problem,interpretation);
58354 find mustInstanceOfInformationLink_class(problem,interpretation,root);
58355 find mustExist(problem, interpretation, root);
58356}or{
58357 find interpretation(problem,interpretation);
58358 find mustInstanceOfFunctionalInterface_class(problem,interpretation,root);
58359 find mustExist(problem, interpretation, root);
58360}or{
58361 find interpretation(problem,interpretation);
58362 find mustInstanceOfFunctionalElement_class(problem,interpretation,root);
58363 find mustExist(problem, interpretation, root);
58364}or{
58365 find interpretation(problem,interpretation);
58366 find mustInstanceOfFunctionalInput_class(problem,interpretation,root);
58367 find mustExist(problem, interpretation, root);
58368}or{
58369 find interpretation(problem,interpretation);
58370 find mustInstanceOfFunctionalOutput_class(problem,interpretation,root);
58371 find mustExist(problem, interpretation, root);
58372}or{
58373 find interpretation(problem,interpretation);
58374 find mustInstanceOfFunctionalArchitectureModel_class_DefinedPart(problem,interpretation,root);
58375 find mustExist(problem, interpretation, root);
58376}or{
58377 find interpretation(problem,interpretation);
58378 find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,root);
58379 find mustExist(problem, interpretation, root);
58380}
58381pattern createObject_FunctionalOutput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
58382 problem:LogicProblem, interpretation:PartialInterpretation,
58383 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58384 container:DefinedElement)
58385{
58386 find interpretation(problem,interpretation);
58387 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58388 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
58389 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58390 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
58391 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58392 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
58393 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
58394 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
58395 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
58396 find mustExist(problem, interpretation, container);
58397 neg find mustExist(problem, interpretation, newObject);
58398}
58399pattern createObject_FunctionalOutput_class(
58400 problem:LogicProblem, interpretation:PartialInterpretation,
58401 typeInterpretation:PartialComplexTypeInterpretation)
58402{
58403 find interpretation(problem,interpretation);
58404 neg find hasElementInContainment(problem,interpretation);
58405 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58406 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalOutput class");
58407 find mayInstanceOfFunctionalOutput_class(problem,interpretation,newObject);
58408 find mayExist(problem, interpretation, newObject);
58409 neg find mustExist(problem, interpretation, newObject);
58410}
58411pattern createObject_FAMTerminator_class_by_terminator_reference_FunctionalData_with_data_reference_FAMTerminator(
58412 problem:LogicProblem, interpretation:PartialInterpretation,
58413 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58414 container:DefinedElement)
58415{
58416 find interpretation(problem,interpretation);
58417 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58418 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
58419 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58420 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"terminator reference FunctionalData");
58421 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58422 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"data reference FAMTerminator");
58423 find mustInstanceOfFunctionalData_class(problem,interpretation,container);
58424 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
58425 find mayInRelationterminator_reference_FunctionalData(problem,interpretation,container,newObject);
58426 find mustExist(problem, interpretation, container);
58427 neg find mustExist(problem, interpretation, newObject);
58428}
58429pattern createObject_FAMTerminator_class(
58430 problem:LogicProblem, interpretation:PartialInterpretation,
58431 typeInterpretation:PartialComplexTypeInterpretation)
58432{
58433 find interpretation(problem,interpretation);
58434 neg find hasElementInContainment(problem,interpretation);
58435 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58436 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FAMTerminator class");
58437 find mayInstanceOfFAMTerminator_class(problem,interpretation,newObject);
58438 find mayExist(problem, interpretation, newObject);
58439 neg find mustExist(problem, interpretation, newObject);
58440}
58441pattern createObject_FunctionalInterface_class_by_interface_reference_FunctionalElement_with_element_reference_FunctionalInterface(
58442 problem:LogicProblem, interpretation:PartialInterpretation,
58443 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58444 container:DefinedElement)
58445{
58446 find interpretation(problem,interpretation);
58447 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58448 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
58449 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58450 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"interface reference FunctionalElement");
58451 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58452 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"element reference FunctionalInterface");
58453 find mustInstanceOfFunctionalElement_class(problem,interpretation,container);
58454 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
58455 find mayInRelationinterface_reference_FunctionalElement(problem,interpretation,container,newObject);
58456 find mustExist(problem, interpretation, container);
58457 neg find mustExist(problem, interpretation, newObject);
58458}
58459pattern createObject_FunctionalInterface_class(
58460 problem:LogicProblem, interpretation:PartialInterpretation,
58461 typeInterpretation:PartialComplexTypeInterpretation)
58462{
58463 find interpretation(problem,interpretation);
58464 neg find hasElementInContainment(problem,interpretation);
58465 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58466 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInterface class");
58467 find mayInstanceOfFunctionalInterface_class(problem,interpretation,newObject);
58468 find mayExist(problem, interpretation, newObject);
58469 neg find mustExist(problem, interpretation, newObject);
58470}
58471pattern createObject_FunctionalArchitectureModel_class_UndefinedPart(
58472 problem:LogicProblem, interpretation:PartialInterpretation,
58473 typeInterpretation:PartialComplexTypeInterpretation)
58474{
58475 find interpretation(problem,interpretation);
58476 neg find hasElementInContainment(problem,interpretation);
58477 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58478 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalArchitectureModel class UndefinedPart");
58479 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,newObject);
58480 find mayExist(problem, interpretation, newObject);
58481 neg find mustExist(problem, interpretation, newObject);
58482}
58483pattern createObject_Function_class_by_rootElements_reference_FunctionalArchitectureModel(
58484 problem:LogicProblem, interpretation:PartialInterpretation,
58485 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58486 container:DefinedElement)
58487{
58488 find interpretation(problem,interpretation);
58489 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58490 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
58491 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58492 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"rootElements reference FunctionalArchitectureModel");
58493 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,container);
58494 find mayInstanceOfFunction_class(problem,interpretation,newObject);
58495 find mayInRelationrootElements_reference_FunctionalArchitectureModel(problem,interpretation,container,newObject);
58496 find mustExist(problem, interpretation, container);
58497 neg find mustExist(problem, interpretation, newObject);
58498}
58499pattern createObject_Function_class_by_subElements_reference_Function_with_parent_reference_FunctionalElement(
58500 problem:LogicProblem, interpretation:PartialInterpretation,
58501 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58502 container:DefinedElement)
58503{
58504 find interpretation(problem,interpretation);
58505 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58506 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
58507 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58508 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"subElements reference Function");
58509 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58510 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"parent reference FunctionalElement");
58511 find mustInstanceOfFunction_class(problem,interpretation,container);
58512 find mayInstanceOfFunction_class(problem,interpretation,newObject);
58513 find mayInRelationsubElements_reference_Function(problem,interpretation,container,newObject);
58514 find mustExist(problem, interpretation, container);
58515 neg find mustExist(problem, interpretation, newObject);
58516}
58517pattern createObject_Function_class(
58518 problem:LogicProblem, interpretation:PartialInterpretation,
58519 typeInterpretation:PartialComplexTypeInterpretation)
58520{
58521 find interpretation(problem,interpretation);
58522 neg find hasElementInContainment(problem,interpretation);
58523 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58524 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Function class");
58525 find mayInstanceOfFunction_class(problem,interpretation,newObject);
58526 find mayExist(problem, interpretation, newObject);
58527 neg find mustExist(problem, interpretation, newObject);
58528}
58529pattern createObject_InformationLink_class_by_outgoingLinks_reference_FunctionalOutput_with_from_reference_InformationLink(
58530 problem:LogicProblem, interpretation:PartialInterpretation,
58531 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58532 container:DefinedElement)
58533{
58534 find interpretation(problem,interpretation);
58535 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58536 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
58537 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58538 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"outgoingLinks reference FunctionalOutput");
58539 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58540 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"from reference InformationLink");
58541 find mustInstanceOfFunctionalOutput_class(problem,interpretation,container);
58542 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
58543 find mayInRelationoutgoingLinks_reference_FunctionalOutput(problem,interpretation,container,newObject);
58544 find mustExist(problem, interpretation, container);
58545 neg find mustExist(problem, interpretation, newObject);
58546}
58547pattern createObject_InformationLink_class(
58548 problem:LogicProblem, interpretation:PartialInterpretation,
58549 typeInterpretation:PartialComplexTypeInterpretation)
58550{
58551 find interpretation(problem,interpretation);
58552 neg find hasElementInContainment(problem,interpretation);
58553 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58554 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InformationLink class");
58555 find mayInstanceOfInformationLink_class(problem,interpretation,newObject);
58556 find mayExist(problem, interpretation, newObject);
58557 neg find mustExist(problem, interpretation, newObject);
58558}
58559pattern createObject_FunctionalInput_class_by_data_reference_FunctionalInterface_with_interface_reference_FunctionalData(
58560 problem:LogicProblem, interpretation:PartialInterpretation,
58561 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
58562 container:DefinedElement)
58563{
58564 find interpretation(problem,interpretation);
58565 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58566 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
58567 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
58568 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"data reference FunctionalInterface");
58569 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
58570 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"interface reference FunctionalData");
58571 find mustInstanceOfFunctionalInterface_class(problem,interpretation,container);
58572 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
58573 find mayInRelationdata_reference_FunctionalInterface(problem,interpretation,container,newObject);
58574 find mustExist(problem, interpretation, container);
58575 neg find mustExist(problem, interpretation, newObject);
58576}
58577pattern createObject_FunctionalInput_class(
58578 problem:LogicProblem, interpretation:PartialInterpretation,
58579 typeInterpretation:PartialComplexTypeInterpretation)
58580{
58581 find interpretation(problem,interpretation);
58582 neg find hasElementInContainment(problem,interpretation);
58583 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58584 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FunctionalInput class");
58585 find mayInstanceOfFunctionalInput_class(problem,interpretation,newObject);
58586 find mayExist(problem, interpretation, newObject);
58587 neg find mustExist(problem, interpretation, newObject);
58588}
58589
58590//////////
58591// 4.2 Type refinement
58592//////////
58593pattern refineTypeTo_FunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58594 find interpretation(problem,interpretation);
58595 PartialInterpretation.newElements(interpretation,element);
58596 find mayInstanceOfFunctionalOutput_class(problem,interpretation,element);
58597 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
58598 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58599 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58600 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58601 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58602 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58603 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
58604}
58605pattern refineTypeTo_FAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58606 find interpretation(problem,interpretation);
58607 PartialInterpretation.newElements(interpretation,element);
58608 find mayInstanceOfFAMTerminator_class(problem,interpretation,element);
58609 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58610 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58611 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58612 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58613 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58614 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58615}
58616pattern refineTypeTo_FunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58617 find interpretation(problem,interpretation);
58618 PartialInterpretation.newElements(interpretation,element);
58619 find mayInstanceOfFunctionalInterface_class(problem,interpretation,element);
58620 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58621 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58622 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58623 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58624 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58625 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58626}
58627pattern refineTypeTo_FunctionalArchitectureModel_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58628 find interpretation(problem,interpretation);
58629 PartialInterpretation.newElements(interpretation,element);
58630 find mayInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
58631 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58632 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58633 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58634 neg find mustInstanceOfFunctionalArchitectureModel_class_UndefinedPart(problem,interpretation,element);
58635 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58636 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58637}
58638pattern refineTypeTo_Function_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58639 find interpretation(problem,interpretation);
58640 PartialInterpretation.newElements(interpretation,element);
58641 find mayInstanceOfFunction_class(problem,interpretation,element);
58642 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58643 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58644 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58645 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58646 neg find mustInstanceOfFunction_class(problem,interpretation,element);
58647 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58648}
58649pattern refineTypeTo_InformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58650 find interpretation(problem,interpretation);
58651 PartialInterpretation.newElements(interpretation,element);
58652 find mayInstanceOfInformationLink_class(problem,interpretation,element);
58653 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58654 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58655 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58656 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58657 neg find mustInstanceOfFunctionalData_class(problem,interpretation,element);
58658 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58659}
58660pattern refineTypeTo_FunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
58661 find interpretation(problem,interpretation);
58662 PartialInterpretation.newElements(interpretation,element);
58663 find mayInstanceOfFunctionalInput_class(problem,interpretation,element);
58664 neg find mustInstanceOfFunctionalOutput_class(problem,interpretation,element);
58665 neg find mustInstanceOfFunctionalInterface_class(problem,interpretation,element);
58666 neg find mustInstanceOfFAMTerminator_class(problem,interpretation,element);
58667 neg find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,element);
58668 neg find mustInstanceOfFunctionalElement_class(problem,interpretation,element);
58669 neg find mustInstanceOfInformationLink_class(problem,interpretation,element);
58670 neg find mustInstanceOfFunctionalInput_class(problem,interpretation,element);
58671}
58672
58673//////////
58674// 4.3 Relation refinement
58675//////////
58676pattern refineRelation_model_reference_FunctionalElement(
58677 problem:LogicProblem, interpretation:PartialInterpretation,
58678 relationIterpretation:PartialRelationInterpretation,
58679 from: DefinedElement, to: DefinedElement)
58680{
58681 find interpretation(problem,interpretation);
58682 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58683 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"model reference FunctionalElement");
58684 find mustExist(problem, interpretation, from);
58685 find mustExist(problem, interpretation, to);
58686 find mustInstanceOfFunctionalElement_class(problem,interpretation,from);
58687 find mustInstanceOfFunctionalArchitectureModel_class(problem,interpretation,to);
58688 find mayInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
58689 neg find mustInRelationmodel_reference_FunctionalElement(problem,interpretation,from,to);
58690}
58691pattern refineRelation_IncomingLinks_reference_FunctionalInput_and_to_reference_InformationLink(
58692 problem:LogicProblem, interpretation:PartialInterpretation,
58693 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
58694 from: DefinedElement, to: DefinedElement)
58695{
58696 find interpretation(problem,interpretation);
58697 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58698 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"IncomingLinks reference FunctionalInput");
58699 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
58700 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"to reference InformationLink");
58701 find mustExist(problem, interpretation, from);
58702 find mustExist(problem, interpretation, to);
58703 find mustInstanceOfFunctionalInput_class(problem,interpretation,from);
58704 find mustInstanceOfInformationLink_class(problem,interpretation,to);
58705 find mayInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
58706 neg find mustInRelationIncomingLinks_reference_FunctionalInput(problem,interpretation,from,to);
58707}
58708pattern refineRelation_type_attribute_Function(
58709 problem:LogicProblem, interpretation:PartialInterpretation,
58710 relationIterpretation:PartialRelationInterpretation,
58711 from: DefinedElement, to: DefinedElement)
58712{
58713 find interpretation(problem,interpretation);
58714 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
58715 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"type attribute Function");
58716 find mustExist(problem, interpretation, from);
58717 find mustExist(problem, interpretation, to);
58718 find mustInstanceOfFunction_class(problem,interpretation,from);
58719 find mustInstanceOfFunctionType_enum(problem,interpretation,to);
58720 find mayInRelationtype_attribute_Function(problem,interpretation,from,to);
58721 neg find mustInRelationtype_attribute_Function(problem,interpretation,from,to);
58722}
58723import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
58724import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
58725import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
58726
58727//////////
58728// 0. Util
58729//////////
58730private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
58731 PartialInterpretation.problem(interpretation,problem);
58732}
58733
58734/////////////////////////
58735// 0.1 Existence
58736/////////////////////////
58737private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58738 find interpretation(problem,interpretation);
58739 LogicProblem.elements(problem,element);
58740} or {
58741 find interpretation(problem,interpretation);
58742 PartialInterpretation.newElements(interpretation,element);
58743}
58744
58745private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58746 find mustExist(problem,interpretation,element);
58747} or {
58748 find interpretation(problem,interpretation);
58749 neg find elementCloseWorld(element);
58750 PartialInterpretation.openWorldElements(interpretation,element);
58751}
58752
58753private pattern elementCloseWorld(element:DefinedElement) {
58754 PartialInterpretation.openWorldElements(i,element);
58755 PartialInterpretation.maxNewElements(i,0);
58756} or {
58757 Scope.targetTypeInterpretation(scope,interpretation);
58758 PartialTypeInterpratation.elements(interpretation,element);
58759 Scope.maxNewElements(scope,0);
58760}
58761
58762////////////////////////
58763// 0.2 Equivalence
58764////////////////////////
58765pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
58766 find mayExist(problem,interpretation,a);
58767 find mayExist(problem,interpretation,b);
58768 a == b;
58769}
58770
58771////////////////////////
58772// 0.3 Required Patterns by TypeIndexer
58773////////////////////////
58774private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
58775 find interpretation(problem,interpretation);
58776 LogicProblem.types(problem,type);
58777 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
58778 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58779}
58780
58781private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
58782 find interpretation(problem,interpretation);
58783 LogicProblem.types(problem,type);
58784 TypeDefinition.elements(type,element);
58785} or {
58786 find interpretation(problem,interpretation);
58787 find typeInterpretation(problem,interpretation,type,typeInterpretation);
58788 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
58789}
58790
58791private pattern isPrimitive(element: PrimitiveElement) {
58792 PrimitiveElement(element);
58793}
58794
58795//////////
58796// 1. Problem-Specific Base Indexers
58797//////////
58798// 1.1 Type Indexers
58799//////////
58800// 1.1.1 primitive Type Indexers
58801//////////
58802
58803//////////
58804// 1.1.2 domain-specific Type Indexers
58805//////////
58806/**
58807 * An element must be an instance of type "EAttribute class".
58808 */
58809private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58810 Type.name(type,"EAttribute class");
58811 find directInstanceOf(problem,interpretation,element,type);
58812}
58813private pattern scopeDisallowsNewEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58814 find interpretation(problem,interpretation);
58815 PartialInterpretation.scopes(interpretation,scope);
58816 Scope.targetTypeInterpretation(scope,typeInterpretation);
58817 Scope.maxNewElements(scope,0);
58818 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58819 Type.name(type,"EAttribute class");
58820}
58821
58822/**
58823 * An element may be an instance of type "EAttribute class".
58824 */
58825private pattern mayInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58826{
58827 find interpretation(problem,interpretation);
58828 PartialInterpretation.newElements(interpretation,element);
58829 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58830 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58831 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58832 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
58833 neg find mustInstanceOfEReference_class(problem,interpretation,element);
58834 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58835 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58836 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58837 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
58838 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58839 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
58840 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
58841 neg find isPrimitive(element);
58842} or {
58843 find interpretation(problem,interpretation);
58844 PartialInterpretation.openWorldElements(interpretation,element);
58845 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58846 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58847 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58848 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
58849 neg find mustInstanceOfEReference_class(problem,interpretation,element);
58850 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58851 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58852 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58853 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
58854 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58855 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
58856 neg find scopeDisallowsNewEAttribute_class(problem, interpretation);
58857 neg find isPrimitive(element);
58858} or
58859{ find mustInstanceOfEAttribute_class(problem,interpretation,element); }
58860/**
58861 * An element must be an instance of type "EAnnotation class".
58862 */
58863private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58864 Type.name(type,"EAnnotation class");
58865 find directInstanceOf(problem,interpretation,element,type);
58866}
58867private pattern scopeDisallowsNewEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58868 find interpretation(problem,interpretation);
58869 PartialInterpretation.scopes(interpretation,scope);
58870 Scope.targetTypeInterpretation(scope,typeInterpretation);
58871 Scope.maxNewElements(scope,0);
58872 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58873 Type.name(type,"EAnnotation class");
58874}
58875
58876/**
58877 * An element may be an instance of type "EAnnotation class".
58878 */
58879private pattern mayInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58880{
58881 find interpretation(problem,interpretation);
58882 PartialInterpretation.newElements(interpretation,element);
58883 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58884 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58885 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58886 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
58887 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
58888 neg find isPrimitive(element);
58889} or {
58890 find interpretation(problem,interpretation);
58891 PartialInterpretation.openWorldElements(interpretation,element);
58892 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58893 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58894 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58895 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
58896 neg find scopeDisallowsNewEAnnotation_class(problem, interpretation);
58897 neg find isPrimitive(element);
58898} or
58899{ find mustInstanceOfEAnnotation_class(problem,interpretation,element); }
58900/**
58901 * An element must be an instance of type "EClass class".
58902 */
58903private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58904 Type.name(type,"EClass class");
58905 find directInstanceOf(problem,interpretation,element,type);
58906}
58907private pattern scopeDisallowsNewEClass_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58908 find interpretation(problem,interpretation);
58909 PartialInterpretation.scopes(interpretation,scope);
58910 Scope.targetTypeInterpretation(scope,typeInterpretation);
58911 Scope.maxNewElements(scope,0);
58912 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58913 Type.name(type,"EClass class");
58914}
58915
58916/**
58917 * An element may be an instance of type "EClass class".
58918 */
58919private pattern mayInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58920{
58921 find interpretation(problem,interpretation);
58922 PartialInterpretation.newElements(interpretation,element);
58923 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58924 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58925 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58926 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58927 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58928 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58929 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58930 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58931 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58932 neg find scopeDisallowsNewEClass_class(problem, interpretation);
58933 neg find isPrimitive(element);
58934} or {
58935 find interpretation(problem,interpretation);
58936 PartialInterpretation.openWorldElements(interpretation,element);
58937 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58938 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58939 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58940 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58941 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58942 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58943 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58944 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58945 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58946 neg find scopeDisallowsNewEClass_class(problem, interpretation);
58947 neg find isPrimitive(element);
58948} or
58949{ find mustInstanceOfEClass_class(problem,interpretation,element); }
58950/**
58951 * An element must be an instance of type "EClassifier class".
58952 */
58953private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
58954 Type.name(type,"EClassifier class");
58955 find directInstanceOf(problem,interpretation,element,type);
58956}
58957private pattern scopeDisallowsNewEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation) {
58958 find interpretation(problem,interpretation);
58959 PartialInterpretation.scopes(interpretation,scope);
58960 Scope.targetTypeInterpretation(scope,typeInterpretation);
58961 Scope.maxNewElements(scope,0);
58962 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
58963 Type.name(type,"EClassifier class");
58964}
58965
58966/**
58967 * An element may be an instance of type "EClassifier class".
58968 */
58969private pattern mayInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
58970{
58971 find interpretation(problem,interpretation);
58972 PartialInterpretation.newElements(interpretation,element);
58973 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58974 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58975 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58976 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58977 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58978 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58979 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58980 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58981 neg find mustInstanceOfEClass_class(problem,interpretation,element);
58982 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58983 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
58984 neg find isPrimitive(element);
58985} or {
58986 find interpretation(problem,interpretation);
58987 PartialInterpretation.openWorldElements(interpretation,element);
58988 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
58989 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
58990 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
58991 neg find mustInstanceOfEObject_class(problem,interpretation,element);
58992 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
58993 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
58994 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
58995 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
58996 neg find mustInstanceOfEClass_class(problem,interpretation,element);
58997 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
58998 neg find scopeDisallowsNewEClassifier_class(problem, interpretation);
58999 neg find isPrimitive(element);
59000} or
59001{ find mustInstanceOfEClassifier_class(problem,interpretation,element); }
59002/**
59003 * An element must be an instance of type "EDataType class".
59004 */
59005private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59006 Type.name(type,"EDataType class");
59007 find directInstanceOf(problem,interpretation,element,type);
59008}
59009private pattern scopeDisallowsNewEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59010 find interpretation(problem,interpretation);
59011 PartialInterpretation.scopes(interpretation,scope);
59012 Scope.targetTypeInterpretation(scope,typeInterpretation);
59013 Scope.maxNewElements(scope,0);
59014 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59015 Type.name(type,"EDataType class");
59016}
59017
59018/**
59019 * An element may be an instance of type "EDataType class".
59020 */
59021private pattern mayInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59022{
59023 find interpretation(problem,interpretation);
59024 PartialInterpretation.newElements(interpretation,element);
59025 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59026 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59027 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59028 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
59029 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59030 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59031 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59032 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59033 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59034 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59035 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
59036 neg find isPrimitive(element);
59037} or {
59038 find interpretation(problem,interpretation);
59039 PartialInterpretation.openWorldElements(interpretation,element);
59040 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59041 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59042 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59043 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
59044 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59045 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59046 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59047 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59048 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59049 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59050 neg find scopeDisallowsNewEDataType_class(problem, interpretation);
59051 neg find isPrimitive(element);
59052} or
59053{ find mustInstanceOfEDataType_class(problem,interpretation,element); }
59054/**
59055 * An element must be an instance of type "EEnum class".
59056 */
59057private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59058 Type.name(type,"EEnum class");
59059 find directInstanceOf(problem,interpretation,element,type);
59060}
59061private pattern scopeDisallowsNewEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59062 find interpretation(problem,interpretation);
59063 PartialInterpretation.scopes(interpretation,scope);
59064 Scope.targetTypeInterpretation(scope,typeInterpretation);
59065 Scope.maxNewElements(scope,0);
59066 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59067 Type.name(type,"EEnum class");
59068}
59069
59070/**
59071 * An element may be an instance of type "EEnum class".
59072 */
59073private pattern mayInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59074{
59075 find interpretation(problem,interpretation);
59076 PartialInterpretation.newElements(interpretation,element);
59077 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59078 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59079 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59080 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59081 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59082 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59083 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59084 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59085 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59086 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
59087 neg find isPrimitive(element);
59088} or {
59089 find interpretation(problem,interpretation);
59090 PartialInterpretation.openWorldElements(interpretation,element);
59091 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59092 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59093 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59094 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59095 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59096 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59097 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59098 neg find mustInstanceOfEClass_class(problem,interpretation,element);
59099 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59100 neg find scopeDisallowsNewEEnum_class(problem, interpretation);
59101 neg find isPrimitive(element);
59102} or
59103{ find mustInstanceOfEEnum_class(problem,interpretation,element); }
59104/**
59105 * An element must be an instance of type "EEnumLiteral class".
59106 */
59107private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59108 Type.name(type,"EEnumLiteral class");
59109 find directInstanceOf(problem,interpretation,element,type);
59110}
59111private pattern scopeDisallowsNewEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59112 find interpretation(problem,interpretation);
59113 PartialInterpretation.scopes(interpretation,scope);
59114 Scope.targetTypeInterpretation(scope,typeInterpretation);
59115 Scope.maxNewElements(scope,0);
59116 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59117 Type.name(type,"EEnumLiteral class");
59118}
59119
59120/**
59121 * An element may be an instance of type "EEnumLiteral class".
59122 */
59123private pattern mayInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59124{
59125 find interpretation(problem,interpretation);
59126 PartialInterpretation.newElements(interpretation,element);
59127 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59128 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59129 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59130 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59131 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59132 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59133 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59134 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59135 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
59136 neg find isPrimitive(element);
59137} or {
59138 find interpretation(problem,interpretation);
59139 PartialInterpretation.openWorldElements(interpretation,element);
59140 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59141 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59142 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59143 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59144 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59145 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59146 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59147 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59148 neg find scopeDisallowsNewEEnumLiteral_class(problem, interpretation);
59149 neg find isPrimitive(element);
59150} or
59151{ find mustInstanceOfEEnumLiteral_class(problem,interpretation,element); }
59152/**
59153 * An element must be an instance of type "EModelElement class".
59154 */
59155private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59156 Type.name(type,"EModelElement class");
59157 find directInstanceOf(problem,interpretation,element,type);
59158}
59159private pattern scopeDisallowsNewEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59160 find interpretation(problem,interpretation);
59161 PartialInterpretation.scopes(interpretation,scope);
59162 Scope.targetTypeInterpretation(scope,typeInterpretation);
59163 Scope.maxNewElements(scope,0);
59164 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59165 Type.name(type,"EModelElement class");
59166}
59167
59168/**
59169 * An element may be an instance of type "EModelElement class".
59170 */
59171private pattern mayInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59172{
59173 find interpretation(problem,interpretation);
59174 PartialInterpretation.newElements(interpretation,element);
59175 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59176 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59177 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59178 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59179 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59180 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
59181 neg find isPrimitive(element);
59182} or {
59183 find interpretation(problem,interpretation);
59184 PartialInterpretation.openWorldElements(interpretation,element);
59185 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59186 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59187 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59188 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59189 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59190 neg find scopeDisallowsNewEModelElement_class(problem, interpretation);
59191 neg find isPrimitive(element);
59192} or
59193{ find mustInstanceOfEModelElement_class(problem,interpretation,element); }
59194/**
59195 * An element must be an instance of type "ENamedElement class".
59196 */
59197private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59198 Type.name(type,"ENamedElement class");
59199 find directInstanceOf(problem,interpretation,element,type);
59200}
59201private pattern scopeDisallowsNewENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59202 find interpretation(problem,interpretation);
59203 PartialInterpretation.scopes(interpretation,scope);
59204 Scope.targetTypeInterpretation(scope,typeInterpretation);
59205 Scope.maxNewElements(scope,0);
59206 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59207 Type.name(type,"ENamedElement class");
59208}
59209
59210/**
59211 * An element may be an instance of type "ENamedElement class".
59212 */
59213private pattern mayInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59214{
59215 find interpretation(problem,interpretation);
59216 PartialInterpretation.newElements(interpretation,element);
59217 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59218 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59219 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59220 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59221 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59222 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
59223 neg find isPrimitive(element);
59224} or {
59225 find interpretation(problem,interpretation);
59226 PartialInterpretation.openWorldElements(interpretation,element);
59227 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59228 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59229 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59230 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59231 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59232 neg find scopeDisallowsNewENamedElement_class(problem, interpretation);
59233 neg find isPrimitive(element);
59234} or
59235{ find mustInstanceOfENamedElement_class(problem,interpretation,element); }
59236/**
59237 * An element must be an instance of type "EObject class".
59238 */
59239private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59240 Type.name(type,"EObject class");
59241 find directInstanceOf(problem,interpretation,element,type);
59242}
59243private pattern scopeDisallowsNewEObject_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59244 find interpretation(problem,interpretation);
59245 PartialInterpretation.scopes(interpretation,scope);
59246 Scope.targetTypeInterpretation(scope,typeInterpretation);
59247 Scope.maxNewElements(scope,0);
59248 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59249 Type.name(type,"EObject class");
59250}
59251
59252/**
59253 * An element may be an instance of type "EObject class".
59254 */
59255private pattern mayInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59256{
59257 find interpretation(problem,interpretation);
59258 PartialInterpretation.newElements(interpretation,element);
59259 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59260 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59261 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59262 neg find scopeDisallowsNewEObject_class(problem, interpretation);
59263 neg find isPrimitive(element);
59264} or {
59265 find interpretation(problem,interpretation);
59266 PartialInterpretation.openWorldElements(interpretation,element);
59267 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59268 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59269 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59270 neg find scopeDisallowsNewEObject_class(problem, interpretation);
59271 neg find isPrimitive(element);
59272} or
59273{ find mustInstanceOfEObject_class(problem,interpretation,element); }
59274/**
59275 * An element must be an instance of type "EOperation class".
59276 */
59277private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59278 Type.name(type,"EOperation class");
59279 find directInstanceOf(problem,interpretation,element,type);
59280}
59281private pattern scopeDisallowsNewEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59282 find interpretation(problem,interpretation);
59283 PartialInterpretation.scopes(interpretation,scope);
59284 Scope.targetTypeInterpretation(scope,typeInterpretation);
59285 Scope.maxNewElements(scope,0);
59286 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59287 Type.name(type,"EOperation class");
59288}
59289
59290/**
59291 * An element may be an instance of type "EOperation class".
59292 */
59293private pattern mayInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59294{
59295 find interpretation(problem,interpretation);
59296 PartialInterpretation.newElements(interpretation,element);
59297 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59298 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59299 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59300 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59301 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59302 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59303 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59304 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59305 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59306 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59307 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
59308 neg find isPrimitive(element);
59309} or {
59310 find interpretation(problem,interpretation);
59311 PartialInterpretation.openWorldElements(interpretation,element);
59312 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59313 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59314 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59315 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59316 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59317 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59318 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59319 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59320 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59321 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59322 neg find scopeDisallowsNewEOperation_class(problem, interpretation);
59323 neg find isPrimitive(element);
59324} or
59325{ find mustInstanceOfEOperation_class(problem,interpretation,element); }
59326/**
59327 * An element must be an instance of type "EPackage class".
59328 */
59329private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59330 Type.name(type,"EPackage class");
59331 find directInstanceOf(problem,interpretation,element,type);
59332}
59333private pattern scopeDisallowsNewEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59334 find interpretation(problem,interpretation);
59335 PartialInterpretation.scopes(interpretation,scope);
59336 Scope.targetTypeInterpretation(scope,typeInterpretation);
59337 Scope.maxNewElements(scope,0);
59338 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59339 Type.name(type,"EPackage class");
59340}
59341
59342/**
59343 * An element may be an instance of type "EPackage class".
59344 */
59345private pattern mayInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59346{
59347 find interpretation(problem,interpretation);
59348 PartialInterpretation.newElements(interpretation,element);
59349 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59350 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59351 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59352 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59353 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
59354 neg find isPrimitive(element);
59355} or {
59356 find interpretation(problem,interpretation);
59357 PartialInterpretation.openWorldElements(interpretation,element);
59358 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59359 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59360 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59361 neg find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element);
59362 neg find scopeDisallowsNewEPackage_class(problem, interpretation);
59363 neg find isPrimitive(element);
59364} or
59365{ find mustInstanceOfEPackage_class(problem,interpretation,element); }
59366/**
59367 * An element must be an instance of type "EParameter class".
59368 */
59369private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59370 Type.name(type,"EParameter class");
59371 find directInstanceOf(problem,interpretation,element,type);
59372}
59373private pattern scopeDisallowsNewEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59374 find interpretation(problem,interpretation);
59375 PartialInterpretation.scopes(interpretation,scope);
59376 Scope.targetTypeInterpretation(scope,typeInterpretation);
59377 Scope.maxNewElements(scope,0);
59378 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59379 Type.name(type,"EParameter class");
59380}
59381
59382/**
59383 * An element may be an instance of type "EParameter class".
59384 */
59385private pattern mayInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59386{
59387 find interpretation(problem,interpretation);
59388 PartialInterpretation.newElements(interpretation,element);
59389 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59390 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59391 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59392 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59393 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59394 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59395 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59396 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59397 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59398 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59399 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
59400 neg find isPrimitive(element);
59401} or {
59402 find interpretation(problem,interpretation);
59403 PartialInterpretation.openWorldElements(interpretation,element);
59404 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59405 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59406 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59407 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59408 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59409 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59410 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59411 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59412 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59413 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59414 neg find scopeDisallowsNewEParameter_class(problem, interpretation);
59415 neg find isPrimitive(element);
59416} or
59417{ find mustInstanceOfEParameter_class(problem,interpretation,element); }
59418/**
59419 * An element must be an instance of type "EReference class".
59420 */
59421private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59422 Type.name(type,"EReference class");
59423 find directInstanceOf(problem,interpretation,element,type);
59424}
59425private pattern scopeDisallowsNewEReference_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59426 find interpretation(problem,interpretation);
59427 PartialInterpretation.scopes(interpretation,scope);
59428 Scope.targetTypeInterpretation(scope,typeInterpretation);
59429 Scope.maxNewElements(scope,0);
59430 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59431 Type.name(type,"EReference class");
59432}
59433
59434/**
59435 * An element may be an instance of type "EReference class".
59436 */
59437private pattern mayInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59438{
59439 find interpretation(problem,interpretation);
59440 PartialInterpretation.newElements(interpretation,element);
59441 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59442 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59443 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59444 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59445 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59446 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59447 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59448 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59449 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59450 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59451 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59452 neg find scopeDisallowsNewEReference_class(problem, interpretation);
59453 neg find isPrimitive(element);
59454} or {
59455 find interpretation(problem,interpretation);
59456 PartialInterpretation.openWorldElements(interpretation,element);
59457 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59458 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59459 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59460 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59461 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59462 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59463 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59464 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59465 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59466 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59467 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59468 neg find scopeDisallowsNewEReference_class(problem, interpretation);
59469 neg find isPrimitive(element);
59470} or
59471{ find mustInstanceOfEReference_class(problem,interpretation,element); }
59472/**
59473 * An element must be an instance of type "EStructuralFeature class".
59474 */
59475private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59476 Type.name(type,"EStructuralFeature class");
59477 find directInstanceOf(problem,interpretation,element,type);
59478}
59479private pattern scopeDisallowsNewEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59480 find interpretation(problem,interpretation);
59481 PartialInterpretation.scopes(interpretation,scope);
59482 Scope.targetTypeInterpretation(scope,typeInterpretation);
59483 Scope.maxNewElements(scope,0);
59484 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59485 Type.name(type,"EStructuralFeature class");
59486}
59487
59488/**
59489 * An element may be an instance of type "EStructuralFeature class".
59490 */
59491private pattern mayInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59492{
59493 find interpretation(problem,interpretation);
59494 PartialInterpretation.newElements(interpretation,element);
59495 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59496 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59497 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59498 neg find mustInstanceOfEReference_class(problem,interpretation,element);
59499 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59500 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59501 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59502 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59503 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59504 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59505 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59506 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59507 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
59508 neg find isPrimitive(element);
59509} or {
59510 find interpretation(problem,interpretation);
59511 PartialInterpretation.openWorldElements(interpretation,element);
59512 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59513 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59514 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59515 neg find mustInstanceOfEReference_class(problem,interpretation,element);
59516 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59517 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59518 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59519 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59520 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59521 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59522 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59523 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
59524 neg find scopeDisallowsNewEStructuralFeature_class(problem, interpretation);
59525 neg find isPrimitive(element);
59526} or
59527{ find mustInstanceOfEStructuralFeature_class(problem,interpretation,element); }
59528/**
59529 * An element must be an instance of type "ETypedElement class".
59530 */
59531private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59532 Type.name(type,"ETypedElement class");
59533 find directInstanceOf(problem,interpretation,element,type);
59534}
59535private pattern scopeDisallowsNewETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59536 find interpretation(problem,interpretation);
59537 PartialInterpretation.scopes(interpretation,scope);
59538 Scope.targetTypeInterpretation(scope,typeInterpretation);
59539 Scope.maxNewElements(scope,0);
59540 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59541 Type.name(type,"ETypedElement class");
59542}
59543
59544/**
59545 * An element may be an instance of type "ETypedElement class".
59546 */
59547private pattern mayInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59548{
59549 find interpretation(problem,interpretation);
59550 PartialInterpretation.newElements(interpretation,element);
59551 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59552 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59553 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59554 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59555 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59556 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59557 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59558 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59559 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59560 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59561 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59562 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
59563 neg find isPrimitive(element);
59564} or {
59565 find interpretation(problem,interpretation);
59566 PartialInterpretation.openWorldElements(interpretation,element);
59567 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59568 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59569 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
59570 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59571 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59572 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59573 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59574 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
59575 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59576 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59577 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
59578 neg find scopeDisallowsNewETypedElement_class(problem, interpretation);
59579 neg find isPrimitive(element);
59580} or
59581{ find mustInstanceOfETypedElement_class(problem,interpretation,element); }
59582/**
59583 * An element must be an instance of type "EStringToStringMapEntry class".
59584 */
59585private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59586 Type.name(type,"EStringToStringMapEntry class");
59587 find directInstanceOf(problem,interpretation,element,type);
59588}
59589private pattern scopeDisallowsNewEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59590 find interpretation(problem,interpretation);
59591 PartialInterpretation.scopes(interpretation,scope);
59592 Scope.targetTypeInterpretation(scope,typeInterpretation);
59593 Scope.maxNewElements(scope,0);
59594 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59595 Type.name(type,"EStringToStringMapEntry class");
59596}
59597
59598/**
59599 * An element may be an instance of type "EStringToStringMapEntry class".
59600 */
59601private pattern mayInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59602{
59603 find interpretation(problem,interpretation);
59604 PartialInterpretation.newElements(interpretation,element);
59605 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59606 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59607 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59608 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
59609 neg find isPrimitive(element);
59610} or {
59611 find interpretation(problem,interpretation);
59612 PartialInterpretation.openWorldElements(interpretation,element);
59613 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59614 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59615 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59616 neg find scopeDisallowsNewEStringToStringMapEntry_class(problem, interpretation);
59617 neg find isPrimitive(element);
59618} or
59619{ find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element); }
59620/**
59621 * An element must be an instance of type "EGenericType class".
59622 */
59623private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59624 Type.name(type,"EGenericType class");
59625 find directInstanceOf(problem,interpretation,element,type);
59626}
59627private pattern scopeDisallowsNewEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59628 find interpretation(problem,interpretation);
59629 PartialInterpretation.scopes(interpretation,scope);
59630 Scope.targetTypeInterpretation(scope,typeInterpretation);
59631 Scope.maxNewElements(scope,0);
59632 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59633 Type.name(type,"EGenericType class");
59634}
59635
59636/**
59637 * An element may be an instance of type "EGenericType class".
59638 */
59639private pattern mayInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59640{
59641 find interpretation(problem,interpretation);
59642 PartialInterpretation.newElements(interpretation,element);
59643 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59644 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59645 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59646 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
59647 neg find isPrimitive(element);
59648} or {
59649 find interpretation(problem,interpretation);
59650 PartialInterpretation.openWorldElements(interpretation,element);
59651 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59652 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59653 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
59654 neg find scopeDisallowsNewEGenericType_class(problem, interpretation);
59655 neg find isPrimitive(element);
59656} or
59657{ find mustInstanceOfEGenericType_class(problem,interpretation,element); }
59658/**
59659 * An element must be an instance of type "ETypeParameter class".
59660 */
59661private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59662 Type.name(type,"ETypeParameter class");
59663 find directInstanceOf(problem,interpretation,element,type);
59664}
59665private pattern scopeDisallowsNewETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation) {
59666 find interpretation(problem,interpretation);
59667 PartialInterpretation.scopes(interpretation,scope);
59668 Scope.targetTypeInterpretation(scope,typeInterpretation);
59669 Scope.maxNewElements(scope,0);
59670 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59671 Type.name(type,"ETypeParameter class");
59672}
59673
59674/**
59675 * An element may be an instance of type "ETypeParameter class".
59676 */
59677private pattern mayInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59678{
59679 find interpretation(problem,interpretation);
59680 PartialInterpretation.newElements(interpretation,element);
59681 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59682 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59683 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59684 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59685 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59686 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59687 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59688 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59689 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
59690 neg find isPrimitive(element);
59691} or {
59692 find interpretation(problem,interpretation);
59693 PartialInterpretation.openWorldElements(interpretation,element);
59694 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59695 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59696 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59697 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59698 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59699 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59700 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59701 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59702 neg find scopeDisallowsNewETypeParameter_class(problem, interpretation);
59703 neg find isPrimitive(element);
59704} or
59705{ find mustInstanceOfETypeParameter_class(problem,interpretation,element); }
59706/**
59707 * An element must be an instance of type "EModelElement class DefinedPart".
59708 */
59709private pattern mustInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59710 Type.name(type,"EModelElement class DefinedPart");
59711 find directInstanceOf(problem,interpretation,element,type);
59712}
59713private pattern scopeDisallowsNewEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59714 find interpretation(problem,interpretation);
59715 PartialInterpretation.scopes(interpretation,scope);
59716 Scope.targetTypeInterpretation(scope,typeInterpretation);
59717 Scope.maxNewElements(scope,0);
59718 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59719 Type.name(type,"EModelElement class DefinedPart");
59720}
59721
59722/**
59723 * An element may be an instance of type "EModelElement class DefinedPart".
59724 */
59725private pattern mayInstanceOfEModelElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59726{ find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,element); }
59727/**
59728 * An element must be an instance of type "EModelElement class UndefinedPart".
59729 */
59730private pattern mustInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59731 Type.name(type,"EModelElement class UndefinedPart");
59732 find directInstanceOf(problem,interpretation,element,type);
59733}
59734private pattern scopeDisallowsNewEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59735 find interpretation(problem,interpretation);
59736 PartialInterpretation.scopes(interpretation,scope);
59737 Scope.targetTypeInterpretation(scope,typeInterpretation);
59738 Scope.maxNewElements(scope,0);
59739 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59740 Type.name(type,"EModelElement class UndefinedPart");
59741}
59742
59743/**
59744 * An element may be an instance of type "EModelElement class UndefinedPart".
59745 */
59746private pattern mayInstanceOfEModelElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59747{
59748 find interpretation(problem,interpretation);
59749 PartialInterpretation.newElements(interpretation,element);
59750 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59751 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59752 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59753 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59754 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59755 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
59756 neg find isPrimitive(element);
59757} or {
59758 find interpretation(problem,interpretation);
59759 PartialInterpretation.openWorldElements(interpretation,element);
59760 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59761 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59762 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59763 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59764 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
59765 neg find scopeDisallowsNewEModelElement_class_UndefinedPart(problem, interpretation);
59766 neg find isPrimitive(element);
59767} or
59768{ find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,element); }
59769/**
59770 * An element must be an instance of type "ENamedElement class DefinedPart".
59771 */
59772private pattern mustInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59773 Type.name(type,"ENamedElement class DefinedPart");
59774 find directInstanceOf(problem,interpretation,element,type);
59775}
59776private pattern scopeDisallowsNewENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59777 find interpretation(problem,interpretation);
59778 PartialInterpretation.scopes(interpretation,scope);
59779 Scope.targetTypeInterpretation(scope,typeInterpretation);
59780 Scope.maxNewElements(scope,0);
59781 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59782 Type.name(type,"ENamedElement class DefinedPart");
59783}
59784
59785/**
59786 * An element may be an instance of type "ENamedElement class DefinedPart".
59787 */
59788private pattern mayInstanceOfENamedElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59789{ find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,element); }
59790/**
59791 * An element must be an instance of type "ENamedElement class UndefinedPart".
59792 */
59793private pattern mustInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59794 Type.name(type,"ENamedElement class UndefinedPart");
59795 find directInstanceOf(problem,interpretation,element,type);
59796}
59797private pattern scopeDisallowsNewENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59798 find interpretation(problem,interpretation);
59799 PartialInterpretation.scopes(interpretation,scope);
59800 Scope.targetTypeInterpretation(scope,typeInterpretation);
59801 Scope.maxNewElements(scope,0);
59802 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59803 Type.name(type,"ENamedElement class UndefinedPart");
59804}
59805
59806/**
59807 * An element may be an instance of type "ENamedElement class UndefinedPart".
59808 */
59809private pattern mayInstanceOfENamedElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59810{
59811 find interpretation(problem,interpretation);
59812 PartialInterpretation.newElements(interpretation,element);
59813 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59814 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59815 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59816 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59817 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59818 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59819 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59820 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59821 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59822 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
59823 neg find isPrimitive(element);
59824} or {
59825 find interpretation(problem,interpretation);
59826 PartialInterpretation.openWorldElements(interpretation,element);
59827 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59828 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59829 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59830 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59831 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59832 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59833 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59834 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59835 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
59836 neg find scopeDisallowsNewENamedElement_class_UndefinedPart(problem, interpretation);
59837 neg find isPrimitive(element);
59838} or
59839{ find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,element); }
59840/**
59841 * An element must be an instance of type "EPackage class DefinedPart".
59842 */
59843private pattern mustInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59844 Type.name(type,"EPackage class DefinedPart");
59845 find directInstanceOf(problem,interpretation,element,type);
59846}
59847private pattern scopeDisallowsNewEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59848 find interpretation(problem,interpretation);
59849 PartialInterpretation.scopes(interpretation,scope);
59850 Scope.targetTypeInterpretation(scope,typeInterpretation);
59851 Scope.maxNewElements(scope,0);
59852 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59853 Type.name(type,"EPackage class DefinedPart");
59854}
59855
59856/**
59857 * An element may be an instance of type "EPackage class DefinedPart".
59858 */
59859private pattern mayInstanceOfEPackage_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59860{ find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,element); }
59861/**
59862 * An element must be an instance of type "EPackage class UndefinedPart".
59863 */
59864private pattern mustInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
59865 Type.name(type,"EPackage class UndefinedPart");
59866 find directInstanceOf(problem,interpretation,element,type);
59867}
59868private pattern scopeDisallowsNewEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) {
59869 find interpretation(problem,interpretation);
59870 PartialInterpretation.scopes(interpretation,scope);
59871 Scope.targetTypeInterpretation(scope,typeInterpretation);
59872 Scope.maxNewElements(scope,0);
59873 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
59874 Type.name(type,"EPackage class UndefinedPart");
59875}
59876
59877/**
59878 * An element may be an instance of type "EPackage class UndefinedPart".
59879 */
59880private pattern mayInstanceOfEPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
59881{
59882 find interpretation(problem,interpretation);
59883 PartialInterpretation.newElements(interpretation,element);
59884 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59885 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59886 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59887 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59888 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59889 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59890 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59891 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59892 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
59893 neg find isPrimitive(element);
59894} or {
59895 find interpretation(problem,interpretation);
59896 PartialInterpretation.openWorldElements(interpretation,element);
59897 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
59898 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
59899 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
59900 neg find mustInstanceOfEObject_class(problem,interpretation,element);
59901 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
59902 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
59903 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
59904 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
59905 neg find scopeDisallowsNewEPackage_class_UndefinedPart(problem, interpretation);
59906 neg find isPrimitive(element);
59907} or
59908{ find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element); }
59909
59910//////////
59911// 1.2 Relation Declaration Indexers
59912//////////
59913/**
59914 * Matcher for detecting tuples t where []eAttributeType reference EAttribute(source,target)
59915 */
59916private pattern mustInRelationeAttributeType_reference_EAttribute(
59917 problem:LogicProblem, interpretation:PartialInterpretation,
59918 source: DefinedElement, target:DefinedElement)
59919{
59920 find interpretation(problem,interpretation);
59921 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
59922 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
59923 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
59924 BinaryElementRelationLink.param1(link,source);
59925 BinaryElementRelationLink.param2(link,target);
59926}
59927/**
59928 * Matcher for detecting tuples t where <>eAttributeType reference EAttribute(source,target)
59929 */
59930private pattern mayInRelationeAttributeType_reference_EAttribute(
59931 problem:LogicProblem, interpretation:PartialInterpretation,
59932 source: DefinedElement, target:DefinedElement)
59933{
59934 find interpretation(problem,interpretation);
59935 // The two endpoint of the link have to exist
59936 find mayExist(problem, interpretation, source);
59937 find mayExist(problem, interpretation, target);
59938 // Type consistency
59939 find mayInstanceOfEAttribute_class(problem,interpretation,source);
59940 find mayInstanceOfEDataType_class(problem,interpretation,target);
59941 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
59942 // the upper bound of the multiplicity should be considered.
59943 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,_);
59944 check(numberOfExistingReferences < 1);
59945} or {
59946 find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,source,target);
59947}
59948/**
59949 * Matcher for detecting tuples t where []details reference EAnnotation(source,target)
59950 */
59951private pattern mustInRelationdetails_reference_EAnnotation(
59952 problem:LogicProblem, interpretation:PartialInterpretation,
59953 source: DefinedElement, target:DefinedElement)
59954{
59955 find interpretation(problem,interpretation);
59956 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
59957 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"details reference EAnnotation");
59958 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
59959 BinaryElementRelationLink.param1(link,source);
59960 BinaryElementRelationLink.param2(link,target);
59961}
59962/**
59963 * Matcher for detecting tuples t where <>details reference EAnnotation(source,target)
59964 */
59965private pattern mayInRelationdetails_reference_EAnnotation(
59966 problem:LogicProblem, interpretation:PartialInterpretation,
59967 source: DefinedElement, target:DefinedElement)
59968{
59969 find interpretation(problem,interpretation);
59970 // The two endpoint of the link have to exist
59971 find mayExist(problem, interpretation, source);
59972 find mayExist(problem, interpretation, target);
59973 // Type consistency
59974 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
59975 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,target);
59976 // The reference is containment, then a new reference cannot be create if:
59977 // 1. Multiple parents
59978 neg find mustContains4(problem,interpretation,_,target);
59979 // 2. Circle in the containment hierarchy
59980 neg find mustTransitiveContains(source,target);
59981} or {
59982 find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target);
59983}
59984/**
59985 * Matcher for detecting tuples t where []eModelElement reference EAnnotation(source,target)
59986 */
59987private pattern mustInRelationeModelElement_reference_EAnnotation(
59988 problem:LogicProblem, interpretation:PartialInterpretation,
59989 source: DefinedElement, target:DefinedElement)
59990{
59991 find interpretation(problem,interpretation);
59992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
59993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eModelElement reference EAnnotation");
59994 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
59995 BinaryElementRelationLink.param1(link,source);
59996 BinaryElementRelationLink.param2(link,target);
59997}
59998/**
59999 * Matcher for detecting tuples t where <>eModelElement reference EAnnotation(source,target)
60000 */
60001private pattern mayInRelationeModelElement_reference_EAnnotation(
60002 problem:LogicProblem, interpretation:PartialInterpretation,
60003 source: DefinedElement, target:DefinedElement)
60004{
60005 find interpretation(problem,interpretation);
60006 // The two endpoint of the link have to exist
60007 find mayExist(problem, interpretation, source);
60008 find mayExist(problem, interpretation, target);
60009 // Type consistency
60010 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
60011 find mayInstanceOfEModelElement_class(problem,interpretation,target);
60012 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60013 // the upper bound of the multiplicity should be considered.
60014 numberOfExistingReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,_);
60015 check(numberOfExistingReferences < 1);
60016 // The eOpposite of the reference is containment, then a referene cannot be created if
60017 // 1. Multiple parents
60018 neg find mustContains4(problem,interpretation,source,_);
60019 // 2. Circle in the containment hierarchy
60020 neg find mustTransitiveContains(source,target);
60021} or {
60022 find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,source,target);
60023}
60024/**
60025 * Matcher for detecting tuples t where []contents reference EAnnotation(source,target)
60026 */
60027private pattern mustInRelationcontents_reference_EAnnotation(
60028 problem:LogicProblem, interpretation:PartialInterpretation,
60029 source: DefinedElement, target:DefinedElement)
60030{
60031 find interpretation(problem,interpretation);
60032 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60033 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"contents reference EAnnotation");
60034 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60035 BinaryElementRelationLink.param1(link,source);
60036 BinaryElementRelationLink.param2(link,target);
60037}
60038/**
60039 * Matcher for detecting tuples t where <>contents reference EAnnotation(source,target)
60040 */
60041private pattern mayInRelationcontents_reference_EAnnotation(
60042 problem:LogicProblem, interpretation:PartialInterpretation,
60043 source: DefinedElement, target:DefinedElement)
60044{
60045 find interpretation(problem,interpretation);
60046 // The two endpoint of the link have to exist
60047 find mayExist(problem, interpretation, source);
60048 find mayExist(problem, interpretation, target);
60049 // Type consistency
60050 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
60051 find mayInstanceOfEObject_class(problem,interpretation,target);
60052 // The reference is containment, then a new reference cannot be create if:
60053 // 1. Multiple parents
60054 neg find mustContains4(problem,interpretation,_,target);
60055 // 2. Circle in the containment hierarchy
60056 neg find mustTransitiveContains(source,target);
60057} or {
60058 find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target);
60059}
60060/**
60061 * Matcher for detecting tuples t where []references reference EAnnotation(source,target)
60062 */
60063private pattern mustInRelationreferences_reference_EAnnotation(
60064 problem:LogicProblem, interpretation:PartialInterpretation,
60065 source: DefinedElement, target:DefinedElement)
60066{
60067 find interpretation(problem,interpretation);
60068 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60069 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
60070 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60071 BinaryElementRelationLink.param1(link,source);
60072 BinaryElementRelationLink.param2(link,target);
60073}
60074/**
60075 * Matcher for detecting tuples t where <>references reference EAnnotation(source,target)
60076 */
60077private pattern mayInRelationreferences_reference_EAnnotation(
60078 problem:LogicProblem, interpretation:PartialInterpretation,
60079 source: DefinedElement, target:DefinedElement)
60080{
60081 find interpretation(problem,interpretation);
60082 // The two endpoint of the link have to exist
60083 find mayExist(problem, interpretation, source);
60084 find mayExist(problem, interpretation, target);
60085 // Type consistency
60086 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
60087 find mayInstanceOfEObject_class(problem,interpretation,target);
60088} or {
60089 find mustInRelationreferences_reference_EAnnotation(problem,interpretation,source,target);
60090}
60091/**
60092 * Matcher for detecting tuples t where []eSuperTypes reference EClass(source,target)
60093 */
60094private pattern mustInRelationeSuperTypes_reference_EClass(
60095 problem:LogicProblem, interpretation:PartialInterpretation,
60096 source: DefinedElement, target:DefinedElement)
60097{
60098 find interpretation(problem,interpretation);
60099 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60100 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
60101 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60102 BinaryElementRelationLink.param1(link,source);
60103 BinaryElementRelationLink.param2(link,target);
60104}
60105/**
60106 * Matcher for detecting tuples t where <>eSuperTypes reference EClass(source,target)
60107 */
60108private pattern mayInRelationeSuperTypes_reference_EClass(
60109 problem:LogicProblem, interpretation:PartialInterpretation,
60110 source: DefinedElement, target:DefinedElement)
60111{
60112 find interpretation(problem,interpretation);
60113 // The two endpoint of the link have to exist
60114 find mayExist(problem, interpretation, source);
60115 find mayExist(problem, interpretation, target);
60116 // Type consistency
60117 find mayInstanceOfEClass_class(problem,interpretation,source);
60118 find mayInstanceOfEClass_class(problem,interpretation,target);
60119} or {
60120 find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,source,target);
60121}
60122/**
60123 * Matcher for detecting tuples t where []eOperations reference EClass(source,target)
60124 */
60125private pattern mustInRelationeOperations_reference_EClass(
60126 problem:LogicProblem, interpretation:PartialInterpretation,
60127 source: DefinedElement, target:DefinedElement)
60128{
60129 find interpretation(problem,interpretation);
60130 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60131 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperations reference EClass");
60132 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60133 BinaryElementRelationLink.param1(link,source);
60134 BinaryElementRelationLink.param2(link,target);
60135}
60136/**
60137 * Matcher for detecting tuples t where <>eOperations reference EClass(source,target)
60138 */
60139private pattern mayInRelationeOperations_reference_EClass(
60140 problem:LogicProblem, interpretation:PartialInterpretation,
60141 source: DefinedElement, target:DefinedElement)
60142{
60143 find interpretation(problem,interpretation);
60144 // The two endpoint of the link have to exist
60145 find mayExist(problem, interpretation, source);
60146 find mayExist(problem, interpretation, target);
60147 // Type consistency
60148 find mayInstanceOfEClass_class(problem,interpretation,source);
60149 find mayInstanceOfEOperation_class(problem,interpretation,target);
60150 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60151 // the upper bound of the opposite reference multiplicity should be considered.
60152 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,target,_);
60153 check(numberOfExistingOppositeReferences < 1);
60154 // The reference is containment, then a new reference cannot be create if:
60155 // 1. Multiple parents
60156 neg find mustContains4(problem,interpretation,_,target);
60157 // 2. Circle in the containment hierarchy
60158 neg find mustTransitiveContains(source,target);
60159} or {
60160 find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target);
60161}
60162/**
60163 * Matcher for detecting tuples t where []eAllAttributes reference EClass(source,target)
60164 */
60165private pattern mustInRelationeAllAttributes_reference_EClass(
60166 problem:LogicProblem, interpretation:PartialInterpretation,
60167 source: DefinedElement, target:DefinedElement)
60168{
60169 find interpretation(problem,interpretation);
60170 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60171 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
60172 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60173 BinaryElementRelationLink.param1(link,source);
60174 BinaryElementRelationLink.param2(link,target);
60175}
60176/**
60177 * Matcher for detecting tuples t where <>eAllAttributes reference EClass(source,target)
60178 */
60179private pattern mayInRelationeAllAttributes_reference_EClass(
60180 problem:LogicProblem, interpretation:PartialInterpretation,
60181 source: DefinedElement, target:DefinedElement)
60182{
60183 find interpretation(problem,interpretation);
60184 // The two endpoint of the link have to exist
60185 find mayExist(problem, interpretation, source);
60186 find mayExist(problem, interpretation, target);
60187 // Type consistency
60188 find mayInstanceOfEClass_class(problem,interpretation,source);
60189 find mayInstanceOfEAttribute_class(problem,interpretation,target);
60190} or {
60191 find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,source,target);
60192}
60193/**
60194 * Matcher for detecting tuples t where []eAllReferences reference EClass(source,target)
60195 */
60196private pattern mustInRelationeAllReferences_reference_EClass(
60197 problem:LogicProblem, interpretation:PartialInterpretation,
60198 source: DefinedElement, target:DefinedElement)
60199{
60200 find interpretation(problem,interpretation);
60201 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60202 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
60203 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60204 BinaryElementRelationLink.param1(link,source);
60205 BinaryElementRelationLink.param2(link,target);
60206}
60207/**
60208 * Matcher for detecting tuples t where <>eAllReferences reference EClass(source,target)
60209 */
60210private pattern mayInRelationeAllReferences_reference_EClass(
60211 problem:LogicProblem, interpretation:PartialInterpretation,
60212 source: DefinedElement, target:DefinedElement)
60213{
60214 find interpretation(problem,interpretation);
60215 // The two endpoint of the link have to exist
60216 find mayExist(problem, interpretation, source);
60217 find mayExist(problem, interpretation, target);
60218 // Type consistency
60219 find mayInstanceOfEClass_class(problem,interpretation,source);
60220 find mayInstanceOfEReference_class(problem,interpretation,target);
60221} or {
60222 find mustInRelationeAllReferences_reference_EClass(problem,interpretation,source,target);
60223}
60224/**
60225 * Matcher for detecting tuples t where []eReferences reference EClass(source,target)
60226 */
60227private pattern mustInRelationeReferences_reference_EClass(
60228 problem:LogicProblem, interpretation:PartialInterpretation,
60229 source: DefinedElement, target:DefinedElement)
60230{
60231 find interpretation(problem,interpretation);
60232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
60234 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60235 BinaryElementRelationLink.param1(link,source);
60236 BinaryElementRelationLink.param2(link,target);
60237}
60238/**
60239 * Matcher for detecting tuples t where <>eReferences reference EClass(source,target)
60240 */
60241private pattern mayInRelationeReferences_reference_EClass(
60242 problem:LogicProblem, interpretation:PartialInterpretation,
60243 source: DefinedElement, target:DefinedElement)
60244{
60245 find interpretation(problem,interpretation);
60246 // The two endpoint of the link have to exist
60247 find mayExist(problem, interpretation, source);
60248 find mayExist(problem, interpretation, target);
60249 // Type consistency
60250 find mayInstanceOfEClass_class(problem,interpretation,source);
60251 find mayInstanceOfEReference_class(problem,interpretation,target);
60252} or {
60253 find mustInRelationeReferences_reference_EClass(problem,interpretation,source,target);
60254}
60255/**
60256 * Matcher for detecting tuples t where []eAttributes reference EClass(source,target)
60257 */
60258private pattern mustInRelationeAttributes_reference_EClass(
60259 problem:LogicProblem, interpretation:PartialInterpretation,
60260 source: DefinedElement, target:DefinedElement)
60261{
60262 find interpretation(problem,interpretation);
60263 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60264 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
60265 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60266 BinaryElementRelationLink.param1(link,source);
60267 BinaryElementRelationLink.param2(link,target);
60268}
60269/**
60270 * Matcher for detecting tuples t where <>eAttributes reference EClass(source,target)
60271 */
60272private pattern mayInRelationeAttributes_reference_EClass(
60273 problem:LogicProblem, interpretation:PartialInterpretation,
60274 source: DefinedElement, target:DefinedElement)
60275{
60276 find interpretation(problem,interpretation);
60277 // The two endpoint of the link have to exist
60278 find mayExist(problem, interpretation, source);
60279 find mayExist(problem, interpretation, target);
60280 // Type consistency
60281 find mayInstanceOfEClass_class(problem,interpretation,source);
60282 find mayInstanceOfEAttribute_class(problem,interpretation,target);
60283} or {
60284 find mustInRelationeAttributes_reference_EClass(problem,interpretation,source,target);
60285}
60286/**
60287 * Matcher for detecting tuples t where []eAllContainments reference EClass(source,target)
60288 */
60289private pattern mustInRelationeAllContainments_reference_EClass(
60290 problem:LogicProblem, interpretation:PartialInterpretation,
60291 source: DefinedElement, target:DefinedElement)
60292{
60293 find interpretation(problem,interpretation);
60294 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60295 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
60296 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60297 BinaryElementRelationLink.param1(link,source);
60298 BinaryElementRelationLink.param2(link,target);
60299}
60300/**
60301 * Matcher for detecting tuples t where <>eAllContainments reference EClass(source,target)
60302 */
60303private pattern mayInRelationeAllContainments_reference_EClass(
60304 problem:LogicProblem, interpretation:PartialInterpretation,
60305 source: DefinedElement, target:DefinedElement)
60306{
60307 find interpretation(problem,interpretation);
60308 // The two endpoint of the link have to exist
60309 find mayExist(problem, interpretation, source);
60310 find mayExist(problem, interpretation, target);
60311 // Type consistency
60312 find mayInstanceOfEClass_class(problem,interpretation,source);
60313 find mayInstanceOfEReference_class(problem,interpretation,target);
60314} or {
60315 find mustInRelationeAllContainments_reference_EClass(problem,interpretation,source,target);
60316}
60317/**
60318 * Matcher for detecting tuples t where []eAllOperations reference EClass(source,target)
60319 */
60320private pattern mustInRelationeAllOperations_reference_EClass(
60321 problem:LogicProblem, interpretation:PartialInterpretation,
60322 source: DefinedElement, target:DefinedElement)
60323{
60324 find interpretation(problem,interpretation);
60325 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60326 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
60327 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60328 BinaryElementRelationLink.param1(link,source);
60329 BinaryElementRelationLink.param2(link,target);
60330}
60331/**
60332 * Matcher for detecting tuples t where <>eAllOperations reference EClass(source,target)
60333 */
60334private pattern mayInRelationeAllOperations_reference_EClass(
60335 problem:LogicProblem, interpretation:PartialInterpretation,
60336 source: DefinedElement, target:DefinedElement)
60337{
60338 find interpretation(problem,interpretation);
60339 // The two endpoint of the link have to exist
60340 find mayExist(problem, interpretation, source);
60341 find mayExist(problem, interpretation, target);
60342 // Type consistency
60343 find mayInstanceOfEClass_class(problem,interpretation,source);
60344 find mayInstanceOfEOperation_class(problem,interpretation,target);
60345} or {
60346 find mustInRelationeAllOperations_reference_EClass(problem,interpretation,source,target);
60347}
60348/**
60349 * Matcher for detecting tuples t where []eAllStructuralFeatures reference EClass(source,target)
60350 */
60351private pattern mustInRelationeAllStructuralFeatures_reference_EClass(
60352 problem:LogicProblem, interpretation:PartialInterpretation,
60353 source: DefinedElement, target:DefinedElement)
60354{
60355 find interpretation(problem,interpretation);
60356 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60357 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
60358 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60359 BinaryElementRelationLink.param1(link,source);
60360 BinaryElementRelationLink.param2(link,target);
60361}
60362/**
60363 * Matcher for detecting tuples t where <>eAllStructuralFeatures reference EClass(source,target)
60364 */
60365private pattern mayInRelationeAllStructuralFeatures_reference_EClass(
60366 problem:LogicProblem, interpretation:PartialInterpretation,
60367 source: DefinedElement, target:DefinedElement)
60368{
60369 find interpretation(problem,interpretation);
60370 // The two endpoint of the link have to exist
60371 find mayExist(problem, interpretation, source);
60372 find mayExist(problem, interpretation, target);
60373 // Type consistency
60374 find mayInstanceOfEClass_class(problem,interpretation,source);
60375 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
60376} or {
60377 find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,source,target);
60378}
60379/**
60380 * Matcher for detecting tuples t where []eAllSuperTypes reference EClass(source,target)
60381 */
60382private pattern mustInRelationeAllSuperTypes_reference_EClass(
60383 problem:LogicProblem, interpretation:PartialInterpretation,
60384 source: DefinedElement, target:DefinedElement)
60385{
60386 find interpretation(problem,interpretation);
60387 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60388 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
60389 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60390 BinaryElementRelationLink.param1(link,source);
60391 BinaryElementRelationLink.param2(link,target);
60392}
60393/**
60394 * Matcher for detecting tuples t where <>eAllSuperTypes reference EClass(source,target)
60395 */
60396private pattern mayInRelationeAllSuperTypes_reference_EClass(
60397 problem:LogicProblem, interpretation:PartialInterpretation,
60398 source: DefinedElement, target:DefinedElement)
60399{
60400 find interpretation(problem,interpretation);
60401 // The two endpoint of the link have to exist
60402 find mayExist(problem, interpretation, source);
60403 find mayExist(problem, interpretation, target);
60404 // Type consistency
60405 find mayInstanceOfEClass_class(problem,interpretation,source);
60406 find mayInstanceOfEClass_class(problem,interpretation,target);
60407} or {
60408 find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,source,target);
60409}
60410/**
60411 * Matcher for detecting tuples t where []eIDAttribute reference EClass(source,target)
60412 */
60413private pattern mustInRelationeIDAttribute_reference_EClass(
60414 problem:LogicProblem, interpretation:PartialInterpretation,
60415 source: DefinedElement, target:DefinedElement)
60416{
60417 find interpretation(problem,interpretation);
60418 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60419 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
60420 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60421 BinaryElementRelationLink.param1(link,source);
60422 BinaryElementRelationLink.param2(link,target);
60423}
60424/**
60425 * Matcher for detecting tuples t where <>eIDAttribute reference EClass(source,target)
60426 */
60427private pattern mayInRelationeIDAttribute_reference_EClass(
60428 problem:LogicProblem, interpretation:PartialInterpretation,
60429 source: DefinedElement, target:DefinedElement)
60430{
60431 find interpretation(problem,interpretation);
60432 // The two endpoint of the link have to exist
60433 find mayExist(problem, interpretation, source);
60434 find mayExist(problem, interpretation, target);
60435 // Type consistency
60436 find mayInstanceOfEClass_class(problem,interpretation,source);
60437 find mayInstanceOfEAttribute_class(problem,interpretation,target);
60438 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60439 // the upper bound of the multiplicity should be considered.
60440 numberOfExistingReferences == count find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,_);
60441 check(numberOfExistingReferences < 1);
60442} or {
60443 find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,source,target);
60444}
60445/**
60446 * Matcher for detecting tuples t where []eStructuralFeatures reference EClass(source,target)
60447 */
60448private pattern mustInRelationeStructuralFeatures_reference_EClass(
60449 problem:LogicProblem, interpretation:PartialInterpretation,
60450 source: DefinedElement, target:DefinedElement)
60451{
60452 find interpretation(problem,interpretation);
60453 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60454 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eStructuralFeatures reference EClass");
60455 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60456 BinaryElementRelationLink.param1(link,source);
60457 BinaryElementRelationLink.param2(link,target);
60458}
60459/**
60460 * Matcher for detecting tuples t where <>eStructuralFeatures reference EClass(source,target)
60461 */
60462private pattern mayInRelationeStructuralFeatures_reference_EClass(
60463 problem:LogicProblem, interpretation:PartialInterpretation,
60464 source: DefinedElement, target:DefinedElement)
60465{
60466 find interpretation(problem,interpretation);
60467 // The two endpoint of the link have to exist
60468 find mayExist(problem, interpretation, source);
60469 find mayExist(problem, interpretation, target);
60470 // Type consistency
60471 find mayInstanceOfEClass_class(problem,interpretation,source);
60472 find mayInstanceOfEStructuralFeature_class(problem,interpretation,target);
60473 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60474 // the upper bound of the opposite reference multiplicity should be considered.
60475 numberOfExistingOppositeReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,target,_);
60476 check(numberOfExistingOppositeReferences < 1);
60477 // The reference is containment, then a new reference cannot be create if:
60478 // 1. Multiple parents
60479 neg find mustContains4(problem,interpretation,_,target);
60480 // 2. Circle in the containment hierarchy
60481 neg find mustTransitiveContains(source,target);
60482} or {
60483 find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target);
60484}
60485/**
60486 * Matcher for detecting tuples t where []eGenericSuperTypes reference EClass(source,target)
60487 */
60488private pattern mustInRelationeGenericSuperTypes_reference_EClass(
60489 problem:LogicProblem, interpretation:PartialInterpretation,
60490 source: DefinedElement, target:DefinedElement)
60491{
60492 find interpretation(problem,interpretation);
60493 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60494 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericSuperTypes reference EClass");
60495 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60496 BinaryElementRelationLink.param1(link,source);
60497 BinaryElementRelationLink.param2(link,target);
60498}
60499/**
60500 * Matcher for detecting tuples t where <>eGenericSuperTypes reference EClass(source,target)
60501 */
60502private pattern mayInRelationeGenericSuperTypes_reference_EClass(
60503 problem:LogicProblem, interpretation:PartialInterpretation,
60504 source: DefinedElement, target:DefinedElement)
60505{
60506 find interpretation(problem,interpretation);
60507 // The two endpoint of the link have to exist
60508 find mayExist(problem, interpretation, source);
60509 find mayExist(problem, interpretation, target);
60510 // Type consistency
60511 find mayInstanceOfEClass_class(problem,interpretation,source);
60512 find mayInstanceOfEGenericType_class(problem,interpretation,target);
60513 // The reference is containment, then a new reference cannot be create if:
60514 // 1. Multiple parents
60515 neg find mustContains4(problem,interpretation,_,target);
60516 // 2. Circle in the containment hierarchy
60517 neg find mustTransitiveContains(source,target);
60518} or {
60519 find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
60520}
60521/**
60522 * Matcher for detecting tuples t where []eAllGenericSuperTypes reference EClass(source,target)
60523 */
60524private pattern mustInRelationeAllGenericSuperTypes_reference_EClass(
60525 problem:LogicProblem, interpretation:PartialInterpretation,
60526 source: DefinedElement, target:DefinedElement)
60527{
60528 find interpretation(problem,interpretation);
60529 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60530 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
60531 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60532 BinaryElementRelationLink.param1(link,source);
60533 BinaryElementRelationLink.param2(link,target);
60534}
60535/**
60536 * Matcher for detecting tuples t where <>eAllGenericSuperTypes reference EClass(source,target)
60537 */
60538private pattern mayInRelationeAllGenericSuperTypes_reference_EClass(
60539 problem:LogicProblem, interpretation:PartialInterpretation,
60540 source: DefinedElement, target:DefinedElement)
60541{
60542 find interpretation(problem,interpretation);
60543 // The two endpoint of the link have to exist
60544 find mayExist(problem, interpretation, source);
60545 find mayExist(problem, interpretation, target);
60546 // Type consistency
60547 find mayInstanceOfEClass_class(problem,interpretation,source);
60548 find mayInstanceOfEGenericType_class(problem,interpretation,target);
60549} or {
60550 find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,source,target);
60551}
60552/**
60553 * Matcher for detecting tuples t where []ePackage reference EClassifier(source,target)
60554 */
60555private pattern mustInRelationePackage_reference_EClassifier(
60556 problem:LogicProblem, interpretation:PartialInterpretation,
60557 source: DefinedElement, target:DefinedElement)
60558{
60559 find interpretation(problem,interpretation);
60560 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60561 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ePackage reference EClassifier");
60562 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60563 BinaryElementRelationLink.param1(link,source);
60564 BinaryElementRelationLink.param2(link,target);
60565}
60566/**
60567 * Matcher for detecting tuples t where <>ePackage reference EClassifier(source,target)
60568 */
60569private pattern mayInRelationePackage_reference_EClassifier(
60570 problem:LogicProblem, interpretation:PartialInterpretation,
60571 source: DefinedElement, target:DefinedElement)
60572{
60573 find interpretation(problem,interpretation);
60574 // The two endpoint of the link have to exist
60575 find mayExist(problem, interpretation, source);
60576 find mayExist(problem, interpretation, target);
60577 // Type consistency
60578 find mayInstanceOfEClassifier_class(problem,interpretation,source);
60579 find mayInstanceOfEPackage_class(problem,interpretation,target);
60580 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60581 // the upper bound of the multiplicity should be considered.
60582 numberOfExistingReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,_);
60583 check(numberOfExistingReferences < 1);
60584 // The eOpposite of the reference is containment, then a referene cannot be created if
60585 // 1. Multiple parents
60586 neg find mustContains4(problem,interpretation,source,_);
60587 // 2. Circle in the containment hierarchy
60588 neg find mustTransitiveContains(source,target);
60589} or {
60590 find mustInRelationePackage_reference_EClassifier(problem,interpretation,source,target);
60591}
60592/**
60593 * Matcher for detecting tuples t where []eTypeParameters reference EClassifier(source,target)
60594 */
60595private pattern mustInRelationeTypeParameters_reference_EClassifier(
60596 problem:LogicProblem, interpretation:PartialInterpretation,
60597 source: DefinedElement, target:DefinedElement)
60598{
60599 find interpretation(problem,interpretation);
60600 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60601 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EClassifier");
60602 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60603 BinaryElementRelationLink.param1(link,source);
60604 BinaryElementRelationLink.param2(link,target);
60605}
60606/**
60607 * Matcher for detecting tuples t where <>eTypeParameters reference EClassifier(source,target)
60608 */
60609private pattern mayInRelationeTypeParameters_reference_EClassifier(
60610 problem:LogicProblem, interpretation:PartialInterpretation,
60611 source: DefinedElement, target:DefinedElement)
60612{
60613 find interpretation(problem,interpretation);
60614 // The two endpoint of the link have to exist
60615 find mayExist(problem, interpretation, source);
60616 find mayExist(problem, interpretation, target);
60617 // Type consistency
60618 find mayInstanceOfEClassifier_class(problem,interpretation,source);
60619 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
60620 // The reference is containment, then a new reference cannot be create if:
60621 // 1. Multiple parents
60622 neg find mustContains4(problem,interpretation,_,target);
60623 // 2. Circle in the containment hierarchy
60624 neg find mustTransitiveContains(source,target);
60625} or {
60626 find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target);
60627}
60628/**
60629 * Matcher for detecting tuples t where []eLiterals reference EEnum(source,target)
60630 */
60631private pattern mustInRelationeLiterals_reference_EEnum(
60632 problem:LogicProblem, interpretation:PartialInterpretation,
60633 source: DefinedElement, target:DefinedElement)
60634{
60635 find interpretation(problem,interpretation);
60636 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60637 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLiterals reference EEnum");
60638 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60639 BinaryElementRelationLink.param1(link,source);
60640 BinaryElementRelationLink.param2(link,target);
60641}
60642/**
60643 * Matcher for detecting tuples t where <>eLiterals reference EEnum(source,target)
60644 */
60645private pattern mayInRelationeLiterals_reference_EEnum(
60646 problem:LogicProblem, interpretation:PartialInterpretation,
60647 source: DefinedElement, target:DefinedElement)
60648{
60649 find interpretation(problem,interpretation);
60650 // The two endpoint of the link have to exist
60651 find mayExist(problem, interpretation, source);
60652 find mayExist(problem, interpretation, target);
60653 // Type consistency
60654 find mayInstanceOfEEnum_class(problem,interpretation,source);
60655 find mayInstanceOfEEnumLiteral_class(problem,interpretation,target);
60656 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60657 // the upper bound of the opposite reference multiplicity should be considered.
60658 numberOfExistingOppositeReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,target,_);
60659 check(numberOfExistingOppositeReferences < 1);
60660 // The reference is containment, then a new reference cannot be create if:
60661 // 1. Multiple parents
60662 neg find mustContains4(problem,interpretation,_,target);
60663 // 2. Circle in the containment hierarchy
60664 neg find mustTransitiveContains(source,target);
60665} or {
60666 find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target);
60667}
60668/**
60669 * Matcher for detecting tuples t where []eEnum reference EEnumLiteral(source,target)
60670 */
60671private pattern mustInRelationeEnum_reference_EEnumLiteral(
60672 problem:LogicProblem, interpretation:PartialInterpretation,
60673 source: DefinedElement, target:DefinedElement)
60674{
60675 find interpretation(problem,interpretation);
60676 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60677 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eEnum reference EEnumLiteral");
60678 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60679 BinaryElementRelationLink.param1(link,source);
60680 BinaryElementRelationLink.param2(link,target);
60681}
60682/**
60683 * Matcher for detecting tuples t where <>eEnum reference EEnumLiteral(source,target)
60684 */
60685private pattern mayInRelationeEnum_reference_EEnumLiteral(
60686 problem:LogicProblem, interpretation:PartialInterpretation,
60687 source: DefinedElement, target:DefinedElement)
60688{
60689 find interpretation(problem,interpretation);
60690 // The two endpoint of the link have to exist
60691 find mayExist(problem, interpretation, source);
60692 find mayExist(problem, interpretation, target);
60693 // Type consistency
60694 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
60695 find mayInstanceOfEEnum_class(problem,interpretation,target);
60696 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60697 // the upper bound of the multiplicity should be considered.
60698 numberOfExistingReferences == count find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,_);
60699 check(numberOfExistingReferences < 1);
60700 // The eOpposite of the reference is containment, then a referene cannot be created if
60701 // 1. Multiple parents
60702 neg find mustContains4(problem,interpretation,source,_);
60703 // 2. Circle in the containment hierarchy
60704 neg find mustTransitiveContains(source,target);
60705} or {
60706 find mustInRelationeEnum_reference_EEnumLiteral(problem,interpretation,source,target);
60707}
60708/**
60709 * Matcher for detecting tuples t where []eAnnotations reference EModelElement(source,target)
60710 */
60711private pattern mustInRelationeAnnotations_reference_EModelElement(
60712 problem:LogicProblem, interpretation:PartialInterpretation,
60713 source: DefinedElement, target:DefinedElement)
60714{
60715 find interpretation(problem,interpretation);
60716 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60717 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAnnotations reference EModelElement");
60718 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60719 BinaryElementRelationLink.param1(link,source);
60720 BinaryElementRelationLink.param2(link,target);
60721}
60722/**
60723 * Matcher for detecting tuples t where <>eAnnotations reference EModelElement(source,target)
60724 */
60725private pattern mayInRelationeAnnotations_reference_EModelElement(
60726 problem:LogicProblem, interpretation:PartialInterpretation,
60727 source: DefinedElement, target:DefinedElement)
60728{
60729 find interpretation(problem,interpretation);
60730 // The two endpoint of the link have to exist
60731 find mayExist(problem, interpretation, source);
60732 find mayExist(problem, interpretation, target);
60733 // Type consistency
60734 find mayInstanceOfEModelElement_class(problem,interpretation,source);
60735 find mayInstanceOfEAnnotation_class(problem,interpretation,target);
60736 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60737 // the upper bound of the opposite reference multiplicity should be considered.
60738 numberOfExistingOppositeReferences == count find mustInRelationeModelElement_reference_EAnnotation(problem,interpretation,target,_);
60739 check(numberOfExistingOppositeReferences < 1);
60740 // The reference is containment, then a new reference cannot be create if:
60741 // 1. Multiple parents
60742 neg find mustContains4(problem,interpretation,_,target);
60743 // 2. Circle in the containment hierarchy
60744 neg find mustTransitiveContains(source,target);
60745} or {
60746 find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target);
60747}
60748/**
60749 * Matcher for detecting tuples t where []eContainingClass reference EOperation(source,target)
60750 */
60751private pattern mustInRelationeContainingClass_reference_EOperation(
60752 problem:LogicProblem, interpretation:PartialInterpretation,
60753 source: DefinedElement, target:DefinedElement)
60754{
60755 find interpretation(problem,interpretation);
60756 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60757 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EOperation");
60758 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60759 BinaryElementRelationLink.param1(link,source);
60760 BinaryElementRelationLink.param2(link,target);
60761}
60762/**
60763 * Matcher for detecting tuples t where <>eContainingClass reference EOperation(source,target)
60764 */
60765private pattern mayInRelationeContainingClass_reference_EOperation(
60766 problem:LogicProblem, interpretation:PartialInterpretation,
60767 source: DefinedElement, target:DefinedElement)
60768{
60769 find interpretation(problem,interpretation);
60770 // The two endpoint of the link have to exist
60771 find mayExist(problem, interpretation, source);
60772 find mayExist(problem, interpretation, target);
60773 // Type consistency
60774 find mayInstanceOfEOperation_class(problem,interpretation,source);
60775 find mayInstanceOfEClass_class(problem,interpretation,target);
60776 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
60777 // the upper bound of the multiplicity should be considered.
60778 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,_);
60779 check(numberOfExistingReferences < 1);
60780 // The eOpposite of the reference is containment, then a referene cannot be created if
60781 // 1. Multiple parents
60782 neg find mustContains4(problem,interpretation,source,_);
60783 // 2. Circle in the containment hierarchy
60784 neg find mustTransitiveContains(source,target);
60785} or {
60786 find mustInRelationeContainingClass_reference_EOperation(problem,interpretation,source,target);
60787}
60788/**
60789 * Matcher for detecting tuples t where []eTypeParameters reference EOperation(source,target)
60790 */
60791private pattern mustInRelationeTypeParameters_reference_EOperation(
60792 problem:LogicProblem, interpretation:PartialInterpretation,
60793 source: DefinedElement, target:DefinedElement)
60794{
60795 find interpretation(problem,interpretation);
60796 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60797 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameters reference EOperation");
60798 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60799 BinaryElementRelationLink.param1(link,source);
60800 BinaryElementRelationLink.param2(link,target);
60801}
60802/**
60803 * Matcher for detecting tuples t where <>eTypeParameters reference EOperation(source,target)
60804 */
60805private pattern mayInRelationeTypeParameters_reference_EOperation(
60806 problem:LogicProblem, interpretation:PartialInterpretation,
60807 source: DefinedElement, target:DefinedElement)
60808{
60809 find interpretation(problem,interpretation);
60810 // The two endpoint of the link have to exist
60811 find mayExist(problem, interpretation, source);
60812 find mayExist(problem, interpretation, target);
60813 // Type consistency
60814 find mayInstanceOfEOperation_class(problem,interpretation,source);
60815 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
60816 // The reference is containment, then a new reference cannot be create if:
60817 // 1. Multiple parents
60818 neg find mustContains4(problem,interpretation,_,target);
60819 // 2. Circle in the containment hierarchy
60820 neg find mustTransitiveContains(source,target);
60821} or {
60822 find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target);
60823}
60824/**
60825 * Matcher for detecting tuples t where []eParameters reference EOperation(source,target)
60826 */
60827private pattern mustInRelationeParameters_reference_EOperation(
60828 problem:LogicProblem, interpretation:PartialInterpretation,
60829 source: DefinedElement, target:DefinedElement)
60830{
60831 find interpretation(problem,interpretation);
60832 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60833 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eParameters reference EOperation");
60834 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60835 BinaryElementRelationLink.param1(link,source);
60836 BinaryElementRelationLink.param2(link,target);
60837}
60838/**
60839 * Matcher for detecting tuples t where <>eParameters reference EOperation(source,target)
60840 */
60841private pattern mayInRelationeParameters_reference_EOperation(
60842 problem:LogicProblem, interpretation:PartialInterpretation,
60843 source: DefinedElement, target:DefinedElement)
60844{
60845 find interpretation(problem,interpretation);
60846 // The two endpoint of the link have to exist
60847 find mayExist(problem, interpretation, source);
60848 find mayExist(problem, interpretation, target);
60849 // Type consistency
60850 find mayInstanceOfEOperation_class(problem,interpretation,source);
60851 find mayInstanceOfEParameter_class(problem,interpretation,target);
60852 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60853 // the upper bound of the opposite reference multiplicity should be considered.
60854 numberOfExistingOppositeReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,target,_);
60855 check(numberOfExistingOppositeReferences < 1);
60856 // The reference is containment, then a new reference cannot be create if:
60857 // 1. Multiple parents
60858 neg find mustContains4(problem,interpretation,_,target);
60859 // 2. Circle in the containment hierarchy
60860 neg find mustTransitiveContains(source,target);
60861} or {
60862 find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target);
60863}
60864/**
60865 * Matcher for detecting tuples t where []eExceptions reference EOperation(source,target)
60866 */
60867private pattern mustInRelationeExceptions_reference_EOperation(
60868 problem:LogicProblem, interpretation:PartialInterpretation,
60869 source: DefinedElement, target:DefinedElement)
60870{
60871 find interpretation(problem,interpretation);
60872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
60874 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60875 BinaryElementRelationLink.param1(link,source);
60876 BinaryElementRelationLink.param2(link,target);
60877}
60878/**
60879 * Matcher for detecting tuples t where <>eExceptions reference EOperation(source,target)
60880 */
60881private pattern mayInRelationeExceptions_reference_EOperation(
60882 problem:LogicProblem, interpretation:PartialInterpretation,
60883 source: DefinedElement, target:DefinedElement)
60884{
60885 find interpretation(problem,interpretation);
60886 // The two endpoint of the link have to exist
60887 find mayExist(problem, interpretation, source);
60888 find mayExist(problem, interpretation, target);
60889 // Type consistency
60890 find mayInstanceOfEOperation_class(problem,interpretation,source);
60891 find mayInstanceOfEClassifier_class(problem,interpretation,target);
60892} or {
60893 find mustInRelationeExceptions_reference_EOperation(problem,interpretation,source,target);
60894}
60895/**
60896 * Matcher for detecting tuples t where []eGenericExceptions reference EOperation(source,target)
60897 */
60898private pattern mustInRelationeGenericExceptions_reference_EOperation(
60899 problem:LogicProblem, interpretation:PartialInterpretation,
60900 source: DefinedElement, target:DefinedElement)
60901{
60902 find interpretation(problem,interpretation);
60903 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60904 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericExceptions reference EOperation");
60905 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60906 BinaryElementRelationLink.param1(link,source);
60907 BinaryElementRelationLink.param2(link,target);
60908}
60909/**
60910 * Matcher for detecting tuples t where <>eGenericExceptions reference EOperation(source,target)
60911 */
60912private pattern mayInRelationeGenericExceptions_reference_EOperation(
60913 problem:LogicProblem, interpretation:PartialInterpretation,
60914 source: DefinedElement, target:DefinedElement)
60915{
60916 find interpretation(problem,interpretation);
60917 // The two endpoint of the link have to exist
60918 find mayExist(problem, interpretation, source);
60919 find mayExist(problem, interpretation, target);
60920 // Type consistency
60921 find mayInstanceOfEOperation_class(problem,interpretation,source);
60922 find mayInstanceOfEGenericType_class(problem,interpretation,target);
60923 // The reference is containment, then a new reference cannot be create if:
60924 // 1. Multiple parents
60925 neg find mustContains4(problem,interpretation,_,target);
60926 // 2. Circle in the containment hierarchy
60927 neg find mustTransitiveContains(source,target);
60928} or {
60929 find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target);
60930}
60931/**
60932 * Matcher for detecting tuples t where []eClassifiers reference EPackage(source,target)
60933 */
60934private pattern mustInRelationeClassifiers_reference_EPackage(
60935 problem:LogicProblem, interpretation:PartialInterpretation,
60936 source: DefinedElement, target:DefinedElement)
60937{
60938 find interpretation(problem,interpretation);
60939 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60940 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifiers reference EPackage");
60941 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60942 BinaryElementRelationLink.param1(link,source);
60943 BinaryElementRelationLink.param2(link,target);
60944}
60945/**
60946 * Matcher for detecting tuples t where <>eClassifiers reference EPackage(source,target)
60947 */
60948private pattern mayInRelationeClassifiers_reference_EPackage(
60949 problem:LogicProblem, interpretation:PartialInterpretation,
60950 source: DefinedElement, target:DefinedElement)
60951{
60952 find interpretation(problem,interpretation);
60953 // The two endpoint of the link have to exist
60954 find mayExist(problem, interpretation, source);
60955 find mayExist(problem, interpretation, target);
60956 // Type consistency
60957 find mayInstanceOfEPackage_class(problem,interpretation,source);
60958 find mayInstanceOfEClassifier_class(problem,interpretation,target);
60959 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
60960 // the upper bound of the opposite reference multiplicity should be considered.
60961 numberOfExistingOppositeReferences == count find mustInRelationePackage_reference_EClassifier(problem,interpretation,target,_);
60962 check(numberOfExistingOppositeReferences < 1);
60963 // The reference is containment, then a new reference cannot be create if:
60964 // 1. Multiple parents
60965 neg find mustContains4(problem,interpretation,_,target);
60966 // 2. Circle in the containment hierarchy
60967 neg find mustTransitiveContains(source,target);
60968} or {
60969 find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target);
60970}
60971/**
60972 * Matcher for detecting tuples t where []eSubpackages reference EPackage(source,target)
60973 */
60974private pattern mustInRelationeSubpackages_reference_EPackage(
60975 problem:LogicProblem, interpretation:PartialInterpretation,
60976 source: DefinedElement, target:DefinedElement)
60977{
60978 find interpretation(problem,interpretation);
60979 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
60980 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSubpackages reference EPackage");
60981 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
60982 BinaryElementRelationLink.param1(link,source);
60983 BinaryElementRelationLink.param2(link,target);
60984}
60985/**
60986 * Matcher for detecting tuples t where <>eSubpackages reference EPackage(source,target)
60987 */
60988private pattern mayInRelationeSubpackages_reference_EPackage(
60989 problem:LogicProblem, interpretation:PartialInterpretation,
60990 source: DefinedElement, target:DefinedElement)
60991{
60992 find interpretation(problem,interpretation);
60993 // The two endpoint of the link have to exist
60994 find mayExist(problem, interpretation, source);
60995 find mayExist(problem, interpretation, target);
60996 // Type consistency
60997 find mayInstanceOfEPackage_class(problem,interpretation,source);
60998 find mayInstanceOfEPackage_class(problem,interpretation,target);
60999 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
61000 // the upper bound of the opposite reference multiplicity should be considered.
61001 numberOfExistingOppositeReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,target,_);
61002 check(numberOfExistingOppositeReferences < 1);
61003 // The reference is containment, then a new reference cannot be create if:
61004 // 1. Multiple parents
61005 neg find mustContains4(problem,interpretation,_,target);
61006 // 2. Circle in the containment hierarchy
61007 neg find mustTransitiveContains(source,target);
61008} or {
61009 find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target);
61010}
61011/**
61012 * Matcher for detecting tuples t where []eSuperPackage reference EPackage(source,target)
61013 */
61014private pattern mustInRelationeSuperPackage_reference_EPackage(
61015 problem:LogicProblem, interpretation:PartialInterpretation,
61016 source: DefinedElement, target:DefinedElement)
61017{
61018 find interpretation(problem,interpretation);
61019 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61020 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperPackage reference EPackage");
61021 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61022 BinaryElementRelationLink.param1(link,source);
61023 BinaryElementRelationLink.param2(link,target);
61024}
61025/**
61026 * Matcher for detecting tuples t where <>eSuperPackage reference EPackage(source,target)
61027 */
61028private pattern mayInRelationeSuperPackage_reference_EPackage(
61029 problem:LogicProblem, interpretation:PartialInterpretation,
61030 source: DefinedElement, target:DefinedElement)
61031{
61032 find interpretation(problem,interpretation);
61033 // The two endpoint of the link have to exist
61034 find mayExist(problem, interpretation, source);
61035 find mayExist(problem, interpretation, target);
61036 // Type consistency
61037 find mayInstanceOfEPackage_class(problem,interpretation,source);
61038 find mayInstanceOfEPackage_class(problem,interpretation,target);
61039 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61040 // the upper bound of the multiplicity should be considered.
61041 numberOfExistingReferences == count find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,_);
61042 check(numberOfExistingReferences < 1);
61043 // The eOpposite of the reference is containment, then a referene cannot be created if
61044 // 1. Multiple parents
61045 neg find mustContains4(problem,interpretation,source,_);
61046 // 2. Circle in the containment hierarchy
61047 neg find mustTransitiveContains(source,target);
61048} or {
61049 find mustInRelationeSuperPackage_reference_EPackage(problem,interpretation,source,target);
61050}
61051/**
61052 * Matcher for detecting tuples t where []eOperation reference EParameter(source,target)
61053 */
61054private pattern mustInRelationeOperation_reference_EParameter(
61055 problem:LogicProblem, interpretation:PartialInterpretation,
61056 source: DefinedElement, target:DefinedElement)
61057{
61058 find interpretation(problem,interpretation);
61059 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61060 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOperation reference EParameter");
61061 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61062 BinaryElementRelationLink.param1(link,source);
61063 BinaryElementRelationLink.param2(link,target);
61064}
61065/**
61066 * Matcher for detecting tuples t where <>eOperation reference EParameter(source,target)
61067 */
61068private pattern mayInRelationeOperation_reference_EParameter(
61069 problem:LogicProblem, interpretation:PartialInterpretation,
61070 source: DefinedElement, target:DefinedElement)
61071{
61072 find interpretation(problem,interpretation);
61073 // The two endpoint of the link have to exist
61074 find mayExist(problem, interpretation, source);
61075 find mayExist(problem, interpretation, target);
61076 // Type consistency
61077 find mayInstanceOfEParameter_class(problem,interpretation,source);
61078 find mayInstanceOfEOperation_class(problem,interpretation,target);
61079 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61080 // the upper bound of the multiplicity should be considered.
61081 numberOfExistingReferences == count find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,_);
61082 check(numberOfExistingReferences < 1);
61083 // The eOpposite of the reference is containment, then a referene cannot be created if
61084 // 1. Multiple parents
61085 neg find mustContains4(problem,interpretation,source,_);
61086 // 2. Circle in the containment hierarchy
61087 neg find mustTransitiveContains(source,target);
61088} or {
61089 find mustInRelationeOperation_reference_EParameter(problem,interpretation,source,target);
61090}
61091/**
61092 * Matcher for detecting tuples t where []eOpposite reference EReference(source,target)
61093 */
61094private pattern mustInRelationeOpposite_reference_EReference(
61095 problem:LogicProblem, interpretation:PartialInterpretation,
61096 source: DefinedElement, target:DefinedElement)
61097{
61098 find interpretation(problem,interpretation);
61099 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61100 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
61101 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61102 BinaryElementRelationLink.param1(link,source);
61103 BinaryElementRelationLink.param2(link,target);
61104}
61105/**
61106 * Matcher for detecting tuples t where <>eOpposite reference EReference(source,target)
61107 */
61108private pattern mayInRelationeOpposite_reference_EReference(
61109 problem:LogicProblem, interpretation:PartialInterpretation,
61110 source: DefinedElement, target:DefinedElement)
61111{
61112 find interpretation(problem,interpretation);
61113 // The two endpoint of the link have to exist
61114 find mayExist(problem, interpretation, source);
61115 find mayExist(problem, interpretation, target);
61116 // Type consistency
61117 find mayInstanceOfEReference_class(problem,interpretation,source);
61118 find mayInstanceOfEReference_class(problem,interpretation,target);
61119 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61120 // the upper bound of the multiplicity should be considered.
61121 numberOfExistingReferences == count find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,_);
61122 check(numberOfExistingReferences < 1);
61123} or {
61124 find mustInRelationeOpposite_reference_EReference(problem,interpretation,source,target);
61125}
61126/**
61127 * Matcher for detecting tuples t where []eReferenceType reference EReference(source,target)
61128 */
61129private pattern mustInRelationeReferenceType_reference_EReference(
61130 problem:LogicProblem, interpretation:PartialInterpretation,
61131 source: DefinedElement, target:DefinedElement)
61132{
61133 find interpretation(problem,interpretation);
61134 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61135 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
61136 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61137 BinaryElementRelationLink.param1(link,source);
61138 BinaryElementRelationLink.param2(link,target);
61139}
61140/**
61141 * Matcher for detecting tuples t where <>eReferenceType reference EReference(source,target)
61142 */
61143private pattern mayInRelationeReferenceType_reference_EReference(
61144 problem:LogicProblem, interpretation:PartialInterpretation,
61145 source: DefinedElement, target:DefinedElement)
61146{
61147 find interpretation(problem,interpretation);
61148 // The two endpoint of the link have to exist
61149 find mayExist(problem, interpretation, source);
61150 find mayExist(problem, interpretation, target);
61151 // Type consistency
61152 find mayInstanceOfEReference_class(problem,interpretation,source);
61153 find mayInstanceOfEClass_class(problem,interpretation,target);
61154 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61155 // the upper bound of the multiplicity should be considered.
61156 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,_);
61157 check(numberOfExistingReferences < 1);
61158} or {
61159 find mustInRelationeReferenceType_reference_EReference(problem,interpretation,source,target);
61160}
61161/**
61162 * Matcher for detecting tuples t where []eKeys reference EReference(source,target)
61163 */
61164private pattern mustInRelationeKeys_reference_EReference(
61165 problem:LogicProblem, interpretation:PartialInterpretation,
61166 source: DefinedElement, target:DefinedElement)
61167{
61168 find interpretation(problem,interpretation);
61169 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61170 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
61171 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61172 BinaryElementRelationLink.param1(link,source);
61173 BinaryElementRelationLink.param2(link,target);
61174}
61175/**
61176 * Matcher for detecting tuples t where <>eKeys reference EReference(source,target)
61177 */
61178private pattern mayInRelationeKeys_reference_EReference(
61179 problem:LogicProblem, interpretation:PartialInterpretation,
61180 source: DefinedElement, target:DefinedElement)
61181{
61182 find interpretation(problem,interpretation);
61183 // The two endpoint of the link have to exist
61184 find mayExist(problem, interpretation, source);
61185 find mayExist(problem, interpretation, target);
61186 // Type consistency
61187 find mayInstanceOfEReference_class(problem,interpretation,source);
61188 find mayInstanceOfEAttribute_class(problem,interpretation,target);
61189} or {
61190 find mustInRelationeKeys_reference_EReference(problem,interpretation,source,target);
61191}
61192/**
61193 * Matcher for detecting tuples t where []eContainingClass reference EStructuralFeature(source,target)
61194 */
61195private pattern mustInRelationeContainingClass_reference_EStructuralFeature(
61196 problem:LogicProblem, interpretation:PartialInterpretation,
61197 source: DefinedElement, target:DefinedElement)
61198{
61199 find interpretation(problem,interpretation);
61200 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61201 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eContainingClass reference EStructuralFeature");
61202 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61203 BinaryElementRelationLink.param1(link,source);
61204 BinaryElementRelationLink.param2(link,target);
61205}
61206/**
61207 * Matcher for detecting tuples t where <>eContainingClass reference EStructuralFeature(source,target)
61208 */
61209private pattern mayInRelationeContainingClass_reference_EStructuralFeature(
61210 problem:LogicProblem, interpretation:PartialInterpretation,
61211 source: DefinedElement, target:DefinedElement)
61212{
61213 find interpretation(problem,interpretation);
61214 // The two endpoint of the link have to exist
61215 find mayExist(problem, interpretation, source);
61216 find mayExist(problem, interpretation, target);
61217 // Type consistency
61218 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
61219 find mayInstanceOfEClass_class(problem,interpretation,target);
61220 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61221 // the upper bound of the multiplicity should be considered.
61222 numberOfExistingReferences == count find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,_);
61223 check(numberOfExistingReferences < 1);
61224 // The eOpposite of the reference is containment, then a referene cannot be created if
61225 // 1. Multiple parents
61226 neg find mustContains4(problem,interpretation,source,_);
61227 // 2. Circle in the containment hierarchy
61228 neg find mustTransitiveContains(source,target);
61229} or {
61230 find mustInRelationeContainingClass_reference_EStructuralFeature(problem,interpretation,source,target);
61231}
61232/**
61233 * Matcher for detecting tuples t where []eType reference ETypedElement(source,target)
61234 */
61235private pattern mustInRelationeType_reference_ETypedElement(
61236 problem:LogicProblem, interpretation:PartialInterpretation,
61237 source: DefinedElement, target:DefinedElement)
61238{
61239 find interpretation(problem,interpretation);
61240 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61241 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
61242 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61243 BinaryElementRelationLink.param1(link,source);
61244 BinaryElementRelationLink.param2(link,target);
61245}
61246/**
61247 * Matcher for detecting tuples t where <>eType reference ETypedElement(source,target)
61248 */
61249private pattern mayInRelationeType_reference_ETypedElement(
61250 problem:LogicProblem, interpretation:PartialInterpretation,
61251 source: DefinedElement, target:DefinedElement)
61252{
61253 find interpretation(problem,interpretation);
61254 // The two endpoint of the link have to exist
61255 find mayExist(problem, interpretation, source);
61256 find mayExist(problem, interpretation, target);
61257 // Type consistency
61258 find mayInstanceOfETypedElement_class(problem,interpretation,source);
61259 find mayInstanceOfEClassifier_class(problem,interpretation,target);
61260 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61261 // the upper bound of the multiplicity should be considered.
61262 numberOfExistingReferences == count find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,_);
61263 check(numberOfExistingReferences < 1);
61264} or {
61265 find mustInRelationeType_reference_ETypedElement(problem,interpretation,source,target);
61266}
61267/**
61268 * Matcher for detecting tuples t where []eGenericType reference ETypedElement(source,target)
61269 */
61270private pattern mustInRelationeGenericType_reference_ETypedElement(
61271 problem:LogicProblem, interpretation:PartialInterpretation,
61272 source: DefinedElement, target:DefinedElement)
61273{
61274 find interpretation(problem,interpretation);
61275 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61276 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eGenericType reference ETypedElement");
61277 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61278 BinaryElementRelationLink.param1(link,source);
61279 BinaryElementRelationLink.param2(link,target);
61280}
61281/**
61282 * Matcher for detecting tuples t where <>eGenericType reference ETypedElement(source,target)
61283 */
61284private pattern mayInRelationeGenericType_reference_ETypedElement(
61285 problem:LogicProblem, interpretation:PartialInterpretation,
61286 source: DefinedElement, target:DefinedElement)
61287{
61288 find interpretation(problem,interpretation);
61289 // The two endpoint of the link have to exist
61290 find mayExist(problem, interpretation, source);
61291 find mayExist(problem, interpretation, target);
61292 // Type consistency
61293 find mayInstanceOfETypedElement_class(problem,interpretation,source);
61294 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61295 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61296 // the upper bound of the multiplicity should be considered.
61297 numberOfExistingReferences == count find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,_);
61298 check(numberOfExistingReferences < 1);
61299 // The reference is containment, then a new reference cannot be create if:
61300 // 1. Multiple parents
61301 neg find mustContains4(problem,interpretation,_,target);
61302 // 2. Circle in the containment hierarchy
61303 neg find mustTransitiveContains(source,target);
61304} or {
61305 find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target);
61306}
61307/**
61308 * Matcher for detecting tuples t where []eUpperBound reference EGenericType(source,target)
61309 */
61310private pattern mustInRelationeUpperBound_reference_EGenericType(
61311 problem:LogicProblem, interpretation:PartialInterpretation,
61312 source: DefinedElement, target:DefinedElement)
61313{
61314 find interpretation(problem,interpretation);
61315 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61316 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eUpperBound reference EGenericType");
61317 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61318 BinaryElementRelationLink.param1(link,source);
61319 BinaryElementRelationLink.param2(link,target);
61320}
61321/**
61322 * Matcher for detecting tuples t where <>eUpperBound reference EGenericType(source,target)
61323 */
61324private pattern mayInRelationeUpperBound_reference_EGenericType(
61325 problem:LogicProblem, interpretation:PartialInterpretation,
61326 source: DefinedElement, target:DefinedElement)
61327{
61328 find interpretation(problem,interpretation);
61329 // The two endpoint of the link have to exist
61330 find mayExist(problem, interpretation, source);
61331 find mayExist(problem, interpretation, target);
61332 // Type consistency
61333 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61334 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61335 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61336 // the upper bound of the multiplicity should be considered.
61337 numberOfExistingReferences == count find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,_);
61338 check(numberOfExistingReferences < 1);
61339 // The reference is containment, then a new reference cannot be create if:
61340 // 1. Multiple parents
61341 neg find mustContains4(problem,interpretation,_,target);
61342 // 2. Circle in the containment hierarchy
61343 neg find mustTransitiveContains(source,target);
61344} or {
61345 find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target);
61346}
61347/**
61348 * Matcher for detecting tuples t where []eTypeArguments reference EGenericType(source,target)
61349 */
61350private pattern mustInRelationeTypeArguments_reference_EGenericType(
61351 problem:LogicProblem, interpretation:PartialInterpretation,
61352 source: DefinedElement, target:DefinedElement)
61353{
61354 find interpretation(problem,interpretation);
61355 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61356 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeArguments reference EGenericType");
61357 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61358 BinaryElementRelationLink.param1(link,source);
61359 BinaryElementRelationLink.param2(link,target);
61360}
61361/**
61362 * Matcher for detecting tuples t where <>eTypeArguments reference EGenericType(source,target)
61363 */
61364private pattern mayInRelationeTypeArguments_reference_EGenericType(
61365 problem:LogicProblem, interpretation:PartialInterpretation,
61366 source: DefinedElement, target:DefinedElement)
61367{
61368 find interpretation(problem,interpretation);
61369 // The two endpoint of the link have to exist
61370 find mayExist(problem, interpretation, source);
61371 find mayExist(problem, interpretation, target);
61372 // Type consistency
61373 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61374 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61375 // The reference is containment, then a new reference cannot be create if:
61376 // 1. Multiple parents
61377 neg find mustContains4(problem,interpretation,_,target);
61378 // 2. Circle in the containment hierarchy
61379 neg find mustTransitiveContains(source,target);
61380} or {
61381 find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target);
61382}
61383/**
61384 * Matcher for detecting tuples t where []eRawType reference EGenericType(source,target)
61385 */
61386private pattern mustInRelationeRawType_reference_EGenericType(
61387 problem:LogicProblem, interpretation:PartialInterpretation,
61388 source: DefinedElement, target:DefinedElement)
61389{
61390 find interpretation(problem,interpretation);
61391 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61392 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
61393 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61394 BinaryElementRelationLink.param1(link,source);
61395 BinaryElementRelationLink.param2(link,target);
61396}
61397/**
61398 * Matcher for detecting tuples t where <>eRawType reference EGenericType(source,target)
61399 */
61400private pattern mayInRelationeRawType_reference_EGenericType(
61401 problem:LogicProblem, interpretation:PartialInterpretation,
61402 source: DefinedElement, target:DefinedElement)
61403{
61404 find interpretation(problem,interpretation);
61405 // The two endpoint of the link have to exist
61406 find mayExist(problem, interpretation, source);
61407 find mayExist(problem, interpretation, target);
61408 // Type consistency
61409 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61410 find mayInstanceOfEClassifier_class(problem,interpretation,target);
61411 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61412 // the upper bound of the multiplicity should be considered.
61413 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,_);
61414 check(numberOfExistingReferences < 1);
61415} or {
61416 find mustInRelationeRawType_reference_EGenericType(problem,interpretation,source,target);
61417}
61418/**
61419 * Matcher for detecting tuples t where []eLowerBound reference EGenericType(source,target)
61420 */
61421private pattern mustInRelationeLowerBound_reference_EGenericType(
61422 problem:LogicProblem, interpretation:PartialInterpretation,
61423 source: DefinedElement, target:DefinedElement)
61424{
61425 find interpretation(problem,interpretation);
61426 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61427 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eLowerBound reference EGenericType");
61428 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61429 BinaryElementRelationLink.param1(link,source);
61430 BinaryElementRelationLink.param2(link,target);
61431}
61432/**
61433 * Matcher for detecting tuples t where <>eLowerBound reference EGenericType(source,target)
61434 */
61435private pattern mayInRelationeLowerBound_reference_EGenericType(
61436 problem:LogicProblem, interpretation:PartialInterpretation,
61437 source: DefinedElement, target:DefinedElement)
61438{
61439 find interpretation(problem,interpretation);
61440 // The two endpoint of the link have to exist
61441 find mayExist(problem, interpretation, source);
61442 find mayExist(problem, interpretation, target);
61443 // Type consistency
61444 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61445 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61446 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61447 // the upper bound of the multiplicity should be considered.
61448 numberOfExistingReferences == count find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,_);
61449 check(numberOfExistingReferences < 1);
61450 // The reference is containment, then a new reference cannot be create if:
61451 // 1. Multiple parents
61452 neg find mustContains4(problem,interpretation,_,target);
61453 // 2. Circle in the containment hierarchy
61454 neg find mustTransitiveContains(source,target);
61455} or {
61456 find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target);
61457}
61458/**
61459 * Matcher for detecting tuples t where []eTypeParameter reference EGenericType(source,target)
61460 */
61461private pattern mustInRelationeTypeParameter_reference_EGenericType(
61462 problem:LogicProblem, interpretation:PartialInterpretation,
61463 source: DefinedElement, target:DefinedElement)
61464{
61465 find interpretation(problem,interpretation);
61466 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61467 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
61468 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61469 BinaryElementRelationLink.param1(link,source);
61470 BinaryElementRelationLink.param2(link,target);
61471}
61472/**
61473 * Matcher for detecting tuples t where <>eTypeParameter reference EGenericType(source,target)
61474 */
61475private pattern mayInRelationeTypeParameter_reference_EGenericType(
61476 problem:LogicProblem, interpretation:PartialInterpretation,
61477 source: DefinedElement, target:DefinedElement)
61478{
61479 find interpretation(problem,interpretation);
61480 // The two endpoint of the link have to exist
61481 find mayExist(problem, interpretation, source);
61482 find mayExist(problem, interpretation, target);
61483 // Type consistency
61484 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61485 find mayInstanceOfETypeParameter_class(problem,interpretation,target);
61486 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61487 // the upper bound of the multiplicity should be considered.
61488 numberOfExistingReferences == count find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,_);
61489 check(numberOfExistingReferences < 1);
61490} or {
61491 find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,source,target);
61492}
61493/**
61494 * Matcher for detecting tuples t where []eClassifier reference EGenericType(source,target)
61495 */
61496private pattern mustInRelationeClassifier_reference_EGenericType(
61497 problem:LogicProblem, interpretation:PartialInterpretation,
61498 source: DefinedElement, target:DefinedElement)
61499{
61500 find interpretation(problem,interpretation);
61501 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61502 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
61503 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61504 BinaryElementRelationLink.param1(link,source);
61505 BinaryElementRelationLink.param2(link,target);
61506}
61507/**
61508 * Matcher for detecting tuples t where <>eClassifier reference EGenericType(source,target)
61509 */
61510private pattern mayInRelationeClassifier_reference_EGenericType(
61511 problem:LogicProblem, interpretation:PartialInterpretation,
61512 source: DefinedElement, target:DefinedElement)
61513{
61514 find interpretation(problem,interpretation);
61515 // The two endpoint of the link have to exist
61516 find mayExist(problem, interpretation, source);
61517 find mayExist(problem, interpretation, target);
61518 // Type consistency
61519 find mayInstanceOfEGenericType_class(problem,interpretation,source);
61520 find mayInstanceOfEClassifier_class(problem,interpretation,target);
61521 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61522 // the upper bound of the multiplicity should be considered.
61523 numberOfExistingReferences == count find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,_);
61524 check(numberOfExistingReferences < 1);
61525} or {
61526 find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,source,target);
61527}
61528/**
61529 * Matcher for detecting tuples t where []eBounds reference ETypeParameter(source,target)
61530 */
61531private pattern mustInRelationeBounds_reference_ETypeParameter(
61532 problem:LogicProblem, interpretation:PartialInterpretation,
61533 source: DefinedElement, target:DefinedElement)
61534{
61535 find interpretation(problem,interpretation);
61536 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61537 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eBounds reference ETypeParameter");
61538 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61539 BinaryElementRelationLink.param1(link,source);
61540 BinaryElementRelationLink.param2(link,target);
61541}
61542/**
61543 * Matcher for detecting tuples t where <>eBounds reference ETypeParameter(source,target)
61544 */
61545private pattern mayInRelationeBounds_reference_ETypeParameter(
61546 problem:LogicProblem, interpretation:PartialInterpretation,
61547 source: DefinedElement, target:DefinedElement)
61548{
61549 find interpretation(problem,interpretation);
61550 // The two endpoint of the link have to exist
61551 find mayExist(problem, interpretation, source);
61552 find mayExist(problem, interpretation, target);
61553 // Type consistency
61554 find mayInstanceOfETypeParameter_class(problem,interpretation,source);
61555 find mayInstanceOfEGenericType_class(problem,interpretation,target);
61556 // The reference is containment, then a new reference cannot be create if:
61557 // 1. Multiple parents
61558 neg find mustContains4(problem,interpretation,_,target);
61559 // 2. Circle in the containment hierarchy
61560 neg find mustTransitiveContains(source,target);
61561} or {
61562 find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target);
61563}
61564/**
61565 * Matcher for detecting tuples t where []iD attribute EAttribute(source,target)
61566 */
61567private pattern mustInRelationiD_attribute_EAttribute(
61568 problem:LogicProblem, interpretation:PartialInterpretation,
61569 source: DefinedElement, target:DefinedElement)
61570{
61571 find interpretation(problem,interpretation);
61572 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61573 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
61574 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61575 BinaryElementRelationLink.param1(link,source);
61576 BinaryElementRelationLink.param2(link,target);
61577}
61578/**
61579 * Matcher for detecting tuples t where <>iD attribute EAttribute(source,target)
61580 */
61581private pattern mayInRelationiD_attribute_EAttribute(
61582 problem:LogicProblem, interpretation:PartialInterpretation,
61583 source: DefinedElement, target:DefinedElement)
61584{
61585 find interpretation(problem,interpretation);
61586 // The two endpoint of the link have to exist
61587 find mayExist(problem, interpretation, source);
61588 find mayExist(problem, interpretation, target);
61589 // Type consistency
61590 find mayInstanceOfEAttribute_class(problem,interpretation,source);
61591 BooleanElement(target);
61592 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61593 // the upper bound of the multiplicity should be considered.
61594 numberOfExistingReferences == count find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,_);
61595 check(numberOfExistingReferences < 1);
61596} or {
61597 find mustInRelationiD_attribute_EAttribute(problem,interpretation,source,target);
61598}
61599/**
61600 * Matcher for detecting tuples t where []source attribute EAnnotation(source,target)
61601 */
61602private pattern mustInRelationsource_attribute_EAnnotation(
61603 problem:LogicProblem, interpretation:PartialInterpretation,
61604 source: DefinedElement, target:DefinedElement)
61605{
61606 find interpretation(problem,interpretation);
61607 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61608 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
61609 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61610 BinaryElementRelationLink.param1(link,source);
61611 BinaryElementRelationLink.param2(link,target);
61612}
61613/**
61614 * Matcher for detecting tuples t where <>source attribute EAnnotation(source,target)
61615 */
61616private pattern mayInRelationsource_attribute_EAnnotation(
61617 problem:LogicProblem, interpretation:PartialInterpretation,
61618 source: DefinedElement, target:DefinedElement)
61619{
61620 find interpretation(problem,interpretation);
61621 // The two endpoint of the link have to exist
61622 find mayExist(problem, interpretation, source);
61623 find mayExist(problem, interpretation, target);
61624 // Type consistency
61625 find mayInstanceOfEAnnotation_class(problem,interpretation,source);
61626 StringElement(target);
61627 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61628 // the upper bound of the multiplicity should be considered.
61629 numberOfExistingReferences == count find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,_);
61630 check(numberOfExistingReferences < 1);
61631} or {
61632 find mustInRelationsource_attribute_EAnnotation(problem,interpretation,source,target);
61633}
61634/**
61635 * Matcher for detecting tuples t where []abstract attribute EClass(source,target)
61636 */
61637private pattern mustInRelationabstract_attribute_EClass(
61638 problem:LogicProblem, interpretation:PartialInterpretation,
61639 source: DefinedElement, target:DefinedElement)
61640{
61641 find interpretation(problem,interpretation);
61642 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61643 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
61644 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61645 BinaryElementRelationLink.param1(link,source);
61646 BinaryElementRelationLink.param2(link,target);
61647}
61648/**
61649 * Matcher for detecting tuples t where <>abstract attribute EClass(source,target)
61650 */
61651private pattern mayInRelationabstract_attribute_EClass(
61652 problem:LogicProblem, interpretation:PartialInterpretation,
61653 source: DefinedElement, target:DefinedElement)
61654{
61655 find interpretation(problem,interpretation);
61656 // The two endpoint of the link have to exist
61657 find mayExist(problem, interpretation, source);
61658 find mayExist(problem, interpretation, target);
61659 // Type consistency
61660 find mayInstanceOfEClass_class(problem,interpretation,source);
61661 BooleanElement(target);
61662 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61663 // the upper bound of the multiplicity should be considered.
61664 numberOfExistingReferences == count find mustInRelationabstract_attribute_EClass(problem,interpretation,source,_);
61665 check(numberOfExistingReferences < 1);
61666} or {
61667 find mustInRelationabstract_attribute_EClass(problem,interpretation,source,target);
61668}
61669/**
61670 * Matcher for detecting tuples t where []interface attribute EClass(source,target)
61671 */
61672private pattern mustInRelationinterface_attribute_EClass(
61673 problem:LogicProblem, interpretation:PartialInterpretation,
61674 source: DefinedElement, target:DefinedElement)
61675{
61676 find interpretation(problem,interpretation);
61677 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61678 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
61679 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61680 BinaryElementRelationLink.param1(link,source);
61681 BinaryElementRelationLink.param2(link,target);
61682}
61683/**
61684 * Matcher for detecting tuples t where <>interface attribute EClass(source,target)
61685 */
61686private pattern mayInRelationinterface_attribute_EClass(
61687 problem:LogicProblem, interpretation:PartialInterpretation,
61688 source: DefinedElement, target:DefinedElement)
61689{
61690 find interpretation(problem,interpretation);
61691 // The two endpoint of the link have to exist
61692 find mayExist(problem, interpretation, source);
61693 find mayExist(problem, interpretation, target);
61694 // Type consistency
61695 find mayInstanceOfEClass_class(problem,interpretation,source);
61696 BooleanElement(target);
61697 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61698 // the upper bound of the multiplicity should be considered.
61699 numberOfExistingReferences == count find mustInRelationinterface_attribute_EClass(problem,interpretation,source,_);
61700 check(numberOfExistingReferences < 1);
61701} or {
61702 find mustInRelationinterface_attribute_EClass(problem,interpretation,source,target);
61703}
61704/**
61705 * Matcher for detecting tuples t where []instanceClassName attribute EClassifier(source,target)
61706 */
61707private pattern mustInRelationinstanceClassName_attribute_EClassifier(
61708 problem:LogicProblem, interpretation:PartialInterpretation,
61709 source: DefinedElement, target:DefinedElement)
61710{
61711 find interpretation(problem,interpretation);
61712 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61713 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
61714 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61715 BinaryElementRelationLink.param1(link,source);
61716 BinaryElementRelationLink.param2(link,target);
61717}
61718/**
61719 * Matcher for detecting tuples t where <>instanceClassName attribute EClassifier(source,target)
61720 */
61721private pattern mayInRelationinstanceClassName_attribute_EClassifier(
61722 problem:LogicProblem, interpretation:PartialInterpretation,
61723 source: DefinedElement, target:DefinedElement)
61724{
61725 find interpretation(problem,interpretation);
61726 // The two endpoint of the link have to exist
61727 find mayExist(problem, interpretation, source);
61728 find mayExist(problem, interpretation, target);
61729 // Type consistency
61730 find mayInstanceOfEClassifier_class(problem,interpretation,source);
61731 StringElement(target);
61732 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61733 // the upper bound of the multiplicity should be considered.
61734 numberOfExistingReferences == count find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,_);
61735 check(numberOfExistingReferences < 1);
61736} or {
61737 find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,source,target);
61738}
61739/**
61740 * Matcher for detecting tuples t where []instanceTypeName attribute EClassifier(source,target)
61741 */
61742private pattern mustInRelationinstanceTypeName_attribute_EClassifier(
61743 problem:LogicProblem, interpretation:PartialInterpretation,
61744 source: DefinedElement, target:DefinedElement)
61745{
61746 find interpretation(problem,interpretation);
61747 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61748 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
61749 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61750 BinaryElementRelationLink.param1(link,source);
61751 BinaryElementRelationLink.param2(link,target);
61752}
61753/**
61754 * Matcher for detecting tuples t where <>instanceTypeName attribute EClassifier(source,target)
61755 */
61756private pattern mayInRelationinstanceTypeName_attribute_EClassifier(
61757 problem:LogicProblem, interpretation:PartialInterpretation,
61758 source: DefinedElement, target:DefinedElement)
61759{
61760 find interpretation(problem,interpretation);
61761 // The two endpoint of the link have to exist
61762 find mayExist(problem, interpretation, source);
61763 find mayExist(problem, interpretation, target);
61764 // Type consistency
61765 find mayInstanceOfEClassifier_class(problem,interpretation,source);
61766 StringElement(target);
61767 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61768 // the upper bound of the multiplicity should be considered.
61769 numberOfExistingReferences == count find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,_);
61770 check(numberOfExistingReferences < 1);
61771} or {
61772 find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,source,target);
61773}
61774/**
61775 * Matcher for detecting tuples t where []serializable attribute EDataType(source,target)
61776 */
61777private pattern mustInRelationserializable_attribute_EDataType(
61778 problem:LogicProblem, interpretation:PartialInterpretation,
61779 source: DefinedElement, target:DefinedElement)
61780{
61781 find interpretation(problem,interpretation);
61782 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61783 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
61784 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61785 BinaryElementRelationLink.param1(link,source);
61786 BinaryElementRelationLink.param2(link,target);
61787}
61788/**
61789 * Matcher for detecting tuples t where <>serializable attribute EDataType(source,target)
61790 */
61791private pattern mayInRelationserializable_attribute_EDataType(
61792 problem:LogicProblem, interpretation:PartialInterpretation,
61793 source: DefinedElement, target:DefinedElement)
61794{
61795 find interpretation(problem,interpretation);
61796 // The two endpoint of the link have to exist
61797 find mayExist(problem, interpretation, source);
61798 find mayExist(problem, interpretation, target);
61799 // Type consistency
61800 find mayInstanceOfEDataType_class(problem,interpretation,source);
61801 BooleanElement(target);
61802 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61803 // the upper bound of the multiplicity should be considered.
61804 numberOfExistingReferences == count find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,_);
61805 check(numberOfExistingReferences < 1);
61806} or {
61807 find mustInRelationserializable_attribute_EDataType(problem,interpretation,source,target);
61808}
61809/**
61810 * Matcher for detecting tuples t where []value attribute EEnumLiteral(source,target)
61811 */
61812private pattern mustInRelationvalue_attribute_EEnumLiteral(
61813 problem:LogicProblem, interpretation:PartialInterpretation,
61814 source: DefinedElement, target:DefinedElement)
61815{
61816 find interpretation(problem,interpretation);
61817 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61818 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
61819 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61820 BinaryElementRelationLink.param1(link,source);
61821 BinaryElementRelationLink.param2(link,target);
61822}
61823/**
61824 * Matcher for detecting tuples t where <>value attribute EEnumLiteral(source,target)
61825 */
61826private pattern mayInRelationvalue_attribute_EEnumLiteral(
61827 problem:LogicProblem, interpretation:PartialInterpretation,
61828 source: DefinedElement, target:DefinedElement)
61829{
61830 find interpretation(problem,interpretation);
61831 // The two endpoint of the link have to exist
61832 find mayExist(problem, interpretation, source);
61833 find mayExist(problem, interpretation, target);
61834 // Type consistency
61835 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
61836 IntegerElement(target);
61837 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61838 // the upper bound of the multiplicity should be considered.
61839 numberOfExistingReferences == count find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,_);
61840 check(numberOfExistingReferences < 1);
61841} or {
61842 find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,source,target);
61843}
61844/**
61845 * Matcher for detecting tuples t where []literal attribute EEnumLiteral(source,target)
61846 */
61847private pattern mustInRelationliteral_attribute_EEnumLiteral(
61848 problem:LogicProblem, interpretation:PartialInterpretation,
61849 source: DefinedElement, target:DefinedElement)
61850{
61851 find interpretation(problem,interpretation);
61852 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61853 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
61854 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61855 BinaryElementRelationLink.param1(link,source);
61856 BinaryElementRelationLink.param2(link,target);
61857}
61858/**
61859 * Matcher for detecting tuples t where <>literal attribute EEnumLiteral(source,target)
61860 */
61861private pattern mayInRelationliteral_attribute_EEnumLiteral(
61862 problem:LogicProblem, interpretation:PartialInterpretation,
61863 source: DefinedElement, target:DefinedElement)
61864{
61865 find interpretation(problem,interpretation);
61866 // The two endpoint of the link have to exist
61867 find mayExist(problem, interpretation, source);
61868 find mayExist(problem, interpretation, target);
61869 // Type consistency
61870 find mayInstanceOfEEnumLiteral_class(problem,interpretation,source);
61871 StringElement(target);
61872 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61873 // the upper bound of the multiplicity should be considered.
61874 numberOfExistingReferences == count find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,_);
61875 check(numberOfExistingReferences < 1);
61876} or {
61877 find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,source,target);
61878}
61879/**
61880 * Matcher for detecting tuples t where []name attribute ENamedElement(source,target)
61881 */
61882private pattern mustInRelationname_attribute_ENamedElement(
61883 problem:LogicProblem, interpretation:PartialInterpretation,
61884 source: DefinedElement, target:DefinedElement)
61885{
61886 find interpretation(problem,interpretation);
61887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
61889 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61890 BinaryElementRelationLink.param1(link,source);
61891 BinaryElementRelationLink.param2(link,target);
61892}
61893/**
61894 * Matcher for detecting tuples t where <>name attribute ENamedElement(source,target)
61895 */
61896private pattern mayInRelationname_attribute_ENamedElement(
61897 problem:LogicProblem, interpretation:PartialInterpretation,
61898 source: DefinedElement, target:DefinedElement)
61899{
61900 find interpretation(problem,interpretation);
61901 // The two endpoint of the link have to exist
61902 find mayExist(problem, interpretation, source);
61903 find mayExist(problem, interpretation, target);
61904 // Type consistency
61905 find mayInstanceOfENamedElement_class(problem,interpretation,source);
61906 StringElement(target);
61907 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61908 // the upper bound of the multiplicity should be considered.
61909 numberOfExistingReferences == count find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,_);
61910 check(numberOfExistingReferences < 1);
61911} or {
61912 find mustInRelationname_attribute_ENamedElement(problem,interpretation,source,target);
61913}
61914/**
61915 * Matcher for detecting tuples t where []nsURI attribute EPackage(source,target)
61916 */
61917private pattern mustInRelationnsURI_attribute_EPackage(
61918 problem:LogicProblem, interpretation:PartialInterpretation,
61919 source: DefinedElement, target:DefinedElement)
61920{
61921 find interpretation(problem,interpretation);
61922 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61923 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
61924 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61925 BinaryElementRelationLink.param1(link,source);
61926 BinaryElementRelationLink.param2(link,target);
61927}
61928/**
61929 * Matcher for detecting tuples t where <>nsURI attribute EPackage(source,target)
61930 */
61931private pattern mayInRelationnsURI_attribute_EPackage(
61932 problem:LogicProblem, interpretation:PartialInterpretation,
61933 source: DefinedElement, target:DefinedElement)
61934{
61935 find interpretation(problem,interpretation);
61936 // The two endpoint of the link have to exist
61937 find mayExist(problem, interpretation, source);
61938 find mayExist(problem, interpretation, target);
61939 // Type consistency
61940 find mayInstanceOfEPackage_class(problem,interpretation,source);
61941 StringElement(target);
61942 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61943 // the upper bound of the multiplicity should be considered.
61944 numberOfExistingReferences == count find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,_);
61945 check(numberOfExistingReferences < 1);
61946} or {
61947 find mustInRelationnsURI_attribute_EPackage(problem,interpretation,source,target);
61948}
61949/**
61950 * Matcher for detecting tuples t where []nsPrefix attribute EPackage(source,target)
61951 */
61952private pattern mustInRelationnsPrefix_attribute_EPackage(
61953 problem:LogicProblem, interpretation:PartialInterpretation,
61954 source: DefinedElement, target:DefinedElement)
61955{
61956 find interpretation(problem,interpretation);
61957 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61958 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
61959 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61960 BinaryElementRelationLink.param1(link,source);
61961 BinaryElementRelationLink.param2(link,target);
61962}
61963/**
61964 * Matcher for detecting tuples t where <>nsPrefix attribute EPackage(source,target)
61965 */
61966private pattern mayInRelationnsPrefix_attribute_EPackage(
61967 problem:LogicProblem, interpretation:PartialInterpretation,
61968 source: DefinedElement, target:DefinedElement)
61969{
61970 find interpretation(problem,interpretation);
61971 // The two endpoint of the link have to exist
61972 find mayExist(problem, interpretation, source);
61973 find mayExist(problem, interpretation, target);
61974 // Type consistency
61975 find mayInstanceOfEPackage_class(problem,interpretation,source);
61976 StringElement(target);
61977 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
61978 // the upper bound of the multiplicity should be considered.
61979 numberOfExistingReferences == count find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,_);
61980 check(numberOfExistingReferences < 1);
61981} or {
61982 find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,source,target);
61983}
61984/**
61985 * Matcher for detecting tuples t where []containment attribute EReference(source,target)
61986 */
61987private pattern mustInRelationcontainment_attribute_EReference(
61988 problem:LogicProblem, interpretation:PartialInterpretation,
61989 source: DefinedElement, target:DefinedElement)
61990{
61991 find interpretation(problem,interpretation);
61992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
61993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
61994 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
61995 BinaryElementRelationLink.param1(link,source);
61996 BinaryElementRelationLink.param2(link,target);
61997}
61998/**
61999 * Matcher for detecting tuples t where <>containment attribute EReference(source,target)
62000 */
62001private pattern mayInRelationcontainment_attribute_EReference(
62002 problem:LogicProblem, interpretation:PartialInterpretation,
62003 source: DefinedElement, target:DefinedElement)
62004{
62005 find interpretation(problem,interpretation);
62006 // The two endpoint of the link have to exist
62007 find mayExist(problem, interpretation, source);
62008 find mayExist(problem, interpretation, target);
62009 // Type consistency
62010 find mayInstanceOfEReference_class(problem,interpretation,source);
62011 BooleanElement(target);
62012 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62013 // the upper bound of the multiplicity should be considered.
62014 numberOfExistingReferences == count find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,_);
62015 check(numberOfExistingReferences < 1);
62016} or {
62017 find mustInRelationcontainment_attribute_EReference(problem,interpretation,source,target);
62018}
62019/**
62020 * Matcher for detecting tuples t where []container attribute EReference(source,target)
62021 */
62022private pattern mustInRelationcontainer_attribute_EReference(
62023 problem:LogicProblem, interpretation:PartialInterpretation,
62024 source: DefinedElement, target:DefinedElement)
62025{
62026 find interpretation(problem,interpretation);
62027 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62028 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
62029 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62030 BinaryElementRelationLink.param1(link,source);
62031 BinaryElementRelationLink.param2(link,target);
62032}
62033/**
62034 * Matcher for detecting tuples t where <>container attribute EReference(source,target)
62035 */
62036private pattern mayInRelationcontainer_attribute_EReference(
62037 problem:LogicProblem, interpretation:PartialInterpretation,
62038 source: DefinedElement, target:DefinedElement)
62039{
62040 find interpretation(problem,interpretation);
62041 // The two endpoint of the link have to exist
62042 find mayExist(problem, interpretation, source);
62043 find mayExist(problem, interpretation, target);
62044 // Type consistency
62045 find mayInstanceOfEReference_class(problem,interpretation,source);
62046 BooleanElement(target);
62047 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62048 // the upper bound of the multiplicity should be considered.
62049 numberOfExistingReferences == count find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,_);
62050 check(numberOfExistingReferences < 1);
62051} or {
62052 find mustInRelationcontainer_attribute_EReference(problem,interpretation,source,target);
62053}
62054/**
62055 * Matcher for detecting tuples t where []resolveProxies attribute EReference(source,target)
62056 */
62057private pattern mustInRelationresolveProxies_attribute_EReference(
62058 problem:LogicProblem, interpretation:PartialInterpretation,
62059 source: DefinedElement, target:DefinedElement)
62060{
62061 find interpretation(problem,interpretation);
62062 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62063 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
62064 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62065 BinaryElementRelationLink.param1(link,source);
62066 BinaryElementRelationLink.param2(link,target);
62067}
62068/**
62069 * Matcher for detecting tuples t where <>resolveProxies attribute EReference(source,target)
62070 */
62071private pattern mayInRelationresolveProxies_attribute_EReference(
62072 problem:LogicProblem, interpretation:PartialInterpretation,
62073 source: DefinedElement, target:DefinedElement)
62074{
62075 find interpretation(problem,interpretation);
62076 // The two endpoint of the link have to exist
62077 find mayExist(problem, interpretation, source);
62078 find mayExist(problem, interpretation, target);
62079 // Type consistency
62080 find mayInstanceOfEReference_class(problem,interpretation,source);
62081 BooleanElement(target);
62082 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62083 // the upper bound of the multiplicity should be considered.
62084 numberOfExistingReferences == count find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,_);
62085 check(numberOfExistingReferences < 1);
62086} or {
62087 find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,source,target);
62088}
62089/**
62090 * Matcher for detecting tuples t where []changeable attribute EStructuralFeature(source,target)
62091 */
62092private pattern mustInRelationchangeable_attribute_EStructuralFeature(
62093 problem:LogicProblem, interpretation:PartialInterpretation,
62094 source: DefinedElement, target:DefinedElement)
62095{
62096 find interpretation(problem,interpretation);
62097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
62099 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62100 BinaryElementRelationLink.param1(link,source);
62101 BinaryElementRelationLink.param2(link,target);
62102}
62103/**
62104 * Matcher for detecting tuples t where <>changeable attribute EStructuralFeature(source,target)
62105 */
62106private pattern mayInRelationchangeable_attribute_EStructuralFeature(
62107 problem:LogicProblem, interpretation:PartialInterpretation,
62108 source: DefinedElement, target:DefinedElement)
62109{
62110 find interpretation(problem,interpretation);
62111 // The two endpoint of the link have to exist
62112 find mayExist(problem, interpretation, source);
62113 find mayExist(problem, interpretation, target);
62114 // Type consistency
62115 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62116 BooleanElement(target);
62117 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62118 // the upper bound of the multiplicity should be considered.
62119 numberOfExistingReferences == count find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,_);
62120 check(numberOfExistingReferences < 1);
62121} or {
62122 find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,source,target);
62123}
62124/**
62125 * Matcher for detecting tuples t where []volatile attribute EStructuralFeature(source,target)
62126 */
62127private pattern mustInRelationvolatile_attribute_EStructuralFeature(
62128 problem:LogicProblem, interpretation:PartialInterpretation,
62129 source: DefinedElement, target:DefinedElement)
62130{
62131 find interpretation(problem,interpretation);
62132 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62133 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
62134 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62135 BinaryElementRelationLink.param1(link,source);
62136 BinaryElementRelationLink.param2(link,target);
62137}
62138/**
62139 * Matcher for detecting tuples t where <>volatile attribute EStructuralFeature(source,target)
62140 */
62141private pattern mayInRelationvolatile_attribute_EStructuralFeature(
62142 problem:LogicProblem, interpretation:PartialInterpretation,
62143 source: DefinedElement, target:DefinedElement)
62144{
62145 find interpretation(problem,interpretation);
62146 // The two endpoint of the link have to exist
62147 find mayExist(problem, interpretation, source);
62148 find mayExist(problem, interpretation, target);
62149 // Type consistency
62150 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62151 BooleanElement(target);
62152 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62153 // the upper bound of the multiplicity should be considered.
62154 numberOfExistingReferences == count find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,_);
62155 check(numberOfExistingReferences < 1);
62156} or {
62157 find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,source,target);
62158}
62159/**
62160 * Matcher for detecting tuples t where []transient attribute EStructuralFeature(source,target)
62161 */
62162private pattern mustInRelationtransient_attribute_EStructuralFeature(
62163 problem:LogicProblem, interpretation:PartialInterpretation,
62164 source: DefinedElement, target:DefinedElement)
62165{
62166 find interpretation(problem,interpretation);
62167 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62168 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
62169 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62170 BinaryElementRelationLink.param1(link,source);
62171 BinaryElementRelationLink.param2(link,target);
62172}
62173/**
62174 * Matcher for detecting tuples t where <>transient attribute EStructuralFeature(source,target)
62175 */
62176private pattern mayInRelationtransient_attribute_EStructuralFeature(
62177 problem:LogicProblem, interpretation:PartialInterpretation,
62178 source: DefinedElement, target:DefinedElement)
62179{
62180 find interpretation(problem,interpretation);
62181 // The two endpoint of the link have to exist
62182 find mayExist(problem, interpretation, source);
62183 find mayExist(problem, interpretation, target);
62184 // Type consistency
62185 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62186 BooleanElement(target);
62187 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62188 // the upper bound of the multiplicity should be considered.
62189 numberOfExistingReferences == count find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,_);
62190 check(numberOfExistingReferences < 1);
62191} or {
62192 find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,source,target);
62193}
62194/**
62195 * Matcher for detecting tuples t where []defaultValueLiteral attribute EStructuralFeature(source,target)
62196 */
62197private pattern mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(
62198 problem:LogicProblem, interpretation:PartialInterpretation,
62199 source: DefinedElement, target:DefinedElement)
62200{
62201 find interpretation(problem,interpretation);
62202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
62204 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62205 BinaryElementRelationLink.param1(link,source);
62206 BinaryElementRelationLink.param2(link,target);
62207}
62208/**
62209 * Matcher for detecting tuples t where <>defaultValueLiteral attribute EStructuralFeature(source,target)
62210 */
62211private pattern mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(
62212 problem:LogicProblem, interpretation:PartialInterpretation,
62213 source: DefinedElement, target:DefinedElement)
62214{
62215 find interpretation(problem,interpretation);
62216 // The two endpoint of the link have to exist
62217 find mayExist(problem, interpretation, source);
62218 find mayExist(problem, interpretation, target);
62219 // Type consistency
62220 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62221 StringElement(target);
62222 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62223 // the upper bound of the multiplicity should be considered.
62224 numberOfExistingReferences == count find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,_);
62225 check(numberOfExistingReferences < 1);
62226} or {
62227 find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,source,target);
62228}
62229/**
62230 * Matcher for detecting tuples t where []unsettable attribute EStructuralFeature(source,target)
62231 */
62232private pattern mustInRelationunsettable_attribute_EStructuralFeature(
62233 problem:LogicProblem, interpretation:PartialInterpretation,
62234 source: DefinedElement, target:DefinedElement)
62235{
62236 find interpretation(problem,interpretation);
62237 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62238 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
62239 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62240 BinaryElementRelationLink.param1(link,source);
62241 BinaryElementRelationLink.param2(link,target);
62242}
62243/**
62244 * Matcher for detecting tuples t where <>unsettable attribute EStructuralFeature(source,target)
62245 */
62246private pattern mayInRelationunsettable_attribute_EStructuralFeature(
62247 problem:LogicProblem, interpretation:PartialInterpretation,
62248 source: DefinedElement, target:DefinedElement)
62249{
62250 find interpretation(problem,interpretation);
62251 // The two endpoint of the link have to exist
62252 find mayExist(problem, interpretation, source);
62253 find mayExist(problem, interpretation, target);
62254 // Type consistency
62255 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62256 BooleanElement(target);
62257 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62258 // the upper bound of the multiplicity should be considered.
62259 numberOfExistingReferences == count find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,_);
62260 check(numberOfExistingReferences < 1);
62261} or {
62262 find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,source,target);
62263}
62264/**
62265 * Matcher for detecting tuples t where []derived attribute EStructuralFeature(source,target)
62266 */
62267private pattern mustInRelationderived_attribute_EStructuralFeature(
62268 problem:LogicProblem, interpretation:PartialInterpretation,
62269 source: DefinedElement, target:DefinedElement)
62270{
62271 find interpretation(problem,interpretation);
62272 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62273 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
62274 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62275 BinaryElementRelationLink.param1(link,source);
62276 BinaryElementRelationLink.param2(link,target);
62277}
62278/**
62279 * Matcher for detecting tuples t where <>derived attribute EStructuralFeature(source,target)
62280 */
62281private pattern mayInRelationderived_attribute_EStructuralFeature(
62282 problem:LogicProblem, interpretation:PartialInterpretation,
62283 source: DefinedElement, target:DefinedElement)
62284{
62285 find interpretation(problem,interpretation);
62286 // The two endpoint of the link have to exist
62287 find mayExist(problem, interpretation, source);
62288 find mayExist(problem, interpretation, target);
62289 // Type consistency
62290 find mayInstanceOfEStructuralFeature_class(problem,interpretation,source);
62291 BooleanElement(target);
62292 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62293 // the upper bound of the multiplicity should be considered.
62294 numberOfExistingReferences == count find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,_);
62295 check(numberOfExistingReferences < 1);
62296} or {
62297 find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,source,target);
62298}
62299/**
62300 * Matcher for detecting tuples t where []ordered attribute ETypedElement(source,target)
62301 */
62302private pattern mustInRelationordered_attribute_ETypedElement(
62303 problem:LogicProblem, interpretation:PartialInterpretation,
62304 source: DefinedElement, target:DefinedElement)
62305{
62306 find interpretation(problem,interpretation);
62307 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62308 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
62309 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62310 BinaryElementRelationLink.param1(link,source);
62311 BinaryElementRelationLink.param2(link,target);
62312}
62313/**
62314 * Matcher for detecting tuples t where <>ordered attribute ETypedElement(source,target)
62315 */
62316private pattern mayInRelationordered_attribute_ETypedElement(
62317 problem:LogicProblem, interpretation:PartialInterpretation,
62318 source: DefinedElement, target:DefinedElement)
62319{
62320 find interpretation(problem,interpretation);
62321 // The two endpoint of the link have to exist
62322 find mayExist(problem, interpretation, source);
62323 find mayExist(problem, interpretation, target);
62324 // Type consistency
62325 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62326 BooleanElement(target);
62327 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62328 // the upper bound of the multiplicity should be considered.
62329 numberOfExistingReferences == count find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,_);
62330 check(numberOfExistingReferences < 1);
62331} or {
62332 find mustInRelationordered_attribute_ETypedElement(problem,interpretation,source,target);
62333}
62334/**
62335 * Matcher for detecting tuples t where []unique attribute ETypedElement(source,target)
62336 */
62337private pattern mustInRelationunique_attribute_ETypedElement(
62338 problem:LogicProblem, interpretation:PartialInterpretation,
62339 source: DefinedElement, target:DefinedElement)
62340{
62341 find interpretation(problem,interpretation);
62342 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62343 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
62344 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62345 BinaryElementRelationLink.param1(link,source);
62346 BinaryElementRelationLink.param2(link,target);
62347}
62348/**
62349 * Matcher for detecting tuples t where <>unique attribute ETypedElement(source,target)
62350 */
62351private pattern mayInRelationunique_attribute_ETypedElement(
62352 problem:LogicProblem, interpretation:PartialInterpretation,
62353 source: DefinedElement, target:DefinedElement)
62354{
62355 find interpretation(problem,interpretation);
62356 // The two endpoint of the link have to exist
62357 find mayExist(problem, interpretation, source);
62358 find mayExist(problem, interpretation, target);
62359 // Type consistency
62360 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62361 BooleanElement(target);
62362 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62363 // the upper bound of the multiplicity should be considered.
62364 numberOfExistingReferences == count find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,_);
62365 check(numberOfExistingReferences < 1);
62366} or {
62367 find mustInRelationunique_attribute_ETypedElement(problem,interpretation,source,target);
62368}
62369/**
62370 * Matcher for detecting tuples t where []lowerBound attribute ETypedElement(source,target)
62371 */
62372private pattern mustInRelationlowerBound_attribute_ETypedElement(
62373 problem:LogicProblem, interpretation:PartialInterpretation,
62374 source: DefinedElement, target:DefinedElement)
62375{
62376 find interpretation(problem,interpretation);
62377 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62378 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
62379 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62380 BinaryElementRelationLink.param1(link,source);
62381 BinaryElementRelationLink.param2(link,target);
62382}
62383/**
62384 * Matcher for detecting tuples t where <>lowerBound attribute ETypedElement(source,target)
62385 */
62386private pattern mayInRelationlowerBound_attribute_ETypedElement(
62387 problem:LogicProblem, interpretation:PartialInterpretation,
62388 source: DefinedElement, target:DefinedElement)
62389{
62390 find interpretation(problem,interpretation);
62391 // The two endpoint of the link have to exist
62392 find mayExist(problem, interpretation, source);
62393 find mayExist(problem, interpretation, target);
62394 // Type consistency
62395 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62396 IntegerElement(target);
62397 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62398 // the upper bound of the multiplicity should be considered.
62399 numberOfExistingReferences == count find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,_);
62400 check(numberOfExistingReferences < 1);
62401} or {
62402 find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,source,target);
62403}
62404/**
62405 * Matcher for detecting tuples t where []upperBound attribute ETypedElement(source,target)
62406 */
62407private pattern mustInRelationupperBound_attribute_ETypedElement(
62408 problem:LogicProblem, interpretation:PartialInterpretation,
62409 source: DefinedElement, target:DefinedElement)
62410{
62411 find interpretation(problem,interpretation);
62412 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62413 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
62414 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62415 BinaryElementRelationLink.param1(link,source);
62416 BinaryElementRelationLink.param2(link,target);
62417}
62418/**
62419 * Matcher for detecting tuples t where <>upperBound attribute ETypedElement(source,target)
62420 */
62421private pattern mayInRelationupperBound_attribute_ETypedElement(
62422 problem:LogicProblem, interpretation:PartialInterpretation,
62423 source: DefinedElement, target:DefinedElement)
62424{
62425 find interpretation(problem,interpretation);
62426 // The two endpoint of the link have to exist
62427 find mayExist(problem, interpretation, source);
62428 find mayExist(problem, interpretation, target);
62429 // Type consistency
62430 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62431 IntegerElement(target);
62432 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62433 // the upper bound of the multiplicity should be considered.
62434 numberOfExistingReferences == count find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,_);
62435 check(numberOfExistingReferences < 1);
62436} or {
62437 find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,source,target);
62438}
62439/**
62440 * Matcher for detecting tuples t where []many attribute ETypedElement(source,target)
62441 */
62442private pattern mustInRelationmany_attribute_ETypedElement(
62443 problem:LogicProblem, interpretation:PartialInterpretation,
62444 source: DefinedElement, target:DefinedElement)
62445{
62446 find interpretation(problem,interpretation);
62447 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62448 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
62449 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62450 BinaryElementRelationLink.param1(link,source);
62451 BinaryElementRelationLink.param2(link,target);
62452}
62453/**
62454 * Matcher for detecting tuples t where <>many attribute ETypedElement(source,target)
62455 */
62456private pattern mayInRelationmany_attribute_ETypedElement(
62457 problem:LogicProblem, interpretation:PartialInterpretation,
62458 source: DefinedElement, target:DefinedElement)
62459{
62460 find interpretation(problem,interpretation);
62461 // The two endpoint of the link have to exist
62462 find mayExist(problem, interpretation, source);
62463 find mayExist(problem, interpretation, target);
62464 // Type consistency
62465 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62466 BooleanElement(target);
62467 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62468 // the upper bound of the multiplicity should be considered.
62469 numberOfExistingReferences == count find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,_);
62470 check(numberOfExistingReferences < 1);
62471} or {
62472 find mustInRelationmany_attribute_ETypedElement(problem,interpretation,source,target);
62473}
62474/**
62475 * Matcher for detecting tuples t where []required attribute ETypedElement(source,target)
62476 */
62477private pattern mustInRelationrequired_attribute_ETypedElement(
62478 problem:LogicProblem, interpretation:PartialInterpretation,
62479 source: DefinedElement, target:DefinedElement)
62480{
62481 find interpretation(problem,interpretation);
62482 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62483 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
62484 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62485 BinaryElementRelationLink.param1(link,source);
62486 BinaryElementRelationLink.param2(link,target);
62487}
62488/**
62489 * Matcher for detecting tuples t where <>required attribute ETypedElement(source,target)
62490 */
62491private pattern mayInRelationrequired_attribute_ETypedElement(
62492 problem:LogicProblem, interpretation:PartialInterpretation,
62493 source: DefinedElement, target:DefinedElement)
62494{
62495 find interpretation(problem,interpretation);
62496 // The two endpoint of the link have to exist
62497 find mayExist(problem, interpretation, source);
62498 find mayExist(problem, interpretation, target);
62499 // Type consistency
62500 find mayInstanceOfETypedElement_class(problem,interpretation,source);
62501 BooleanElement(target);
62502 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62503 // the upper bound of the multiplicity should be considered.
62504 numberOfExistingReferences == count find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,_);
62505 check(numberOfExistingReferences < 1);
62506} or {
62507 find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,source,target);
62508}
62509/**
62510 * Matcher for detecting tuples t where []key attribute EStringToStringMapEntry(source,target)
62511 */
62512private pattern mustInRelationkey_attribute_EStringToStringMapEntry(
62513 problem:LogicProblem, interpretation:PartialInterpretation,
62514 source: DefinedElement, target:DefinedElement)
62515{
62516 find interpretation(problem,interpretation);
62517 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62518 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
62519 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62520 BinaryElementRelationLink.param1(link,source);
62521 BinaryElementRelationLink.param2(link,target);
62522}
62523/**
62524 * Matcher for detecting tuples t where <>key attribute EStringToStringMapEntry(source,target)
62525 */
62526private pattern mayInRelationkey_attribute_EStringToStringMapEntry(
62527 problem:LogicProblem, interpretation:PartialInterpretation,
62528 source: DefinedElement, target:DefinedElement)
62529{
62530 find interpretation(problem,interpretation);
62531 // The two endpoint of the link have to exist
62532 find mayExist(problem, interpretation, source);
62533 find mayExist(problem, interpretation, target);
62534 // Type consistency
62535 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
62536 StringElement(target);
62537 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62538 // the upper bound of the multiplicity should be considered.
62539 numberOfExistingReferences == count find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
62540 check(numberOfExistingReferences < 1);
62541} or {
62542 find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
62543}
62544/**
62545 * Matcher for detecting tuples t where []value attribute EStringToStringMapEntry(source,target)
62546 */
62547private pattern mustInRelationvalue_attribute_EStringToStringMapEntry(
62548 problem:LogicProblem, interpretation:PartialInterpretation,
62549 source: DefinedElement, target:DefinedElement)
62550{
62551 find interpretation(problem,interpretation);
62552 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62553 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
62554 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
62555 BinaryElementRelationLink.param1(link,source);
62556 BinaryElementRelationLink.param2(link,target);
62557}
62558/**
62559 * Matcher for detecting tuples t where <>value attribute EStringToStringMapEntry(source,target)
62560 */
62561private pattern mayInRelationvalue_attribute_EStringToStringMapEntry(
62562 problem:LogicProblem, interpretation:PartialInterpretation,
62563 source: DefinedElement, target:DefinedElement)
62564{
62565 find interpretation(problem,interpretation);
62566 // The two endpoint of the link have to exist
62567 find mayExist(problem, interpretation, source);
62568 find mayExist(problem, interpretation, target);
62569 // Type consistency
62570 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,source);
62571 StringElement(target);
62572 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
62573 // the upper bound of the multiplicity should be considered.
62574 numberOfExistingReferences == count find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,_);
62575 check(numberOfExistingReferences < 1);
62576} or {
62577 find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,source,target);
62578}
62579
62580//////////
62581// 1.3 Relation Definition Indexers
62582//////////
62583
62584//////////
62585// 1.4 Containment Indexer
62586//////////
62587private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
62588 find mustContains4(_,_,source,target);
62589}
62590
62591private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
62592 source: DefinedElement, target: DefinedElement)
62593 { find mustInRelationdetails_reference_EAnnotation(problem,interpretation,source,target); }or
62594
62595 { find mustInRelationcontents_reference_EAnnotation(problem,interpretation,source,target); }or
62596
62597 { find mustInRelationeOperations_reference_EClass(problem,interpretation,source,target); }or
62598
62599 { find mustInRelationeStructuralFeatures_reference_EClass(problem,interpretation,source,target); }or
62600
62601 { find mustInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,source,target); }or
62602
62603 { find mustInRelationeTypeParameters_reference_EClassifier(problem,interpretation,source,target); }or
62604
62605 { find mustInRelationeLiterals_reference_EEnum(problem,interpretation,source,target); }or
62606
62607 { find mustInRelationeAnnotations_reference_EModelElement(problem,interpretation,source,target); }or
62608
62609 { find mustInRelationeTypeParameters_reference_EOperation(problem,interpretation,source,target); }or
62610
62611 { find mustInRelationeParameters_reference_EOperation(problem,interpretation,source,target); }or
62612
62613 { find mustInRelationeGenericExceptions_reference_EOperation(problem,interpretation,source,target); }or
62614
62615 { find mustInRelationeClassifiers_reference_EPackage(problem,interpretation,source,target); }or
62616
62617 { find mustInRelationeSubpackages_reference_EPackage(problem,interpretation,source,target); }or
62618
62619 { find mustInRelationeGenericType_reference_ETypedElement(problem,interpretation,source,target); }or
62620
62621 { find mustInRelationeUpperBound_reference_EGenericType(problem,interpretation,source,target); }or
62622
62623 { find mustInRelationeTypeArguments_reference_EGenericType(problem,interpretation,source,target); }or
62624
62625 { find mustInRelationeLowerBound_reference_EGenericType(problem,interpretation,source,target); }or
62626
62627 { find mustInRelationeBounds_reference_ETypeParameter(problem,interpretation,source,target); }
62628
62629private pattern mustTransitiveContains(source,target) {
62630 find mustContains2+(source,target);
62631}
62632
62633//////////
62634// 2. Invalidation Indexers
62635//////////
62636// 2.1 Invalidated by WF Queries
62637//////////
62638
62639//////////
62640// 3. Unfinishedness Indexers
62641//////////
62642// 3.1 Unfinishedness Measured by Multiplicity
62643//////////
62644pattern unfinishedLowerMultiplicity_eAttributeType_reference_EAttribute(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
62645 find interpretation(problem,interpretation);
62646 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62647 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
62648 find mustInstanceOfEAttribute_class(problem,interpretation,object);
62649 numberOfExistingReferences == count find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,object,_);
62650 check(numberOfExistingReferences < 1);
62651 missingMultiplicity == eval(1-numberOfExistingReferences);
62652}
62653pattern unfinishedLowerMultiplicity_eReferenceType_reference_EReference(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
62654 find interpretation(problem,interpretation);
62655 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62656 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
62657 find mustInstanceOfEReference_class(problem,interpretation,object);
62658 numberOfExistingReferences == count find mustInRelationeReferenceType_reference_EReference(problem,interpretation,object,_);
62659 check(numberOfExistingReferences < 1);
62660 missingMultiplicity == eval(1-numberOfExistingReferences);
62661}
62662pattern unfinishedLowerMultiplicity_eRawType_reference_EGenericType(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) {
62663 find interpretation(problem,interpretation);
62664 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
62665 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
62666 find mustInstanceOfEGenericType_class(problem,interpretation,object);
62667 numberOfExistingReferences == count find mustInRelationeRawType_reference_EGenericType(problem,interpretation,object,_);
62668 check(numberOfExistingReferences < 1);
62669 missingMultiplicity == eval(1-numberOfExistingReferences);
62670}
62671
62672//////////
62673// 3.2 Unfinishedness Measured by WF Queries
62674//////////
62675
62676//////////
62677// 4. Refinement Indexers
62678//////////
62679// 4.1 Object constructors
62680//////////
62681private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
62682{
62683 find interpretation(problem,interpretation);
62684 find mustInstanceOfEOperation_class(problem,interpretation,root);
62685 find mustExist(problem, interpretation, root);
62686}or{
62687 find interpretation(problem,interpretation);
62688 find mustInstanceOfENamedElement_class(problem,interpretation,root);
62689 find mustExist(problem, interpretation, root);
62690}or{
62691 find interpretation(problem,interpretation);
62692 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,root);
62693 find mustExist(problem, interpretation, root);
62694}or{
62695 find interpretation(problem,interpretation);
62696 find mustInstanceOfEEnumLiteral_class(problem,interpretation,root);
62697 find mustExist(problem, interpretation, root);
62698}or{
62699 find interpretation(problem,interpretation);
62700 find mustInstanceOfEGenericType_class(problem,interpretation,root);
62701 find mustExist(problem, interpretation, root);
62702}or{
62703 find interpretation(problem,interpretation);
62704 find mustInstanceOfEObject_class(problem,interpretation,root);
62705 find mustExist(problem, interpretation, root);
62706}or{
62707 find interpretation(problem,interpretation);
62708 find mustInstanceOfEAttribute_class(problem,interpretation,root);
62709 find mustExist(problem, interpretation, root);
62710}or{
62711 find interpretation(problem,interpretation);
62712 find mustInstanceOfEPackage_class(problem,interpretation,root);
62713 find mustExist(problem, interpretation, root);
62714}or{
62715 find interpretation(problem,interpretation);
62716 find mustInstanceOfEParameter_class(problem,interpretation,root);
62717 find mustExist(problem, interpretation, root);
62718}or{
62719 find interpretation(problem,interpretation);
62720 find mustInstanceOfEDataType_class(problem,interpretation,root);
62721 find mustExist(problem, interpretation, root);
62722}or{
62723 find interpretation(problem,interpretation);
62724 find mustInstanceOfEClassifier_class(problem,interpretation,root);
62725 find mustExist(problem, interpretation, root);
62726}or{
62727 find interpretation(problem,interpretation);
62728 find mustInstanceOfEStructuralFeature_class(problem,interpretation,root);
62729 find mustExist(problem, interpretation, root);
62730}or{
62731 find interpretation(problem,interpretation);
62732 find mustInstanceOfEModelElement_class(problem,interpretation,root);
62733 find mustExist(problem, interpretation, root);
62734}or{
62735 find interpretation(problem,interpretation);
62736 find mustInstanceOfEAnnotation_class(problem,interpretation,root);
62737 find mustExist(problem, interpretation, root);
62738}or{
62739 find interpretation(problem,interpretation);
62740 find mustInstanceOfETypeParameter_class(problem,interpretation,root);
62741 find mustExist(problem, interpretation, root);
62742}or{
62743 find interpretation(problem,interpretation);
62744 find mustInstanceOfEReference_class(problem,interpretation,root);
62745 find mustExist(problem, interpretation, root);
62746}or{
62747 find interpretation(problem,interpretation);
62748 find mustInstanceOfEEnum_class(problem,interpretation,root);
62749 find mustExist(problem, interpretation, root);
62750}or{
62751 find interpretation(problem,interpretation);
62752 find mustInstanceOfETypedElement_class(problem,interpretation,root);
62753 find mustExist(problem, interpretation, root);
62754}or{
62755 find interpretation(problem,interpretation);
62756 find mustInstanceOfEClass_class(problem,interpretation,root);
62757 find mustExist(problem, interpretation, root);
62758}or{
62759 find interpretation(problem,interpretation);
62760 find mustInstanceOfEModelElement_class_DefinedPart(problem,interpretation,root);
62761 find mustExist(problem, interpretation, root);
62762}or{
62763 find interpretation(problem,interpretation);
62764 find mustInstanceOfEModelElement_class_UndefinedPart(problem,interpretation,root);
62765 find mustExist(problem, interpretation, root);
62766}or{
62767 find interpretation(problem,interpretation);
62768 find mustInstanceOfENamedElement_class_DefinedPart(problem,interpretation,root);
62769 find mustExist(problem, interpretation, root);
62770}or{
62771 find interpretation(problem,interpretation);
62772 find mustInstanceOfENamedElement_class_UndefinedPart(problem,interpretation,root);
62773 find mustExist(problem, interpretation, root);
62774}or{
62775 find interpretation(problem,interpretation);
62776 find mustInstanceOfEPackage_class_DefinedPart(problem,interpretation,root);
62777 find mustExist(problem, interpretation, root);
62778}or{
62779 find interpretation(problem,interpretation);
62780 find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,root);
62781 find mustExist(problem, interpretation, root);
62782}
62783pattern createObject_EStringToStringMapEntry_class_by_details_reference_EAnnotation(
62784 problem:LogicProblem, interpretation:PartialInterpretation,
62785 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62786 container:DefinedElement)
62787{
62788 find interpretation(problem,interpretation);
62789 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62790 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
62791 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62792 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"details reference EAnnotation");
62793 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
62794 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
62795 find mayInRelationdetails_reference_EAnnotation(problem,interpretation,container,newObject);
62796 find mustExist(problem, interpretation, container);
62797 neg find mustExist(problem, interpretation, newObject);
62798}
62799pattern createObject_EStringToStringMapEntry_class(
62800 problem:LogicProblem, interpretation:PartialInterpretation,
62801 typeInterpretation:PartialComplexTypeInterpretation)
62802{
62803 find interpretation(problem,interpretation);
62804 neg find hasElementInContainment(problem,interpretation);
62805 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62806 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EStringToStringMapEntry class");
62807 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,newObject);
62808 find mayExist(problem, interpretation, newObject);
62809 neg find mustExist(problem, interpretation, newObject);
62810}
62811pattern createObject_EEnum_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
62812 problem:LogicProblem, interpretation:PartialInterpretation,
62813 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62814 container:DefinedElement)
62815{
62816 find interpretation(problem,interpretation);
62817 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62818 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
62819 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62820 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
62821 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
62822 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
62823 find mustInstanceOfEPackage_class(problem,interpretation,container);
62824 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
62825 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
62826 find mustExist(problem, interpretation, container);
62827 neg find mustExist(problem, interpretation, newObject);
62828}
62829pattern createObject_EEnum_class(
62830 problem:LogicProblem, interpretation:PartialInterpretation,
62831 typeInterpretation:PartialComplexTypeInterpretation)
62832{
62833 find interpretation(problem,interpretation);
62834 neg find hasElementInContainment(problem,interpretation);
62835 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62836 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnum class");
62837 find mayInstanceOfEEnum_class(problem,interpretation,newObject);
62838 find mayExist(problem, interpretation, newObject);
62839 neg find mustExist(problem, interpretation, newObject);
62840}
62841pattern createObject_EParameter_class_by_eParameters_reference_EOperation_with_eOperation_reference_EParameter(
62842 problem:LogicProblem, interpretation:PartialInterpretation,
62843 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62844 container:DefinedElement)
62845{
62846 find interpretation(problem,interpretation);
62847 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62848 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
62849 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62850 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eParameters reference EOperation");
62851 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
62852 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eOperation reference EParameter");
62853 find mustInstanceOfEOperation_class(problem,interpretation,container);
62854 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
62855 find mayInRelationeParameters_reference_EOperation(problem,interpretation,container,newObject);
62856 find mustExist(problem, interpretation, container);
62857 neg find mustExist(problem, interpretation, newObject);
62858}
62859pattern createObject_EParameter_class(
62860 problem:LogicProblem, interpretation:PartialInterpretation,
62861 typeInterpretation:PartialComplexTypeInterpretation)
62862{
62863 find interpretation(problem,interpretation);
62864 neg find hasElementInContainment(problem,interpretation);
62865 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62866 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EParameter class");
62867 find mayInstanceOfEParameter_class(problem,interpretation,newObject);
62868 find mayExist(problem, interpretation, newObject);
62869 neg find mustExist(problem, interpretation, newObject);
62870}
62871pattern createObject_EGenericType_class_by_eGenericSuperTypes_reference_EClass(
62872 problem:LogicProblem, interpretation:PartialInterpretation,
62873 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62874 container:DefinedElement)
62875{
62876 find interpretation(problem,interpretation);
62877 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62878 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62879 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62880 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericSuperTypes reference EClass");
62881 find mustInstanceOfEClass_class(problem,interpretation,container);
62882 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62883 find mayInRelationeGenericSuperTypes_reference_EClass(problem,interpretation,container,newObject);
62884 find mustExist(problem, interpretation, container);
62885 neg find mustExist(problem, interpretation, newObject);
62886}
62887pattern createObject_EGenericType_class_by_eGenericExceptions_reference_EOperation(
62888 problem:LogicProblem, interpretation:PartialInterpretation,
62889 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62890 container:DefinedElement)
62891{
62892 find interpretation(problem,interpretation);
62893 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62894 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62895 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62896 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericExceptions reference EOperation");
62897 find mustInstanceOfEOperation_class(problem,interpretation,container);
62898 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62899 find mayInRelationeGenericExceptions_reference_EOperation(problem,interpretation,container,newObject);
62900 find mustExist(problem, interpretation, container);
62901 neg find mustExist(problem, interpretation, newObject);
62902}
62903pattern createObject_EGenericType_class_by_eGenericType_reference_ETypedElement(
62904 problem:LogicProblem, interpretation:PartialInterpretation,
62905 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62906 container:DefinedElement)
62907{
62908 find interpretation(problem,interpretation);
62909 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62910 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62911 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62912 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eGenericType reference ETypedElement");
62913 find mustInstanceOfETypedElement_class(problem,interpretation,container);
62914 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62915 find mayInRelationeGenericType_reference_ETypedElement(problem,interpretation,container,newObject);
62916 find mustExist(problem, interpretation, container);
62917 neg find mustExist(problem, interpretation, newObject);
62918}
62919pattern createObject_EGenericType_class_by_eUpperBound_reference_EGenericType(
62920 problem:LogicProblem, interpretation:PartialInterpretation,
62921 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62922 container:DefinedElement)
62923{
62924 find interpretation(problem,interpretation);
62925 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62926 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62927 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62928 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eUpperBound reference EGenericType");
62929 find mustInstanceOfEGenericType_class(problem,interpretation,container);
62930 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62931 find mayInRelationeUpperBound_reference_EGenericType(problem,interpretation,container,newObject);
62932 find mustExist(problem, interpretation, container);
62933 neg find mustExist(problem, interpretation, newObject);
62934}
62935pattern createObject_EGenericType_class_by_eTypeArguments_reference_EGenericType(
62936 problem:LogicProblem, interpretation:PartialInterpretation,
62937 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62938 container:DefinedElement)
62939{
62940 find interpretation(problem,interpretation);
62941 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62942 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62943 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62944 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeArguments reference EGenericType");
62945 find mustInstanceOfEGenericType_class(problem,interpretation,container);
62946 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62947 find mayInRelationeTypeArguments_reference_EGenericType(problem,interpretation,container,newObject);
62948 find mustExist(problem, interpretation, container);
62949 neg find mustExist(problem, interpretation, newObject);
62950}
62951pattern createObject_EGenericType_class_by_eLowerBound_reference_EGenericType(
62952 problem:LogicProblem, interpretation:PartialInterpretation,
62953 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62954 container:DefinedElement)
62955{
62956 find interpretation(problem,interpretation);
62957 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62958 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62959 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62960 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLowerBound reference EGenericType");
62961 find mustInstanceOfEGenericType_class(problem,interpretation,container);
62962 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62963 find mayInRelationeLowerBound_reference_EGenericType(problem,interpretation,container,newObject);
62964 find mustExist(problem, interpretation, container);
62965 neg find mustExist(problem, interpretation, newObject);
62966}
62967pattern createObject_EGenericType_class_by_eBounds_reference_ETypeParameter(
62968 problem:LogicProblem, interpretation:PartialInterpretation,
62969 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62970 container:DefinedElement)
62971{
62972 find interpretation(problem,interpretation);
62973 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62974 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62975 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
62976 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eBounds reference ETypeParameter");
62977 find mustInstanceOfETypeParameter_class(problem,interpretation,container);
62978 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62979 find mayInRelationeBounds_reference_ETypeParameter(problem,interpretation,container,newObject);
62980 find mustExist(problem, interpretation, container);
62981 neg find mustExist(problem, interpretation, newObject);
62982}
62983pattern createObject_EGenericType_class(
62984 problem:LogicProblem, interpretation:PartialInterpretation,
62985 typeInterpretation:PartialComplexTypeInterpretation)
62986{
62987 find interpretation(problem,interpretation);
62988 neg find hasElementInContainment(problem,interpretation);
62989 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
62990 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EGenericType class");
62991 find mayInstanceOfEGenericType_class(problem,interpretation,newObject);
62992 find mayExist(problem, interpretation, newObject);
62993 neg find mustExist(problem, interpretation, newObject);
62994}
62995pattern createObject_EPackage_class_UndefinedPart_by_eSubpackages_reference_EPackage_with_eSuperPackage_reference_EPackage(
62996 problem:LogicProblem, interpretation:PartialInterpretation,
62997 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
62998 container:DefinedElement)
62999{
63000 find interpretation(problem,interpretation);
63001 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63002 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
63003 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63004 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eSubpackages reference EPackage");
63005 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63006 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eSuperPackage reference EPackage");
63007 find mustInstanceOfEPackage_class(problem,interpretation,container);
63008 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
63009 find mayInRelationeSubpackages_reference_EPackage(problem,interpretation,container,newObject);
63010 find mustExist(problem, interpretation, container);
63011 neg find mustExist(problem, interpretation, newObject);
63012}
63013pattern createObject_EPackage_class_UndefinedPart(
63014 problem:LogicProblem, interpretation:PartialInterpretation,
63015 typeInterpretation:PartialComplexTypeInterpretation)
63016{
63017 find interpretation(problem,interpretation);
63018 neg find hasElementInContainment(problem,interpretation);
63019 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63020 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EPackage class UndefinedPart");
63021 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,newObject);
63022 find mayExist(problem, interpretation, newObject);
63023 neg find mustExist(problem, interpretation, newObject);
63024}
63025pattern createObject_EObject_class_by_contents_reference_EAnnotation(
63026 problem:LogicProblem, interpretation:PartialInterpretation,
63027 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63028 container:DefinedElement)
63029{
63030 find interpretation(problem,interpretation);
63031 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63032 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
63033 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63034 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"contents reference EAnnotation");
63035 find mustInstanceOfEAnnotation_class(problem,interpretation,container);
63036 find mayInstanceOfEObject_class(problem,interpretation,newObject);
63037 find mayInRelationcontents_reference_EAnnotation(problem,interpretation,container,newObject);
63038 find mustExist(problem, interpretation, container);
63039 neg find mustExist(problem, interpretation, newObject);
63040}
63041pattern createObject_EObject_class(
63042 problem:LogicProblem, interpretation:PartialInterpretation,
63043 typeInterpretation:PartialComplexTypeInterpretation)
63044{
63045 find interpretation(problem,interpretation);
63046 neg find hasElementInContainment(problem,interpretation);
63047 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63048 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EObject class");
63049 find mayInstanceOfEObject_class(problem,interpretation,newObject);
63050 find mayExist(problem, interpretation, newObject);
63051 neg find mustExist(problem, interpretation, newObject);
63052}
63053pattern createObject_EEnumLiteral_class_by_eLiterals_reference_EEnum_with_eEnum_reference_EEnumLiteral(
63054 problem:LogicProblem, interpretation:PartialInterpretation,
63055 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63056 container:DefinedElement)
63057{
63058 find interpretation(problem,interpretation);
63059 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63060 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
63061 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63062 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eLiterals reference EEnum");
63063 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63064 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eEnum reference EEnumLiteral");
63065 find mustInstanceOfEEnum_class(problem,interpretation,container);
63066 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
63067 find mayInRelationeLiterals_reference_EEnum(problem,interpretation,container,newObject);
63068 find mustExist(problem, interpretation, container);
63069 neg find mustExist(problem, interpretation, newObject);
63070}
63071pattern createObject_EEnumLiteral_class(
63072 problem:LogicProblem, interpretation:PartialInterpretation,
63073 typeInterpretation:PartialComplexTypeInterpretation)
63074{
63075 find interpretation(problem,interpretation);
63076 neg find hasElementInContainment(problem,interpretation);
63077 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63078 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EEnumLiteral class");
63079 find mayInstanceOfEEnumLiteral_class(problem,interpretation,newObject);
63080 find mayExist(problem, interpretation, newObject);
63081 neg find mustExist(problem, interpretation, newObject);
63082}
63083pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EClassifier(
63084 problem:LogicProblem, interpretation:PartialInterpretation,
63085 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63086 container:DefinedElement)
63087{
63088 find interpretation(problem,interpretation);
63089 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63090 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
63091 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63092 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EClassifier");
63093 find mustInstanceOfEClassifier_class(problem,interpretation,container);
63094 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
63095 find mayInRelationeTypeParameters_reference_EClassifier(problem,interpretation,container,newObject);
63096 find mustExist(problem, interpretation, container);
63097 neg find mustExist(problem, interpretation, newObject);
63098}
63099pattern createObject_ETypeParameter_class_by_eTypeParameters_reference_EOperation(
63100 problem:LogicProblem, interpretation:PartialInterpretation,
63101 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63102 container:DefinedElement)
63103{
63104 find interpretation(problem,interpretation);
63105 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63106 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
63107 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63108 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eTypeParameters reference EOperation");
63109 find mustInstanceOfEOperation_class(problem,interpretation,container);
63110 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
63111 find mayInRelationeTypeParameters_reference_EOperation(problem,interpretation,container,newObject);
63112 find mustExist(problem, interpretation, container);
63113 neg find mustExist(problem, interpretation, newObject);
63114}
63115pattern createObject_ETypeParameter_class(
63116 problem:LogicProblem, interpretation:PartialInterpretation,
63117 typeInterpretation:PartialComplexTypeInterpretation)
63118{
63119 find interpretation(problem,interpretation);
63120 neg find hasElementInContainment(problem,interpretation);
63121 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63122 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"ETypeParameter class");
63123 find mayInstanceOfETypeParameter_class(problem,interpretation,newObject);
63124 find mayExist(problem, interpretation, newObject);
63125 neg find mustExist(problem, interpretation, newObject);
63126}
63127pattern createObject_EAttribute_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
63128 problem:LogicProblem, interpretation:PartialInterpretation,
63129 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63130 container:DefinedElement)
63131{
63132 find interpretation(problem,interpretation);
63133 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63134 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
63135 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63136 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
63137 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63138 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
63139 find mustInstanceOfEClass_class(problem,interpretation,container);
63140 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
63141 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
63142 find mustExist(problem, interpretation, container);
63143 neg find mustExist(problem, interpretation, newObject);
63144}
63145pattern createObject_EAttribute_class(
63146 problem:LogicProblem, interpretation:PartialInterpretation,
63147 typeInterpretation:PartialComplexTypeInterpretation)
63148{
63149 find interpretation(problem,interpretation);
63150 neg find hasElementInContainment(problem,interpretation);
63151 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63152 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAttribute class");
63153 find mayInstanceOfEAttribute_class(problem,interpretation,newObject);
63154 find mayExist(problem, interpretation, newObject);
63155 neg find mustExist(problem, interpretation, newObject);
63156}
63157pattern createObject_EOperation_class_by_eOperations_reference_EClass_with_eContainingClass_reference_EOperation(
63158 problem:LogicProblem, interpretation:PartialInterpretation,
63159 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63160 container:DefinedElement)
63161{
63162 find interpretation(problem,interpretation);
63163 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63164 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
63165 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63166 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eOperations reference EClass");
63167 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63168 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EOperation");
63169 find mustInstanceOfEClass_class(problem,interpretation,container);
63170 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
63171 find mayInRelationeOperations_reference_EClass(problem,interpretation,container,newObject);
63172 find mustExist(problem, interpretation, container);
63173 neg find mustExist(problem, interpretation, newObject);
63174}
63175pattern createObject_EOperation_class(
63176 problem:LogicProblem, interpretation:PartialInterpretation,
63177 typeInterpretation:PartialComplexTypeInterpretation)
63178{
63179 find interpretation(problem,interpretation);
63180 neg find hasElementInContainment(problem,interpretation);
63181 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63182 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EOperation class");
63183 find mayInstanceOfEOperation_class(problem,interpretation,newObject);
63184 find mayExist(problem, interpretation, newObject);
63185 neg find mustExist(problem, interpretation, newObject);
63186}
63187pattern createObject_EAnnotation_class_by_eAnnotations_reference_EModelElement_with_eModelElement_reference_EAnnotation(
63188 problem:LogicProblem, interpretation:PartialInterpretation,
63189 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63190 container:DefinedElement)
63191{
63192 find interpretation(problem,interpretation);
63193 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63194 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
63195 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63196 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eAnnotations reference EModelElement");
63197 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63198 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eModelElement reference EAnnotation");
63199 find mustInstanceOfEModelElement_class(problem,interpretation,container);
63200 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
63201 find mayInRelationeAnnotations_reference_EModelElement(problem,interpretation,container,newObject);
63202 find mustExist(problem, interpretation, container);
63203 neg find mustExist(problem, interpretation, newObject);
63204}
63205pattern createObject_EAnnotation_class(
63206 problem:LogicProblem, interpretation:PartialInterpretation,
63207 typeInterpretation:PartialComplexTypeInterpretation)
63208{
63209 find interpretation(problem,interpretation);
63210 neg find hasElementInContainment(problem,interpretation);
63211 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63212 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EAnnotation class");
63213 find mayInstanceOfEAnnotation_class(problem,interpretation,newObject);
63214 find mayExist(problem, interpretation, newObject);
63215 neg find mustExist(problem, interpretation, newObject);
63216}
63217pattern createObject_EReference_class_by_eStructuralFeatures_reference_EClass_with_eContainingClass_reference_EStructuralFeature(
63218 problem:LogicProblem, interpretation:PartialInterpretation,
63219 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63220 container:DefinedElement)
63221{
63222 find interpretation(problem,interpretation);
63223 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63224 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
63225 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63226 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eStructuralFeatures reference EClass");
63227 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63228 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"eContainingClass reference EStructuralFeature");
63229 find mustInstanceOfEClass_class(problem,interpretation,container);
63230 find mayInstanceOfEReference_class(problem,interpretation,newObject);
63231 find mayInRelationeStructuralFeatures_reference_EClass(problem,interpretation,container,newObject);
63232 find mustExist(problem, interpretation, container);
63233 neg find mustExist(problem, interpretation, newObject);
63234}
63235pattern createObject_EReference_class(
63236 problem:LogicProblem, interpretation:PartialInterpretation,
63237 typeInterpretation:PartialComplexTypeInterpretation)
63238{
63239 find interpretation(problem,interpretation);
63240 neg find hasElementInContainment(problem,interpretation);
63241 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63242 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EReference class");
63243 find mayInstanceOfEReference_class(problem,interpretation,newObject);
63244 find mayExist(problem, interpretation, newObject);
63245 neg find mustExist(problem, interpretation, newObject);
63246}
63247pattern createObject_EDataType_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
63248 problem:LogicProblem, interpretation:PartialInterpretation,
63249 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63250 container:DefinedElement)
63251{
63252 find interpretation(problem,interpretation);
63253 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63254 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
63255 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63256 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
63257 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63258 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
63259 find mustInstanceOfEPackage_class(problem,interpretation,container);
63260 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
63261 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
63262 find mustExist(problem, interpretation, container);
63263 neg find mustExist(problem, interpretation, newObject);
63264}
63265pattern createObject_EDataType_class(
63266 problem:LogicProblem, interpretation:PartialInterpretation,
63267 typeInterpretation:PartialComplexTypeInterpretation)
63268{
63269 find interpretation(problem,interpretation);
63270 neg find hasElementInContainment(problem,interpretation);
63271 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63272 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EDataType class");
63273 find mayInstanceOfEDataType_class(problem,interpretation,newObject);
63274 find mayExist(problem, interpretation, newObject);
63275 neg find mustExist(problem, interpretation, newObject);
63276}
63277pattern createObject_EClass_class_by_eClassifiers_reference_EPackage_with_ePackage_reference_EClassifier(
63278 problem:LogicProblem, interpretation:PartialInterpretation,
63279 relationInterpretation:PartialRelationInterpretation, inverseInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
63280 container:DefinedElement)
63281{
63282 find interpretation(problem,interpretation);
63283 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63284 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
63285 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
63286 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"eClassifiers reference EPackage");
63287 PartialInterpretation.partialrelationinterpretation(interpretation,inverseInterpretation);
63288 PartialRelationInterpretation.interpretationOf.name(inverseInterpretation,"ePackage reference EClassifier");
63289 find mustInstanceOfEPackage_class(problem,interpretation,container);
63290 find mayInstanceOfEClass_class(problem,interpretation,newObject);
63291 find mayInRelationeClassifiers_reference_EPackage(problem,interpretation,container,newObject);
63292 find mustExist(problem, interpretation, container);
63293 neg find mustExist(problem, interpretation, newObject);
63294}
63295pattern createObject_EClass_class(
63296 problem:LogicProblem, interpretation:PartialInterpretation,
63297 typeInterpretation:PartialComplexTypeInterpretation)
63298{
63299 find interpretation(problem,interpretation);
63300 neg find hasElementInContainment(problem,interpretation);
63301 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
63302 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"EClass class");
63303 find mayInstanceOfEClass_class(problem,interpretation,newObject);
63304 find mayExist(problem, interpretation, newObject);
63305 neg find mustExist(problem, interpretation, newObject);
63306}
63307
63308//////////
63309// 4.2 Type refinement
63310//////////
63311pattern refineTypeTo_EStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63312 find interpretation(problem,interpretation);
63313 PartialInterpretation.newElements(interpretation,element);
63314 find mayInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63315 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63316 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63317 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63318 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
63319}
63320pattern refineTypeTo_EEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63321 find interpretation(problem,interpretation);
63322 PartialInterpretation.newElements(interpretation,element);
63323 find mayInstanceOfEEnum_class(problem,interpretation,element);
63324 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63325 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63326 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
63327 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63328 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63329 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63330 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63331 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63332 neg find mustInstanceOfEClass_class(problem,interpretation,element);
63333 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63334}
63335pattern refineTypeTo_EParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63336 find interpretation(problem,interpretation);
63337 PartialInterpretation.newElements(interpretation,element);
63338 find mayInstanceOfEParameter_class(problem,interpretation,element);
63339 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63340 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63341 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63342 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63343 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63344 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63345 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63346 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
63347 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63348 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63349 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63350}
63351pattern refineTypeTo_EGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63352 find interpretation(problem,interpretation);
63353 PartialInterpretation.newElements(interpretation,element);
63354 find mayInstanceOfEGenericType_class(problem,interpretation,element);
63355 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63356 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63357 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63358 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
63359}
63360pattern refineTypeTo_EPackage_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63361 find interpretation(problem,interpretation);
63362 PartialInterpretation.newElements(interpretation,element);
63363 find mayInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
63364 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63365 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63366 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63367 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63368 neg find mustInstanceOfEPackage_class_UndefinedPart(problem,interpretation,element);
63369 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63370 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63371 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63372 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63373}
63374pattern refineTypeTo_EObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63375 find interpretation(problem,interpretation);
63376 PartialInterpretation.newElements(interpretation,element);
63377 find mayInstanceOfEObject_class(problem,interpretation,element);
63378 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63379 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63380 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63381 neg find mustInstanceOfEModelElement_class(problem,interpretation,element);
63382}
63383pattern refineTypeTo_EEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63384 find interpretation(problem,interpretation);
63385 PartialInterpretation.newElements(interpretation,element);
63386 find mayInstanceOfEEnumLiteral_class(problem,interpretation,element);
63387 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63388 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63389 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63390 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63391 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63392 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63393 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63394 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63395 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63396}
63397pattern refineTypeTo_ETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63398 find interpretation(problem,interpretation);
63399 PartialInterpretation.newElements(interpretation,element);
63400 find mayInstanceOfETypeParameter_class(problem,interpretation,element);
63401 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63402 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63403 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63404 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63405 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63406 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63407 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63408 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63409 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63410}
63411pattern refineTypeTo_EAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63412 find interpretation(problem,interpretation);
63413 PartialInterpretation.newElements(interpretation,element);
63414 find mayInstanceOfEAttribute_class(problem,interpretation,element);
63415 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63416 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63417 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63418 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63419 neg find mustInstanceOfEReference_class(problem,interpretation,element);
63420 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63421 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63422 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63423 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63424 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63425 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
63426 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63427}
63428pattern refineTypeTo_EOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63429 find interpretation(problem,interpretation);
63430 PartialInterpretation.newElements(interpretation,element);
63431 find mayInstanceOfEOperation_class(problem,interpretation,element);
63432 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63433 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63434 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63435 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63436 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63437 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63438 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63439 neg find mustInstanceOfEStructuralFeature_class(problem,interpretation,element);
63440 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63441 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63442 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63443}
63444pattern refineTypeTo_EAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63445 find interpretation(problem,interpretation);
63446 PartialInterpretation.newElements(interpretation,element);
63447 find mayInstanceOfEAnnotation_class(problem,interpretation,element);
63448 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63449 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63450 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63451 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63452 neg find mustInstanceOfENamedElement_class(problem,interpretation,element);
63453}
63454pattern refineTypeTo_EReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63455 find interpretation(problem,interpretation);
63456 PartialInterpretation.newElements(interpretation,element);
63457 find mayInstanceOfEReference_class(problem,interpretation,element);
63458 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63459 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63460 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63461 neg find mustInstanceOfEParameter_class(problem,interpretation,element);
63462 neg find mustInstanceOfEReference_class(problem,interpretation,element);
63463 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63464 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63465 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63466 neg find mustInstanceOfEClassifier_class(problem,interpretation,element);
63467 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63468 neg find mustInstanceOfEOperation_class(problem,interpretation,element);
63469 neg find mustInstanceOfEAttribute_class(problem,interpretation,element);
63470}
63471pattern refineTypeTo_EDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63472 find interpretation(problem,interpretation);
63473 PartialInterpretation.newElements(interpretation,element);
63474 find mayInstanceOfEDataType_class(problem,interpretation,element);
63475 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63476 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63477 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63478 neg find mustInstanceOfEEnum_class(problem,interpretation,element);
63479 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63480 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63481 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
63482 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63483 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63484 neg find mustInstanceOfEClass_class(problem,interpretation,element);
63485 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63486}
63487pattern refineTypeTo_EClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
63488 find interpretation(problem,interpretation);
63489 PartialInterpretation.newElements(interpretation,element);
63490 find mayInstanceOfEClass_class(problem,interpretation,element);
63491 neg find mustInstanceOfEAnnotation_class(problem,interpretation,element);
63492 neg find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,element);
63493 neg find mustInstanceOfEGenericType_class(problem,interpretation,element);
63494 neg find mustInstanceOfEObject_class(problem,interpretation,element);
63495 neg find mustInstanceOfEDataType_class(problem,interpretation,element);
63496 neg find mustInstanceOfEEnumLiteral_class(problem,interpretation,element);
63497 neg find mustInstanceOfETypeParameter_class(problem,interpretation,element);
63498 neg find mustInstanceOfETypedElement_class(problem,interpretation,element);
63499 neg find mustInstanceOfEClass_class(problem,interpretation,element);
63500 neg find mustInstanceOfEPackage_class(problem,interpretation,element);
63501}
63502
63503//////////
63504// 4.3 Relation refinement
63505//////////
63506pattern refineRelation_eAttributeType_reference_EAttribute(
63507 problem:LogicProblem, interpretation:PartialInterpretation,
63508 relationIterpretation:PartialRelationInterpretation,
63509 from: DefinedElement, to: DefinedElement)
63510{
63511 find interpretation(problem,interpretation);
63512 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63513 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributeType reference EAttribute");
63514 find mustExist(problem, interpretation, from);
63515 find mustExist(problem, interpretation, to);
63516 find mustInstanceOfEAttribute_class(problem,interpretation,from);
63517 find mustInstanceOfEDataType_class(problem,interpretation,to);
63518 find mayInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
63519 neg find mustInRelationeAttributeType_reference_EAttribute(problem,interpretation,from,to);
63520}
63521pattern refineRelation_references_reference_EAnnotation(
63522 problem:LogicProblem, interpretation:PartialInterpretation,
63523 relationIterpretation:PartialRelationInterpretation,
63524 from: DefinedElement, to: DefinedElement)
63525{
63526 find interpretation(problem,interpretation);
63527 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63528 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"references reference EAnnotation");
63529 find mustExist(problem, interpretation, from);
63530 find mustExist(problem, interpretation, to);
63531 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
63532 find mustInstanceOfEObject_class(problem,interpretation,to);
63533 find mayInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
63534 neg find mustInRelationreferences_reference_EAnnotation(problem,interpretation,from,to);
63535}
63536pattern refineRelation_eSuperTypes_reference_EClass(
63537 problem:LogicProblem, interpretation:PartialInterpretation,
63538 relationIterpretation:PartialRelationInterpretation,
63539 from: DefinedElement, to: DefinedElement)
63540{
63541 find interpretation(problem,interpretation);
63542 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63543 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eSuperTypes reference EClass");
63544 find mustExist(problem, interpretation, from);
63545 find mustExist(problem, interpretation, to);
63546 find mustInstanceOfEClass_class(problem,interpretation,from);
63547 find mustInstanceOfEClass_class(problem,interpretation,to);
63548 find mayInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
63549 neg find mustInRelationeSuperTypes_reference_EClass(problem,interpretation,from,to);
63550}
63551pattern refineRelation_eAllAttributes_reference_EClass(
63552 problem:LogicProblem, interpretation:PartialInterpretation,
63553 relationIterpretation:PartialRelationInterpretation,
63554 from: DefinedElement, to: DefinedElement)
63555{
63556 find interpretation(problem,interpretation);
63557 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63558 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllAttributes reference EClass");
63559 find mustExist(problem, interpretation, from);
63560 find mustExist(problem, interpretation, to);
63561 find mustInstanceOfEClass_class(problem,interpretation,from);
63562 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63563 find mayInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
63564 neg find mustInRelationeAllAttributes_reference_EClass(problem,interpretation,from,to);
63565}
63566pattern refineRelation_eAllReferences_reference_EClass(
63567 problem:LogicProblem, interpretation:PartialInterpretation,
63568 relationIterpretation:PartialRelationInterpretation,
63569 from: DefinedElement, to: DefinedElement)
63570{
63571 find interpretation(problem,interpretation);
63572 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63573 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllReferences reference EClass");
63574 find mustExist(problem, interpretation, from);
63575 find mustExist(problem, interpretation, to);
63576 find mustInstanceOfEClass_class(problem,interpretation,from);
63577 find mustInstanceOfEReference_class(problem,interpretation,to);
63578 find mayInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
63579 neg find mustInRelationeAllReferences_reference_EClass(problem,interpretation,from,to);
63580}
63581pattern refineRelation_eReferences_reference_EClass(
63582 problem:LogicProblem, interpretation:PartialInterpretation,
63583 relationIterpretation:PartialRelationInterpretation,
63584 from: DefinedElement, to: DefinedElement)
63585{
63586 find interpretation(problem,interpretation);
63587 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63588 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferences reference EClass");
63589 find mustExist(problem, interpretation, from);
63590 find mustExist(problem, interpretation, to);
63591 find mustInstanceOfEClass_class(problem,interpretation,from);
63592 find mustInstanceOfEReference_class(problem,interpretation,to);
63593 find mayInRelationeReferences_reference_EClass(problem,interpretation,from,to);
63594 neg find mustInRelationeReferences_reference_EClass(problem,interpretation,from,to);
63595}
63596pattern refineRelation_eAttributes_reference_EClass(
63597 problem:LogicProblem, interpretation:PartialInterpretation,
63598 relationIterpretation:PartialRelationInterpretation,
63599 from: DefinedElement, to: DefinedElement)
63600{
63601 find interpretation(problem,interpretation);
63602 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63603 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAttributes reference EClass");
63604 find mustExist(problem, interpretation, from);
63605 find mustExist(problem, interpretation, to);
63606 find mustInstanceOfEClass_class(problem,interpretation,from);
63607 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63608 find mayInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
63609 neg find mustInRelationeAttributes_reference_EClass(problem,interpretation,from,to);
63610}
63611pattern refineRelation_eAllContainments_reference_EClass(
63612 problem:LogicProblem, interpretation:PartialInterpretation,
63613 relationIterpretation:PartialRelationInterpretation,
63614 from: DefinedElement, to: DefinedElement)
63615{
63616 find interpretation(problem,interpretation);
63617 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63618 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllContainments reference EClass");
63619 find mustExist(problem, interpretation, from);
63620 find mustExist(problem, interpretation, to);
63621 find mustInstanceOfEClass_class(problem,interpretation,from);
63622 find mustInstanceOfEReference_class(problem,interpretation,to);
63623 find mayInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
63624 neg find mustInRelationeAllContainments_reference_EClass(problem,interpretation,from,to);
63625}
63626pattern refineRelation_eAllOperations_reference_EClass(
63627 problem:LogicProblem, interpretation:PartialInterpretation,
63628 relationIterpretation:PartialRelationInterpretation,
63629 from: DefinedElement, to: DefinedElement)
63630{
63631 find interpretation(problem,interpretation);
63632 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63633 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllOperations reference EClass");
63634 find mustExist(problem, interpretation, from);
63635 find mustExist(problem, interpretation, to);
63636 find mustInstanceOfEClass_class(problem,interpretation,from);
63637 find mustInstanceOfEOperation_class(problem,interpretation,to);
63638 find mayInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
63639 neg find mustInRelationeAllOperations_reference_EClass(problem,interpretation,from,to);
63640}
63641pattern refineRelation_eAllStructuralFeatures_reference_EClass(
63642 problem:LogicProblem, interpretation:PartialInterpretation,
63643 relationIterpretation:PartialRelationInterpretation,
63644 from: DefinedElement, to: DefinedElement)
63645{
63646 find interpretation(problem,interpretation);
63647 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63648 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllStructuralFeatures reference EClass");
63649 find mustExist(problem, interpretation, from);
63650 find mustExist(problem, interpretation, to);
63651 find mustInstanceOfEClass_class(problem,interpretation,from);
63652 find mustInstanceOfEStructuralFeature_class(problem,interpretation,to);
63653 find mayInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
63654 neg find mustInRelationeAllStructuralFeatures_reference_EClass(problem,interpretation,from,to);
63655}
63656pattern refineRelation_eAllSuperTypes_reference_EClass(
63657 problem:LogicProblem, interpretation:PartialInterpretation,
63658 relationIterpretation:PartialRelationInterpretation,
63659 from: DefinedElement, to: DefinedElement)
63660{
63661 find interpretation(problem,interpretation);
63662 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63663 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllSuperTypes reference EClass");
63664 find mustExist(problem, interpretation, from);
63665 find mustExist(problem, interpretation, to);
63666 find mustInstanceOfEClass_class(problem,interpretation,from);
63667 find mustInstanceOfEClass_class(problem,interpretation,to);
63668 find mayInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
63669 neg find mustInRelationeAllSuperTypes_reference_EClass(problem,interpretation,from,to);
63670}
63671pattern refineRelation_eIDAttribute_reference_EClass(
63672 problem:LogicProblem, interpretation:PartialInterpretation,
63673 relationIterpretation:PartialRelationInterpretation,
63674 from: DefinedElement, to: DefinedElement)
63675{
63676 find interpretation(problem,interpretation);
63677 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63678 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eIDAttribute reference EClass");
63679 find mustExist(problem, interpretation, from);
63680 find mustExist(problem, interpretation, to);
63681 find mustInstanceOfEClass_class(problem,interpretation,from);
63682 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63683 find mayInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
63684 neg find mustInRelationeIDAttribute_reference_EClass(problem,interpretation,from,to);
63685}
63686pattern refineRelation_eAllGenericSuperTypes_reference_EClass(
63687 problem:LogicProblem, interpretation:PartialInterpretation,
63688 relationIterpretation:PartialRelationInterpretation,
63689 from: DefinedElement, to: DefinedElement)
63690{
63691 find interpretation(problem,interpretation);
63692 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63693 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eAllGenericSuperTypes reference EClass");
63694 find mustExist(problem, interpretation, from);
63695 find mustExist(problem, interpretation, to);
63696 find mustInstanceOfEClass_class(problem,interpretation,from);
63697 find mustInstanceOfEGenericType_class(problem,interpretation,to);
63698 find mayInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
63699 neg find mustInRelationeAllGenericSuperTypes_reference_EClass(problem,interpretation,from,to);
63700}
63701pattern refineRelation_eExceptions_reference_EOperation(
63702 problem:LogicProblem, interpretation:PartialInterpretation,
63703 relationIterpretation:PartialRelationInterpretation,
63704 from: DefinedElement, to: DefinedElement)
63705{
63706 find interpretation(problem,interpretation);
63707 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63708 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eExceptions reference EOperation");
63709 find mustExist(problem, interpretation, from);
63710 find mustExist(problem, interpretation, to);
63711 find mustInstanceOfEOperation_class(problem,interpretation,from);
63712 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63713 find mayInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
63714 neg find mustInRelationeExceptions_reference_EOperation(problem,interpretation,from,to);
63715}
63716pattern refineRelation_eOpposite_reference_EReference(
63717 problem:LogicProblem, interpretation:PartialInterpretation,
63718 relationIterpretation:PartialRelationInterpretation,
63719 from: DefinedElement, to: DefinedElement)
63720{
63721 find interpretation(problem,interpretation);
63722 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63723 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eOpposite reference EReference");
63724 find mustExist(problem, interpretation, from);
63725 find mustExist(problem, interpretation, to);
63726 find mustInstanceOfEReference_class(problem,interpretation,from);
63727 find mustInstanceOfEReference_class(problem,interpretation,to);
63728 find mayInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
63729 neg find mustInRelationeOpposite_reference_EReference(problem,interpretation,from,to);
63730}
63731pattern refineRelation_eReferenceType_reference_EReference(
63732 problem:LogicProblem, interpretation:PartialInterpretation,
63733 relationIterpretation:PartialRelationInterpretation,
63734 from: DefinedElement, to: DefinedElement)
63735{
63736 find interpretation(problem,interpretation);
63737 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63738 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eReferenceType reference EReference");
63739 find mustExist(problem, interpretation, from);
63740 find mustExist(problem, interpretation, to);
63741 find mustInstanceOfEReference_class(problem,interpretation,from);
63742 find mustInstanceOfEClass_class(problem,interpretation,to);
63743 find mayInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
63744 neg find mustInRelationeReferenceType_reference_EReference(problem,interpretation,from,to);
63745}
63746pattern refineRelation_eKeys_reference_EReference(
63747 problem:LogicProblem, interpretation:PartialInterpretation,
63748 relationIterpretation:PartialRelationInterpretation,
63749 from: DefinedElement, to: DefinedElement)
63750{
63751 find interpretation(problem,interpretation);
63752 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63753 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eKeys reference EReference");
63754 find mustExist(problem, interpretation, from);
63755 find mustExist(problem, interpretation, to);
63756 find mustInstanceOfEReference_class(problem,interpretation,from);
63757 find mustInstanceOfEAttribute_class(problem,interpretation,to);
63758 find mayInRelationeKeys_reference_EReference(problem,interpretation,from,to);
63759 neg find mustInRelationeKeys_reference_EReference(problem,interpretation,from,to);
63760}
63761pattern refineRelation_eType_reference_ETypedElement(
63762 problem:LogicProblem, interpretation:PartialInterpretation,
63763 relationIterpretation:PartialRelationInterpretation,
63764 from: DefinedElement, to: DefinedElement)
63765{
63766 find interpretation(problem,interpretation);
63767 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63768 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eType reference ETypedElement");
63769 find mustExist(problem, interpretation, from);
63770 find mustExist(problem, interpretation, to);
63771 find mustInstanceOfETypedElement_class(problem,interpretation,from);
63772 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63773 find mayInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
63774 neg find mustInRelationeType_reference_ETypedElement(problem,interpretation,from,to);
63775}
63776pattern refineRelation_eRawType_reference_EGenericType(
63777 problem:LogicProblem, interpretation:PartialInterpretation,
63778 relationIterpretation:PartialRelationInterpretation,
63779 from: DefinedElement, to: DefinedElement)
63780{
63781 find interpretation(problem,interpretation);
63782 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63783 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eRawType reference EGenericType");
63784 find mustExist(problem, interpretation, from);
63785 find mustExist(problem, interpretation, to);
63786 find mustInstanceOfEGenericType_class(problem,interpretation,from);
63787 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63788 find mayInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
63789 neg find mustInRelationeRawType_reference_EGenericType(problem,interpretation,from,to);
63790}
63791pattern refineRelation_eTypeParameter_reference_EGenericType(
63792 problem:LogicProblem, interpretation:PartialInterpretation,
63793 relationIterpretation:PartialRelationInterpretation,
63794 from: DefinedElement, to: DefinedElement)
63795{
63796 find interpretation(problem,interpretation);
63797 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63798 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eTypeParameter reference EGenericType");
63799 find mustExist(problem, interpretation, from);
63800 find mustExist(problem, interpretation, to);
63801 find mustInstanceOfEGenericType_class(problem,interpretation,from);
63802 find mustInstanceOfETypeParameter_class(problem,interpretation,to);
63803 find mayInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
63804 neg find mustInRelationeTypeParameter_reference_EGenericType(problem,interpretation,from,to);
63805}
63806pattern refineRelation_eClassifier_reference_EGenericType(
63807 problem:LogicProblem, interpretation:PartialInterpretation,
63808 relationIterpretation:PartialRelationInterpretation,
63809 from: DefinedElement, to: DefinedElement)
63810{
63811 find interpretation(problem,interpretation);
63812 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63813 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"eClassifier reference EGenericType");
63814 find mustExist(problem, interpretation, from);
63815 find mustExist(problem, interpretation, to);
63816 find mustInstanceOfEGenericType_class(problem,interpretation,from);
63817 find mustInstanceOfEClassifier_class(problem,interpretation,to);
63818 find mayInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
63819 neg find mustInRelationeClassifier_reference_EGenericType(problem,interpretation,from,to);
63820}
63821pattern refineRelation_iD_attribute_EAttribute(
63822 problem:LogicProblem, interpretation:PartialInterpretation,
63823 relationIterpretation:PartialRelationInterpretation,
63824 from: DefinedElement, to: DefinedElement)
63825{
63826 find interpretation(problem,interpretation);
63827 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63828 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"iD attribute EAttribute");
63829 find mustExist(problem, interpretation, from);
63830 find mustExist(problem, interpretation, to);
63831 find mustInstanceOfEAttribute_class(problem,interpretation,from);
63832 BooleanElement(to);
63833 find mayInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
63834 neg find mustInRelationiD_attribute_EAttribute(problem,interpretation,from,to);
63835}
63836pattern refineRelation_source_attribute_EAnnotation(
63837 problem:LogicProblem, interpretation:PartialInterpretation,
63838 relationIterpretation:PartialRelationInterpretation,
63839 from: DefinedElement, to: DefinedElement)
63840{
63841 find interpretation(problem,interpretation);
63842 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63843 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"source attribute EAnnotation");
63844 find mustExist(problem, interpretation, from);
63845 find mustExist(problem, interpretation, to);
63846 find mustInstanceOfEAnnotation_class(problem,interpretation,from);
63847 StringElement(to);
63848 find mayInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
63849 neg find mustInRelationsource_attribute_EAnnotation(problem,interpretation,from,to);
63850}
63851pattern refineRelation_abstract_attribute_EClass(
63852 problem:LogicProblem, interpretation:PartialInterpretation,
63853 relationIterpretation:PartialRelationInterpretation,
63854 from: DefinedElement, to: DefinedElement)
63855{
63856 find interpretation(problem,interpretation);
63857 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63858 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"abstract attribute EClass");
63859 find mustExist(problem, interpretation, from);
63860 find mustExist(problem, interpretation, to);
63861 find mustInstanceOfEClass_class(problem,interpretation,from);
63862 BooleanElement(to);
63863 find mayInRelationabstract_attribute_EClass(problem,interpretation,from,to);
63864 neg find mustInRelationabstract_attribute_EClass(problem,interpretation,from,to);
63865}
63866pattern refineRelation_interface_attribute_EClass(
63867 problem:LogicProblem, interpretation:PartialInterpretation,
63868 relationIterpretation:PartialRelationInterpretation,
63869 from: DefinedElement, to: DefinedElement)
63870{
63871 find interpretation(problem,interpretation);
63872 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63873 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"interface attribute EClass");
63874 find mustExist(problem, interpretation, from);
63875 find mustExist(problem, interpretation, to);
63876 find mustInstanceOfEClass_class(problem,interpretation,from);
63877 BooleanElement(to);
63878 find mayInRelationinterface_attribute_EClass(problem,interpretation,from,to);
63879 neg find mustInRelationinterface_attribute_EClass(problem,interpretation,from,to);
63880}
63881pattern refineRelation_instanceClassName_attribute_EClassifier(
63882 problem:LogicProblem, interpretation:PartialInterpretation,
63883 relationIterpretation:PartialRelationInterpretation,
63884 from: DefinedElement, to: DefinedElement)
63885{
63886 find interpretation(problem,interpretation);
63887 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63888 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceClassName attribute EClassifier");
63889 find mustExist(problem, interpretation, from);
63890 find mustExist(problem, interpretation, to);
63891 find mustInstanceOfEClassifier_class(problem,interpretation,from);
63892 StringElement(to);
63893 find mayInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
63894 neg find mustInRelationinstanceClassName_attribute_EClassifier(problem,interpretation,from,to);
63895}
63896pattern refineRelation_instanceTypeName_attribute_EClassifier(
63897 problem:LogicProblem, interpretation:PartialInterpretation,
63898 relationIterpretation:PartialRelationInterpretation,
63899 from: DefinedElement, to: DefinedElement)
63900{
63901 find interpretation(problem,interpretation);
63902 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63903 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"instanceTypeName attribute EClassifier");
63904 find mustExist(problem, interpretation, from);
63905 find mustExist(problem, interpretation, to);
63906 find mustInstanceOfEClassifier_class(problem,interpretation,from);
63907 StringElement(to);
63908 find mayInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
63909 neg find mustInRelationinstanceTypeName_attribute_EClassifier(problem,interpretation,from,to);
63910}
63911pattern refineRelation_serializable_attribute_EDataType(
63912 problem:LogicProblem, interpretation:PartialInterpretation,
63913 relationIterpretation:PartialRelationInterpretation,
63914 from: DefinedElement, to: DefinedElement)
63915{
63916 find interpretation(problem,interpretation);
63917 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63918 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"serializable attribute EDataType");
63919 find mustExist(problem, interpretation, from);
63920 find mustExist(problem, interpretation, to);
63921 find mustInstanceOfEDataType_class(problem,interpretation,from);
63922 BooleanElement(to);
63923 find mayInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
63924 neg find mustInRelationserializable_attribute_EDataType(problem,interpretation,from,to);
63925}
63926pattern refineRelation_value_attribute_EEnumLiteral(
63927 problem:LogicProblem, interpretation:PartialInterpretation,
63928 relationIterpretation:PartialRelationInterpretation,
63929 from: DefinedElement, to: DefinedElement)
63930{
63931 find interpretation(problem,interpretation);
63932 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63933 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EEnumLiteral");
63934 find mustExist(problem, interpretation, from);
63935 find mustExist(problem, interpretation, to);
63936 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
63937 IntegerElement(to);
63938 find mayInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
63939 neg find mustInRelationvalue_attribute_EEnumLiteral(problem,interpretation,from,to);
63940}
63941pattern refineRelation_literal_attribute_EEnumLiteral(
63942 problem:LogicProblem, interpretation:PartialInterpretation,
63943 relationIterpretation:PartialRelationInterpretation,
63944 from: DefinedElement, to: DefinedElement)
63945{
63946 find interpretation(problem,interpretation);
63947 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63948 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"literal attribute EEnumLiteral");
63949 find mustExist(problem, interpretation, from);
63950 find mustExist(problem, interpretation, to);
63951 find mustInstanceOfEEnumLiteral_class(problem,interpretation,from);
63952 StringElement(to);
63953 find mayInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
63954 neg find mustInRelationliteral_attribute_EEnumLiteral(problem,interpretation,from,to);
63955}
63956pattern refineRelation_name_attribute_ENamedElement(
63957 problem:LogicProblem, interpretation:PartialInterpretation,
63958 relationIterpretation:PartialRelationInterpretation,
63959 from: DefinedElement, to: DefinedElement)
63960{
63961 find interpretation(problem,interpretation);
63962 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63963 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute ENamedElement");
63964 find mustExist(problem, interpretation, from);
63965 find mustExist(problem, interpretation, to);
63966 find mustInstanceOfENamedElement_class(problem,interpretation,from);
63967 StringElement(to);
63968 find mayInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
63969 neg find mustInRelationname_attribute_ENamedElement(problem,interpretation,from,to);
63970}
63971pattern refineRelation_nsURI_attribute_EPackage(
63972 problem:LogicProblem, interpretation:PartialInterpretation,
63973 relationIterpretation:PartialRelationInterpretation,
63974 from: DefinedElement, to: DefinedElement)
63975{
63976 find interpretation(problem,interpretation);
63977 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63978 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsURI attribute EPackage");
63979 find mustExist(problem, interpretation, from);
63980 find mustExist(problem, interpretation, to);
63981 find mustInstanceOfEPackage_class(problem,interpretation,from);
63982 StringElement(to);
63983 find mayInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
63984 neg find mustInRelationnsURI_attribute_EPackage(problem,interpretation,from,to);
63985}
63986pattern refineRelation_nsPrefix_attribute_EPackage(
63987 problem:LogicProblem, interpretation:PartialInterpretation,
63988 relationIterpretation:PartialRelationInterpretation,
63989 from: DefinedElement, to: DefinedElement)
63990{
63991 find interpretation(problem,interpretation);
63992 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
63993 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"nsPrefix attribute EPackage");
63994 find mustExist(problem, interpretation, from);
63995 find mustExist(problem, interpretation, to);
63996 find mustInstanceOfEPackage_class(problem,interpretation,from);
63997 StringElement(to);
63998 find mayInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
63999 neg find mustInRelationnsPrefix_attribute_EPackage(problem,interpretation,from,to);
64000}
64001pattern refineRelation_containment_attribute_EReference(
64002 problem:LogicProblem, interpretation:PartialInterpretation,
64003 relationIterpretation:PartialRelationInterpretation,
64004 from: DefinedElement, to: DefinedElement)
64005{
64006 find interpretation(problem,interpretation);
64007 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64008 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"containment attribute EReference");
64009 find mustExist(problem, interpretation, from);
64010 find mustExist(problem, interpretation, to);
64011 find mustInstanceOfEReference_class(problem,interpretation,from);
64012 BooleanElement(to);
64013 find mayInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
64014 neg find mustInRelationcontainment_attribute_EReference(problem,interpretation,from,to);
64015}
64016pattern refineRelation_container_attribute_EReference(
64017 problem:LogicProblem, interpretation:PartialInterpretation,
64018 relationIterpretation:PartialRelationInterpretation,
64019 from: DefinedElement, to: DefinedElement)
64020{
64021 find interpretation(problem,interpretation);
64022 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64023 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"container attribute EReference");
64024 find mustExist(problem, interpretation, from);
64025 find mustExist(problem, interpretation, to);
64026 find mustInstanceOfEReference_class(problem,interpretation,from);
64027 BooleanElement(to);
64028 find mayInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
64029 neg find mustInRelationcontainer_attribute_EReference(problem,interpretation,from,to);
64030}
64031pattern refineRelation_resolveProxies_attribute_EReference(
64032 problem:LogicProblem, interpretation:PartialInterpretation,
64033 relationIterpretation:PartialRelationInterpretation,
64034 from: DefinedElement, to: DefinedElement)
64035{
64036 find interpretation(problem,interpretation);
64037 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64038 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"resolveProxies attribute EReference");
64039 find mustExist(problem, interpretation, from);
64040 find mustExist(problem, interpretation, to);
64041 find mustInstanceOfEReference_class(problem,interpretation,from);
64042 BooleanElement(to);
64043 find mayInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
64044 neg find mustInRelationresolveProxies_attribute_EReference(problem,interpretation,from,to);
64045}
64046pattern refineRelation_changeable_attribute_EStructuralFeature(
64047 problem:LogicProblem, interpretation:PartialInterpretation,
64048 relationIterpretation:PartialRelationInterpretation,
64049 from: DefinedElement, to: DefinedElement)
64050{
64051 find interpretation(problem,interpretation);
64052 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64053 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"changeable attribute EStructuralFeature");
64054 find mustExist(problem, interpretation, from);
64055 find mustExist(problem, interpretation, to);
64056 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64057 BooleanElement(to);
64058 find mayInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
64059 neg find mustInRelationchangeable_attribute_EStructuralFeature(problem,interpretation,from,to);
64060}
64061pattern refineRelation_volatile_attribute_EStructuralFeature(
64062 problem:LogicProblem, interpretation:PartialInterpretation,
64063 relationIterpretation:PartialRelationInterpretation,
64064 from: DefinedElement, to: DefinedElement)
64065{
64066 find interpretation(problem,interpretation);
64067 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64068 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"volatile attribute EStructuralFeature");
64069 find mustExist(problem, interpretation, from);
64070 find mustExist(problem, interpretation, to);
64071 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64072 BooleanElement(to);
64073 find mayInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
64074 neg find mustInRelationvolatile_attribute_EStructuralFeature(problem,interpretation,from,to);
64075}
64076pattern refineRelation_transient_attribute_EStructuralFeature(
64077 problem:LogicProblem, interpretation:PartialInterpretation,
64078 relationIterpretation:PartialRelationInterpretation,
64079 from: DefinedElement, to: DefinedElement)
64080{
64081 find interpretation(problem,interpretation);
64082 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64083 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"transient attribute EStructuralFeature");
64084 find mustExist(problem, interpretation, from);
64085 find mustExist(problem, interpretation, to);
64086 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64087 BooleanElement(to);
64088 find mayInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
64089 neg find mustInRelationtransient_attribute_EStructuralFeature(problem,interpretation,from,to);
64090}
64091pattern refineRelation_defaultValueLiteral_attribute_EStructuralFeature(
64092 problem:LogicProblem, interpretation:PartialInterpretation,
64093 relationIterpretation:PartialRelationInterpretation,
64094 from: DefinedElement, to: DefinedElement)
64095{
64096 find interpretation(problem,interpretation);
64097 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64098 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"defaultValueLiteral attribute EStructuralFeature");
64099 find mustExist(problem, interpretation, from);
64100 find mustExist(problem, interpretation, to);
64101 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64102 StringElement(to);
64103 find mayInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
64104 neg find mustInRelationdefaultValueLiteral_attribute_EStructuralFeature(problem,interpretation,from,to);
64105}
64106pattern refineRelation_unsettable_attribute_EStructuralFeature(
64107 problem:LogicProblem, interpretation:PartialInterpretation,
64108 relationIterpretation:PartialRelationInterpretation,
64109 from: DefinedElement, to: DefinedElement)
64110{
64111 find interpretation(problem,interpretation);
64112 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64113 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unsettable attribute EStructuralFeature");
64114 find mustExist(problem, interpretation, from);
64115 find mustExist(problem, interpretation, to);
64116 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64117 BooleanElement(to);
64118 find mayInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
64119 neg find mustInRelationunsettable_attribute_EStructuralFeature(problem,interpretation,from,to);
64120}
64121pattern refineRelation_derived_attribute_EStructuralFeature(
64122 problem:LogicProblem, interpretation:PartialInterpretation,
64123 relationIterpretation:PartialRelationInterpretation,
64124 from: DefinedElement, to: DefinedElement)
64125{
64126 find interpretation(problem,interpretation);
64127 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64128 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"derived attribute EStructuralFeature");
64129 find mustExist(problem, interpretation, from);
64130 find mustExist(problem, interpretation, to);
64131 find mustInstanceOfEStructuralFeature_class(problem,interpretation,from);
64132 BooleanElement(to);
64133 find mayInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
64134 neg find mustInRelationderived_attribute_EStructuralFeature(problem,interpretation,from,to);
64135}
64136pattern refineRelation_ordered_attribute_ETypedElement(
64137 problem:LogicProblem, interpretation:PartialInterpretation,
64138 relationIterpretation:PartialRelationInterpretation,
64139 from: DefinedElement, to: DefinedElement)
64140{
64141 find interpretation(problem,interpretation);
64142 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64143 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"ordered attribute ETypedElement");
64144 find mustExist(problem, interpretation, from);
64145 find mustExist(problem, interpretation, to);
64146 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64147 BooleanElement(to);
64148 find mayInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
64149 neg find mustInRelationordered_attribute_ETypedElement(problem,interpretation,from,to);
64150}
64151pattern refineRelation_unique_attribute_ETypedElement(
64152 problem:LogicProblem, interpretation:PartialInterpretation,
64153 relationIterpretation:PartialRelationInterpretation,
64154 from: DefinedElement, to: DefinedElement)
64155{
64156 find interpretation(problem,interpretation);
64157 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64158 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"unique attribute ETypedElement");
64159 find mustExist(problem, interpretation, from);
64160 find mustExist(problem, interpretation, to);
64161 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64162 BooleanElement(to);
64163 find mayInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
64164 neg find mustInRelationunique_attribute_ETypedElement(problem,interpretation,from,to);
64165}
64166pattern refineRelation_lowerBound_attribute_ETypedElement(
64167 problem:LogicProblem, interpretation:PartialInterpretation,
64168 relationIterpretation:PartialRelationInterpretation,
64169 from: DefinedElement, to: DefinedElement)
64170{
64171 find interpretation(problem,interpretation);
64172 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64173 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"lowerBound attribute ETypedElement");
64174 find mustExist(problem, interpretation, from);
64175 find mustExist(problem, interpretation, to);
64176 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64177 IntegerElement(to);
64178 find mayInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
64179 neg find mustInRelationlowerBound_attribute_ETypedElement(problem,interpretation,from,to);
64180}
64181pattern refineRelation_upperBound_attribute_ETypedElement(
64182 problem:LogicProblem, interpretation:PartialInterpretation,
64183 relationIterpretation:PartialRelationInterpretation,
64184 from: DefinedElement, to: DefinedElement)
64185{
64186 find interpretation(problem,interpretation);
64187 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64188 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"upperBound attribute ETypedElement");
64189 find mustExist(problem, interpretation, from);
64190 find mustExist(problem, interpretation, to);
64191 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64192 IntegerElement(to);
64193 find mayInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
64194 neg find mustInRelationupperBound_attribute_ETypedElement(problem,interpretation,from,to);
64195}
64196pattern refineRelation_many_attribute_ETypedElement(
64197 problem:LogicProblem, interpretation:PartialInterpretation,
64198 relationIterpretation:PartialRelationInterpretation,
64199 from: DefinedElement, to: DefinedElement)
64200{
64201 find interpretation(problem,interpretation);
64202 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64203 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"many attribute ETypedElement");
64204 find mustExist(problem, interpretation, from);
64205 find mustExist(problem, interpretation, to);
64206 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64207 BooleanElement(to);
64208 find mayInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
64209 neg find mustInRelationmany_attribute_ETypedElement(problem,interpretation,from,to);
64210}
64211pattern refineRelation_required_attribute_ETypedElement(
64212 problem:LogicProblem, interpretation:PartialInterpretation,
64213 relationIterpretation:PartialRelationInterpretation,
64214 from: DefinedElement, to: DefinedElement)
64215{
64216 find interpretation(problem,interpretation);
64217 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64218 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"required attribute ETypedElement");
64219 find mustExist(problem, interpretation, from);
64220 find mustExist(problem, interpretation, to);
64221 find mustInstanceOfETypedElement_class(problem,interpretation,from);
64222 BooleanElement(to);
64223 find mayInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
64224 neg find mustInRelationrequired_attribute_ETypedElement(problem,interpretation,from,to);
64225}
64226pattern refineRelation_key_attribute_EStringToStringMapEntry(
64227 problem:LogicProblem, interpretation:PartialInterpretation,
64228 relationIterpretation:PartialRelationInterpretation,
64229 from: DefinedElement, to: DefinedElement)
64230{
64231 find interpretation(problem,interpretation);
64232 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64233 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"key attribute EStringToStringMapEntry");
64234 find mustExist(problem, interpretation, from);
64235 find mustExist(problem, interpretation, to);
64236 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
64237 StringElement(to);
64238 find mayInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64239 neg find mustInRelationkey_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64240}
64241pattern refineRelation_value_attribute_EStringToStringMapEntry(
64242 problem:LogicProblem, interpretation:PartialInterpretation,
64243 relationIterpretation:PartialRelationInterpretation,
64244 from: DefinedElement, to: DefinedElement)
64245{
64246 find interpretation(problem,interpretation);
64247 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
64248 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"value attribute EStringToStringMapEntry");
64249 find mustExist(problem, interpretation, from);
64250 find mustExist(problem, interpretation, to);
64251 find mustInstanceOfEStringToStringMapEntry_class(problem,interpretation,from);
64252 StringElement(to);
64253 find mayInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64254 neg find mustInRelationvalue_attribute_EStringToStringMapEntry(problem,interpretation,from,to);
64255}