diff options
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_deactivated | 32522 |
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 | } |
31734 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
31735 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
31736 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
31737 | |||
31738 | ////////// | ||
31739 | // 0. Util | ||
31740 | ////////// | ||
31741 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
31742 | PartialInterpretation.problem(interpretation,problem); | ||
31743 | } | ||
31744 | |||
31745 | ///////////////////////// | ||
31746 | // 0.1 Existence | ||
31747 | ///////////////////////// | ||
31748 | private 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 | |||
31756 | private 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 | |||
31764 | private 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 | //////////////////////// | ||
31776 | pattern 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 | //////////////////////// | ||
31785 | private 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 | |||
31792 | private 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 | |||
31802 | private 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 | */ | ||
31820 | private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
31821 | Type.name(type,"FunctionalElement class"); | ||
31822 | find directInstanceOf(problem,interpretation,element,type); | ||
31823 | } | ||
31824 | private 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 | */ | ||
31836 | private 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 | */ | ||
31864 | private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
31865 | Type.name(type,"FunctionalArchitectureModel class"); | ||
31866 | find directInstanceOf(problem,interpretation,element,type); | ||
31867 | } | ||
31868 | private 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 | */ | ||
31880 | private 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 | */ | ||
31908 | private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
31909 | Type.name(type,"Function class"); | ||
31910 | find directInstanceOf(problem,interpretation,element,type); | ||
31911 | } | ||
31912 | private 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 | */ | ||
31924 | private 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 | */ | ||
31950 | private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
31951 | Type.name(type,"FAMTerminator class"); | ||
31952 | find directInstanceOf(problem,interpretation,element,type); | ||
31953 | } | ||
31954 | private 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 | */ | ||
31966 | private 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 | */ | ||
31992 | private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
31993 | Type.name(type,"InformationLink class"); | ||
31994 | find directInstanceOf(problem,interpretation,element,type); | ||
31995 | } | ||
31996 | private 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 | */ | ||
32008 | private 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 | */ | ||
32034 | private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
32035 | Type.name(type,"FunctionalInterface class"); | ||
32036 | find directInstanceOf(problem,interpretation,element,type); | ||
32037 | } | ||
32038 | private 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 | */ | ||
32050 | private 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 | */ | ||
32076 | private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
32077 | Type.name(type,"FunctionalInput class"); | ||
32078 | find directInstanceOf(problem,interpretation,element,type); | ||
32079 | } | ||
32080 | private 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 | */ | ||
32092 | private 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 | */ | ||
32120 | private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
32121 | Type.name(type,"FunctionalOutput class"); | ||
32122 | find directInstanceOf(problem,interpretation,element,type); | ||
32123 | } | ||
32124 | private 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 | */ | ||
32136 | private 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 | */ | ||
32164 | private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
32165 | Type.name(type,"FunctionalData class"); | ||
32166 | find directInstanceOf(problem,interpretation,element,type); | ||
32167 | } | ||
32168 | private 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 | */ | ||
32180 | private 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 | */ | ||
32210 | private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
32211 | Type.name(type,"FunctionType enum"); | ||
32212 | find directInstanceOf(problem,interpretation,element,type); | ||
32213 | } | ||
32214 | private 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 | */ | ||
32226 | private 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 | */ | ||
32231 | private 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 | } | ||
32235 | private 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 | */ | ||
32247 | private 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 | */ | ||
32252 | private 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 | } | ||
32256 | private 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 | */ | ||
32268 | private 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 | */ | ||
32298 | private 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 | */ | ||
32312 | private 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 | */ | ||
32342 | private 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 | */ | ||
32356 | private 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 | */ | ||
32377 | private 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 | */ | ||
32391 | private 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 | */ | ||
32417 | private 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 | */ | ||
32431 | private 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 | */ | ||
32453 | private 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 | */ | ||
32467 | private 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 | */ | ||
32493 | private 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 | */ | ||
32507 | private 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 | */ | ||
32537 | private 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 | */ | ||
32551 | private 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 | */ | ||
32577 | private 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 | */ | ||
32591 | private 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 | */ | ||
32612 | private 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 | */ | ||
32626 | private 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 | */ | ||
32652 | private 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 | */ | ||
32666 | private 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 | */ | ||
32696 | private 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 | */ | ||
32710 | private 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 | */ | ||
32731 | private 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 | */ | ||
32745 | private 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 | */ | ||
32771 | private 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 | */ | ||
32785 | private 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 | */ | ||
32815 | private 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 | */ | ||
32829 | private 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 | */ | ||
32855 | private 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 | */ | ||
32869 | private 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 | ////////// | ||
32895 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
32896 | find mustContains4(_,_,source,target); | ||
32897 | } | ||
32898 | |||
32899 | private 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 | |||
32913 | private 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 | ////////// | ||
32928 | pattern 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 | } | ||
32937 | pattern 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 | } | ||
32946 | pattern 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 | ////////// | ||
32965 | private 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 | } | ||
33011 | pattern 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 | } | ||
33029 | pattern 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 | } | ||
33041 | pattern 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 | } | ||
33059 | pattern 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 | } | ||
33071 | pattern 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 | } | ||
33089 | pattern 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 | } | ||
33101 | pattern 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 | } | ||
33119 | pattern 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 | } | ||
33131 | pattern 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 | } | ||
33143 | pattern 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 | } | ||
33159 | pattern 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 | } | ||
33177 | pattern 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 | } | ||
33189 | pattern 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 | } | ||
33207 | pattern 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 | ////////// | ||
33223 | pattern 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 | } | ||
33234 | pattern 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 | } | ||
33245 | pattern 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 | } | ||
33256 | pattern 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 | } | ||
33268 | pattern 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 | } | ||
33279 | pattern 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 | } | ||
33290 | pattern 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 | ////////// | ||
33306 | pattern 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 | } | ||
33321 | pattern 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 | } | ||
33338 | pattern 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 | } | ||
33353 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
33354 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
33355 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
33356 | |||
33357 | ////////// | ||
33358 | // 0. Util | ||
33359 | ////////// | ||
33360 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
33361 | PartialInterpretation.problem(interpretation,problem); | ||
33362 | } | ||
33363 | |||
33364 | ///////////////////////// | ||
33365 | // 0.1 Existence | ||
33366 | ///////////////////////// | ||
33367 | private 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 | |||
33375 | private 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 | |||
33383 | private 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 | //////////////////////// | ||
33395 | pattern 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 | //////////////////////// | ||
33404 | private 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 | |||
33411 | private 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 | |||
33421 | private 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 | */ | ||
33439 | private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33440 | Type.name(type,"FunctionalElement class"); | ||
33441 | find directInstanceOf(problem,interpretation,element,type); | ||
33442 | } | ||
33443 | private 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 | */ | ||
33455 | private 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 | */ | ||
33483 | private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33484 | Type.name(type,"FunctionalArchitectureModel class"); | ||
33485 | find directInstanceOf(problem,interpretation,element,type); | ||
33486 | } | ||
33487 | private 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 | */ | ||
33499 | private 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 | */ | ||
33527 | private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33528 | Type.name(type,"Function class"); | ||
33529 | find directInstanceOf(problem,interpretation,element,type); | ||
33530 | } | ||
33531 | private 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 | */ | ||
33543 | private 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 | */ | ||
33569 | private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33570 | Type.name(type,"FAMTerminator class"); | ||
33571 | find directInstanceOf(problem,interpretation,element,type); | ||
33572 | } | ||
33573 | private 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 | */ | ||
33585 | private 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 | */ | ||
33611 | private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33612 | Type.name(type,"InformationLink class"); | ||
33613 | find directInstanceOf(problem,interpretation,element,type); | ||
33614 | } | ||
33615 | private 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 | */ | ||
33627 | private 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 | */ | ||
33653 | private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33654 | Type.name(type,"FunctionalInterface class"); | ||
33655 | find directInstanceOf(problem,interpretation,element,type); | ||
33656 | } | ||
33657 | private 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 | */ | ||
33669 | private 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 | */ | ||
33695 | private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33696 | Type.name(type,"FunctionalInput class"); | ||
33697 | find directInstanceOf(problem,interpretation,element,type); | ||
33698 | } | ||
33699 | private 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 | */ | ||
33711 | private 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 | */ | ||
33739 | private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33740 | Type.name(type,"FunctionalOutput class"); | ||
33741 | find directInstanceOf(problem,interpretation,element,type); | ||
33742 | } | ||
33743 | private 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 | */ | ||
33755 | private 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 | */ | ||
33783 | private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33784 | Type.name(type,"FunctionalData class"); | ||
33785 | find directInstanceOf(problem,interpretation,element,type); | ||
33786 | } | ||
33787 | private 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 | */ | ||
33799 | private 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 | */ | ||
33829 | private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
33830 | Type.name(type,"FunctionType enum"); | ||
33831 | find directInstanceOf(problem,interpretation,element,type); | ||
33832 | } | ||
33833 | private 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 | */ | ||
33845 | private 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 | */ | ||
33850 | private 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 | } | ||
33854 | private 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 | */ | ||
33866 | private 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 | */ | ||
33871 | private 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 | } | ||
33875 | private 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 | */ | ||
33887 | private 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 | */ | ||
33917 | private 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 | */ | ||
33931 | private 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 | */ | ||
33961 | private 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 | */ | ||
33975 | private 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 | */ | ||
33996 | private 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 | */ | ||
34010 | private 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 | */ | ||
34036 | private 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 | */ | ||
34050 | private 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 | */ | ||
34072 | private 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 | */ | ||
34086 | private 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 | */ | ||
34112 | private 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 | */ | ||
34126 | private 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 | */ | ||
34156 | private 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 | */ | ||
34170 | private 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 | */ | ||
34196 | private 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 | */ | ||
34210 | private 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 | */ | ||
34231 | private 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 | */ | ||
34245 | private 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 | */ | ||
34271 | private 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 | */ | ||
34285 | private 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 | */ | ||
34315 | private 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 | */ | ||
34329 | private 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 | */ | ||
34350 | private 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 | */ | ||
34364 | private 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 | */ | ||
34390 | private 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 | */ | ||
34404 | private 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 | */ | ||
34434 | private 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 | */ | ||
34448 | private 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 | */ | ||
34474 | private 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 | */ | ||
34488 | private 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 | ////////// | ||
34514 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
34515 | find mustContains4(_,_,source,target); | ||
34516 | } | ||
34517 | |||
34518 | private 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 | |||
34532 | private 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 | ////////// | ||
34547 | pattern 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 | } | ||
34556 | pattern 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 | } | ||
34565 | pattern 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 | ////////// | ||
34584 | private 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 | } | ||
34630 | pattern 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 | } | ||
34648 | pattern 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 | } | ||
34660 | pattern 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 | } | ||
34678 | pattern 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 | } | ||
34690 | pattern 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 | } | ||
34702 | pattern 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 | } | ||
34720 | pattern 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 | } | ||
34732 | pattern 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 | } | ||
34748 | pattern 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 | } | ||
34766 | pattern 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 | } | ||
34778 | pattern 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 | } | ||
34796 | pattern 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 | } | ||
34808 | pattern 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 | } | ||
34826 | pattern 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 | ////////// | ||
34842 | pattern 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 | } | ||
34853 | pattern 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 | } | ||
34865 | pattern 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 | } | ||
34876 | pattern 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 | } | ||
34887 | pattern 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 | } | ||
34898 | pattern 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 | } | ||
34910 | pattern 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 | ////////// | ||
34925 | pattern 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 | } | ||
34940 | pattern 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 | } | ||
34957 | pattern 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 | } | ||
34972 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
34973 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
34974 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
34975 | |||
34976 | ////////// | ||
34977 | // 0. Util | ||
34978 | ////////// | ||
34979 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
34980 | PartialInterpretation.problem(interpretation,problem); | ||
34981 | } | ||
34982 | |||
34983 | ///////////////////////// | ||
34984 | // 0.1 Existence | ||
34985 | ///////////////////////// | ||
34986 | private 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 | |||
34994 | private 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 | |||
35002 | private 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 | //////////////////////// | ||
35014 | pattern 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 | //////////////////////// | ||
35023 | private 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 | |||
35030 | private 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 | |||
35040 | private 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 | */ | ||
35058 | private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35059 | Type.name(type,"EAttribute class"); | ||
35060 | find directInstanceOf(problem,interpretation,element,type); | ||
35061 | } | ||
35062 | private 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 | */ | ||
35074 | private 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 | */ | ||
35112 | private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35113 | Type.name(type,"EAnnotation class"); | ||
35114 | find directInstanceOf(problem,interpretation,element,type); | ||
35115 | } | ||
35116 | private 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 | */ | ||
35128 | private 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 | */ | ||
35152 | private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35153 | Type.name(type,"EClass class"); | ||
35154 | find directInstanceOf(problem,interpretation,element,type); | ||
35155 | } | ||
35156 | private 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 | */ | ||
35168 | private 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 | */ | ||
35202 | private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35203 | Type.name(type,"EClassifier class"); | ||
35204 | find directInstanceOf(problem,interpretation,element,type); | ||
35205 | } | ||
35206 | private 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 | */ | ||
35218 | private 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 | */ | ||
35254 | private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35255 | Type.name(type,"EDataType class"); | ||
35256 | find directInstanceOf(problem,interpretation,element,type); | ||
35257 | } | ||
35258 | private 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 | */ | ||
35270 | private 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 | */ | ||
35306 | private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35307 | Type.name(type,"EEnum class"); | ||
35308 | find directInstanceOf(problem,interpretation,element,type); | ||
35309 | } | ||
35310 | private 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 | */ | ||
35322 | private 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 | */ | ||
35356 | private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35357 | Type.name(type,"EEnumLiteral class"); | ||
35358 | find directInstanceOf(problem,interpretation,element,type); | ||
35359 | } | ||
35360 | private 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 | */ | ||
35372 | private 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 | */ | ||
35404 | private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35405 | Type.name(type,"EModelElement class"); | ||
35406 | find directInstanceOf(problem,interpretation,element,type); | ||
35407 | } | ||
35408 | private 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 | */ | ||
35420 | private 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 | */ | ||
35446 | private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35447 | Type.name(type,"ENamedElement class"); | ||
35448 | find directInstanceOf(problem,interpretation,element,type); | ||
35449 | } | ||
35450 | private 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 | */ | ||
35462 | private 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 | */ | ||
35488 | private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35489 | Type.name(type,"EObject class"); | ||
35490 | find directInstanceOf(problem,interpretation,element,type); | ||
35491 | } | ||
35492 | private 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 | */ | ||
35504 | private 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 | */ | ||
35526 | private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35527 | Type.name(type,"EOperation class"); | ||
35528 | find directInstanceOf(problem,interpretation,element,type); | ||
35529 | } | ||
35530 | private 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 | */ | ||
35542 | private 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 | */ | ||
35578 | private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35579 | Type.name(type,"EPackage class"); | ||
35580 | find directInstanceOf(problem,interpretation,element,type); | ||
35581 | } | ||
35582 | private 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 | */ | ||
35594 | private 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 | */ | ||
35618 | private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35619 | Type.name(type,"EParameter class"); | ||
35620 | find directInstanceOf(problem,interpretation,element,type); | ||
35621 | } | ||
35622 | private 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 | */ | ||
35634 | private 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 | */ | ||
35670 | private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35671 | Type.name(type,"EReference class"); | ||
35672 | find directInstanceOf(problem,interpretation,element,type); | ||
35673 | } | ||
35674 | private 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 | */ | ||
35686 | private 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 | */ | ||
35724 | private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35725 | Type.name(type,"EStructuralFeature class"); | ||
35726 | find directInstanceOf(problem,interpretation,element,type); | ||
35727 | } | ||
35728 | private 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 | */ | ||
35740 | private 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 | */ | ||
35780 | private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35781 | Type.name(type,"ETypedElement class"); | ||
35782 | find directInstanceOf(problem,interpretation,element,type); | ||
35783 | } | ||
35784 | private 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 | */ | ||
35796 | private 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 | */ | ||
35834 | private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35835 | Type.name(type,"EStringToStringMapEntry class"); | ||
35836 | find directInstanceOf(problem,interpretation,element,type); | ||
35837 | } | ||
35838 | private 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 | */ | ||
35850 | private 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 | */ | ||
35872 | private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35873 | Type.name(type,"EGenericType class"); | ||
35874 | find directInstanceOf(problem,interpretation,element,type); | ||
35875 | } | ||
35876 | private 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 | */ | ||
35888 | private 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 | */ | ||
35910 | private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
35911 | Type.name(type,"ETypeParameter class"); | ||
35912 | find directInstanceOf(problem,interpretation,element,type); | ||
35913 | } | ||
35914 | private 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 | */ | ||
35926 | private 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 | */ | ||
35958 | private 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 | } | ||
35962 | private 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 | */ | ||
35974 | private 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 | */ | ||
35979 | private 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 | } | ||
35983 | private 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 | */ | ||
35995 | private 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 | */ | ||
36021 | private 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 | } | ||
36025 | private 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 | */ | ||
36037 | private 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 | */ | ||
36042 | private 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 | } | ||
36046 | private 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 | */ | ||
36058 | private 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 | */ | ||
36092 | private 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 | } | ||
36096 | private 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 | */ | ||
36108 | private 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 | */ | ||
36113 | private 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 | } | ||
36117 | private 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 | */ | ||
36129 | private 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 | */ | ||
36165 | private 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 | */ | ||
36179 | private 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 | */ | ||
36200 | private 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 | */ | ||
36214 | private 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 | */ | ||
36236 | private 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 | */ | ||
36250 | private 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 | */ | ||
36276 | private 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 | */ | ||
36290 | private 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 | */ | ||
36312 | private 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 | */ | ||
36326 | private 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 | */ | ||
36343 | private 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 | */ | ||
36357 | private 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 | */ | ||
36374 | private 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 | */ | ||
36388 | private 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 | */ | ||
36414 | private 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 | */ | ||
36428 | private 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 | */ | ||
36445 | private 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 | */ | ||
36459 | private 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 | */ | ||
36476 | private 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 | */ | ||
36490 | private 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 | */ | ||
36507 | private 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 | */ | ||
36521 | private 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 | */ | ||
36538 | private 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 | */ | ||
36552 | private 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 | */ | ||
36569 | private 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 | */ | ||
36583 | private 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 | */ | ||
36600 | private 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 | */ | ||
36614 | private 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 | */ | ||
36631 | private 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 | */ | ||
36645 | private 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 | */ | ||
36662 | private 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 | */ | ||
36676 | private 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 | */ | ||
36697 | private 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 | */ | ||
36711 | private 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 | */ | ||
36737 | private 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 | */ | ||
36751 | private 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 | */ | ||
36773 | private 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 | */ | ||
36787 | private 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 | */ | ||
36804 | private 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 | */ | ||
36818 | private 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 | */ | ||
36844 | private 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 | */ | ||
36858 | private 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 | */ | ||
36880 | private 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 | */ | ||
36894 | private 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 | */ | ||
36920 | private 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 | */ | ||
36934 | private 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 | */ | ||
36960 | private 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 | */ | ||
36974 | private 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 | */ | ||
37000 | private 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 | */ | ||
37014 | private 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 | */ | ||
37040 | private 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 | */ | ||
37054 | private 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 | */ | ||
37076 | private 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 | */ | ||
37090 | private 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 | */ | ||
37116 | private 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 | */ | ||
37130 | private 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 | */ | ||
37147 | private 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 | */ | ||
37161 | private 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 | */ | ||
37183 | private 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 | */ | ||
37197 | private 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 | */ | ||
37223 | private 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 | */ | ||
37237 | private 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 | */ | ||
37263 | private 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 | */ | ||
37277 | private 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 | */ | ||
37303 | private 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 | */ | ||
37317 | private 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 | */ | ||
37343 | private 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 | */ | ||
37357 | private 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 | */ | ||
37378 | private 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 | */ | ||
37392 | private 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 | */ | ||
37413 | private 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 | */ | ||
37427 | private 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 | */ | ||
37444 | private 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 | */ | ||
37458 | private 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 | */ | ||
37484 | private 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 | */ | ||
37498 | private 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 | */ | ||
37519 | private 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 | */ | ||
37533 | private 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 | */ | ||
37559 | private 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 | */ | ||
37573 | private 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 | */ | ||
37599 | private 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 | */ | ||
37613 | private 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 | */ | ||
37635 | private 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 | */ | ||
37649 | private 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 | */ | ||
37670 | private 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 | */ | ||
37684 | private 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 | */ | ||
37710 | private 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 | */ | ||
37724 | private 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 | */ | ||
37745 | private 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 | */ | ||
37759 | private 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 | */ | ||
37780 | private 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 | */ | ||
37794 | private 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 | */ | ||
37816 | private 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 | */ | ||
37830 | private 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 | */ | ||
37851 | private 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 | */ | ||
37865 | private 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 | */ | ||
37886 | private 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 | */ | ||
37900 | private 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 | */ | ||
37921 | private 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 | */ | ||
37935 | private 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 | */ | ||
37956 | private 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 | */ | ||
37970 | private 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 | */ | ||
37991 | private 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 | */ | ||
38005 | private 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 | */ | ||
38026 | private 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 | */ | ||
38040 | private 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 | */ | ||
38061 | private 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 | */ | ||
38075 | private 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 | */ | ||
38096 | private 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 | */ | ||
38110 | private 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 | */ | ||
38131 | private 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 | */ | ||
38145 | private 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 | */ | ||
38166 | private 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 | */ | ||
38180 | private 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 | */ | ||
38201 | private 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 | */ | ||
38215 | private 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 | */ | ||
38236 | private 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 | */ | ||
38250 | private 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 | */ | ||
38271 | private 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 | */ | ||
38285 | private 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 | */ | ||
38306 | private 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 | */ | ||
38320 | private 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 | */ | ||
38341 | private 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 | */ | ||
38355 | private 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 | */ | ||
38376 | private 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 | */ | ||
38390 | private 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 | */ | ||
38411 | private 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 | */ | ||
38425 | private 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 | */ | ||
38446 | private 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 | */ | ||
38460 | private 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 | */ | ||
38481 | private 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 | */ | ||
38495 | private 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 | */ | ||
38516 | private 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 | */ | ||
38530 | private 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 | */ | ||
38551 | private 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 | */ | ||
38565 | private 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 | */ | ||
38586 | private 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 | */ | ||
38600 | private 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 | */ | ||
38621 | private 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 | */ | ||
38635 | private 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 | */ | ||
38656 | private 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 | */ | ||
38670 | private 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 | */ | ||
38691 | private 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 | */ | ||
38705 | private 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 | */ | ||
38726 | private 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 | */ | ||
38740 | private 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 | */ | ||
38761 | private 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 | */ | ||
38775 | private 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 | */ | ||
38796 | private 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 | */ | ||
38810 | private 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 | ////////// | ||
38836 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
38837 | find mustContains4(_,_,source,target); | ||
38838 | } | ||
38839 | |||
38840 | private 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 | |||
38878 | private 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 | ////////// | ||
38893 | pattern 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 | } | ||
38902 | pattern 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 | } | ||
38911 | pattern 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 | ////////// | ||
38930 | private 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 | } | ||
39032 | pattern 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 | } | ||
39050 | pattern 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 | } | ||
39062 | pattern 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 | } | ||
39080 | pattern 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 | } | ||
39092 | pattern 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 | } | ||
39110 | pattern 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 | } | ||
39122 | pattern 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 | } | ||
39140 | pattern 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 | } | ||
39152 | pattern 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 | } | ||
39170 | pattern 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 | } | ||
39182 | pattern 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 | } | ||
39198 | pattern 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 | } | ||
39214 | pattern 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 | } | ||
39226 | pattern 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 | } | ||
39244 | pattern 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 | } | ||
39256 | pattern 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 | } | ||
39272 | pattern 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 | } | ||
39284 | pattern 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 | } | ||
39300 | pattern 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 | } | ||
39312 | pattern 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 | } | ||
39328 | pattern 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 | } | ||
39344 | pattern 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 | } | ||
39360 | pattern 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 | } | ||
39376 | pattern 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 | } | ||
39392 | pattern 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 | } | ||
39408 | pattern 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 | } | ||
39424 | pattern 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 | } | ||
39436 | pattern 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 | } | ||
39454 | pattern 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 | } | ||
39466 | pattern 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 | } | ||
39484 | pattern 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 | } | ||
39496 | pattern 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 | } | ||
39514 | pattern 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 | } | ||
39526 | pattern 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 | } | ||
39544 | pattern 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 | ////////// | ||
39560 | pattern 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 | } | ||
39570 | pattern 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 | } | ||
39585 | pattern 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 | } | ||
39600 | pattern 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 | } | ||
39617 | pattern 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 | } | ||
39633 | pattern 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 | } | ||
39647 | pattern 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 | } | ||
39661 | pattern 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 | } | ||
39670 | pattern 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 | } | ||
39679 | pattern 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 | } | ||
39688 | pattern 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 | } | ||
39704 | pattern 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 | } | ||
39721 | pattern 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 | } | ||
39735 | pattern 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 | ////////// | ||
39755 | pattern 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 | } | ||
39770 | pattern 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 | } | ||
39785 | pattern 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 | } | ||
39800 | pattern 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 | } | ||
39815 | pattern 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 | } | ||
39830 | pattern 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 | } | ||
39845 | pattern 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 | } | ||
39860 | pattern 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 | } | ||
39875 | pattern 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 | } | ||
39890 | pattern 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 | } | ||
39905 | pattern 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 | } | ||
39920 | pattern 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 | } | ||
39935 | pattern 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 | } | ||
39950 | pattern 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 | } | ||
39965 | pattern 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 | } | ||
39980 | pattern 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 | } | ||
39995 | pattern 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 | } | ||
40010 | pattern 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 | } | ||
40025 | pattern 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 | } | ||
40040 | pattern 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 | } | ||
40055 | pattern 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 | } | ||
40070 | pattern 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 | } | ||
40085 | pattern 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 | } | ||
40100 | pattern 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 | } | ||
40115 | pattern 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 | } | ||
40130 | pattern 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 | } | ||
40145 | pattern 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 | } | ||
40160 | pattern 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 | } | ||
40175 | pattern 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 | } | ||
40190 | pattern 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 | } | ||
40205 | pattern 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 | } | ||
40220 | pattern 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 | } | ||
40235 | pattern 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 | } | ||
40250 | pattern 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 | } | ||
40265 | pattern 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 | } | ||
40280 | pattern 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 | } | ||
40295 | pattern 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 | } | ||
40310 | pattern 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 | } | ||
40325 | pattern 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 | } | ||
40340 | pattern 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 | } | ||
40355 | pattern 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 | } | ||
40370 | pattern 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 | } | ||
40385 | pattern 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 | } | ||
40400 | pattern 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 | } | ||
40415 | pattern 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 | } | ||
40430 | pattern 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 | } | ||
40445 | pattern 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 | } | ||
40460 | pattern 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 | } | ||
40475 | pattern 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 | } | ||
40490 | pattern 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 | } | ||
40505 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
40506 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
40507 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
40508 | |||
40509 | ////////// | ||
40510 | // 0. Util | ||
40511 | ////////// | ||
40512 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
40513 | PartialInterpretation.problem(interpretation,problem); | ||
40514 | } | ||
40515 | |||
40516 | ///////////////////////// | ||
40517 | // 0.1 Existence | ||
40518 | ///////////////////////// | ||
40519 | private 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 | |||
40527 | private 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 | |||
40535 | private 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 | //////////////////////// | ||
40547 | pattern 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 | //////////////////////// | ||
40556 | private 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 | |||
40563 | private 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 | |||
40573 | private 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 | */ | ||
40591 | private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40592 | Type.name(type,"EAttribute class"); | ||
40593 | find directInstanceOf(problem,interpretation,element,type); | ||
40594 | } | ||
40595 | private 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 | */ | ||
40607 | private 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 | */ | ||
40645 | private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40646 | Type.name(type,"EAnnotation class"); | ||
40647 | find directInstanceOf(problem,interpretation,element,type); | ||
40648 | } | ||
40649 | private 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 | */ | ||
40661 | private 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 | */ | ||
40685 | private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40686 | Type.name(type,"EClass class"); | ||
40687 | find directInstanceOf(problem,interpretation,element,type); | ||
40688 | } | ||
40689 | private 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 | */ | ||
40701 | private 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 | */ | ||
40735 | private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40736 | Type.name(type,"EClassifier class"); | ||
40737 | find directInstanceOf(problem,interpretation,element,type); | ||
40738 | } | ||
40739 | private 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 | */ | ||
40751 | private 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 | */ | ||
40787 | private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40788 | Type.name(type,"EDataType class"); | ||
40789 | find directInstanceOf(problem,interpretation,element,type); | ||
40790 | } | ||
40791 | private 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 | */ | ||
40803 | private 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 | */ | ||
40839 | private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40840 | Type.name(type,"EEnum class"); | ||
40841 | find directInstanceOf(problem,interpretation,element,type); | ||
40842 | } | ||
40843 | private 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 | */ | ||
40855 | private 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 | */ | ||
40889 | private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40890 | Type.name(type,"EEnumLiteral class"); | ||
40891 | find directInstanceOf(problem,interpretation,element,type); | ||
40892 | } | ||
40893 | private 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 | */ | ||
40905 | private 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 | */ | ||
40937 | private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40938 | Type.name(type,"EModelElement class"); | ||
40939 | find directInstanceOf(problem,interpretation,element,type); | ||
40940 | } | ||
40941 | private 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 | */ | ||
40953 | private 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 | */ | ||
40979 | private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
40980 | Type.name(type,"ENamedElement class"); | ||
40981 | find directInstanceOf(problem,interpretation,element,type); | ||
40982 | } | ||
40983 | private 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 | */ | ||
40995 | private 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 | */ | ||
41021 | private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41022 | Type.name(type,"EObject class"); | ||
41023 | find directInstanceOf(problem,interpretation,element,type); | ||
41024 | } | ||
41025 | private 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 | */ | ||
41037 | private 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 | */ | ||
41059 | private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41060 | Type.name(type,"EOperation class"); | ||
41061 | find directInstanceOf(problem,interpretation,element,type); | ||
41062 | } | ||
41063 | private 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 | */ | ||
41075 | private 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 | */ | ||
41111 | private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41112 | Type.name(type,"EPackage class"); | ||
41113 | find directInstanceOf(problem,interpretation,element,type); | ||
41114 | } | ||
41115 | private 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 | */ | ||
41127 | private 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 | */ | ||
41151 | private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41152 | Type.name(type,"EParameter class"); | ||
41153 | find directInstanceOf(problem,interpretation,element,type); | ||
41154 | } | ||
41155 | private 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 | */ | ||
41167 | private 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 | */ | ||
41203 | private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41204 | Type.name(type,"EReference class"); | ||
41205 | find directInstanceOf(problem,interpretation,element,type); | ||
41206 | } | ||
41207 | private 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 | */ | ||
41219 | private 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 | */ | ||
41257 | private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41258 | Type.name(type,"EStructuralFeature class"); | ||
41259 | find directInstanceOf(problem,interpretation,element,type); | ||
41260 | } | ||
41261 | private 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 | */ | ||
41273 | private 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 | */ | ||
41313 | private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41314 | Type.name(type,"ETypedElement class"); | ||
41315 | find directInstanceOf(problem,interpretation,element,type); | ||
41316 | } | ||
41317 | private 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 | */ | ||
41329 | private 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 | */ | ||
41367 | private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41368 | Type.name(type,"EStringToStringMapEntry class"); | ||
41369 | find directInstanceOf(problem,interpretation,element,type); | ||
41370 | } | ||
41371 | private 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 | */ | ||
41383 | private 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 | */ | ||
41405 | private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41406 | Type.name(type,"EGenericType class"); | ||
41407 | find directInstanceOf(problem,interpretation,element,type); | ||
41408 | } | ||
41409 | private 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 | */ | ||
41421 | private 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 | */ | ||
41443 | private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
41444 | Type.name(type,"ETypeParameter class"); | ||
41445 | find directInstanceOf(problem,interpretation,element,type); | ||
41446 | } | ||
41447 | private 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 | */ | ||
41459 | private 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 | */ | ||
41491 | private 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 | } | ||
41495 | private 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 | */ | ||
41507 | private 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 | */ | ||
41512 | private 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 | } | ||
41516 | private 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 | */ | ||
41528 | private 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 | */ | ||
41554 | private 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 | } | ||
41558 | private 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 | */ | ||
41570 | private 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 | */ | ||
41575 | private 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 | } | ||
41579 | private 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 | */ | ||
41591 | private 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 | */ | ||
41625 | private 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 | } | ||
41629 | private 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 | */ | ||
41641 | private 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 | */ | ||
41646 | private 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 | } | ||
41650 | private 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 | */ | ||
41662 | private 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 | */ | ||
41698 | private 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 | */ | ||
41712 | private 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 | */ | ||
41733 | private 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 | */ | ||
41747 | private 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 | */ | ||
41769 | private 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 | */ | ||
41783 | private 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 | */ | ||
41809 | private 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 | */ | ||
41823 | private 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 | */ | ||
41845 | private 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 | */ | ||
41859 | private 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 | */ | ||
41876 | private 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 | */ | ||
41890 | private 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 | */ | ||
41907 | private 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 | */ | ||
41921 | private 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 | */ | ||
41947 | private 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 | */ | ||
41961 | private 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 | */ | ||
41978 | private 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 | */ | ||
41992 | private 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 | */ | ||
42009 | private 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 | */ | ||
42023 | private 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 | */ | ||
42040 | private 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 | */ | ||
42054 | private 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 | */ | ||
42071 | private 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 | */ | ||
42085 | private 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 | */ | ||
42102 | private 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 | */ | ||
42116 | private 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 | */ | ||
42133 | private 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 | */ | ||
42147 | private 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 | */ | ||
42164 | private 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 | */ | ||
42178 | private 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 | */ | ||
42195 | private 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 | */ | ||
42209 | private 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 | */ | ||
42230 | private 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 | */ | ||
42244 | private 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 | */ | ||
42270 | private 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 | */ | ||
42284 | private 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 | */ | ||
42306 | private 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 | */ | ||
42320 | private 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 | */ | ||
42337 | private 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 | */ | ||
42351 | private 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 | */ | ||
42377 | private 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 | */ | ||
42391 | private 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 | */ | ||
42413 | private 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 | */ | ||
42427 | private 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 | */ | ||
42453 | private 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 | */ | ||
42467 | private 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 | */ | ||
42493 | private 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 | */ | ||
42507 | private 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 | */ | ||
42533 | private 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 | */ | ||
42547 | private 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 | */ | ||
42573 | private 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 | */ | ||
42587 | private 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 | */ | ||
42609 | private 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 | */ | ||
42623 | private 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 | */ | ||
42649 | private 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 | */ | ||
42663 | private 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 | */ | ||
42680 | private 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 | */ | ||
42694 | private 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 | */ | ||
42716 | private 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 | */ | ||
42730 | private 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 | */ | ||
42756 | private 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 | */ | ||
42770 | private 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 | */ | ||
42796 | private 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 | */ | ||
42810 | private 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 | */ | ||
42836 | private 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 | */ | ||
42850 | private 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 | */ | ||
42876 | private 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 | */ | ||
42890 | private 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 | */ | ||
42911 | private 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 | */ | ||
42925 | private 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 | */ | ||
42946 | private 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 | */ | ||
42960 | private 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 | */ | ||
42977 | private 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 | */ | ||
42991 | private 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 | */ | ||
43017 | private 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 | */ | ||
43031 | private 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 | */ | ||
43052 | private 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 | */ | ||
43066 | private 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 | */ | ||
43092 | private 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 | */ | ||
43106 | private 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 | */ | ||
43132 | private 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 | */ | ||
43146 | private 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 | */ | ||
43168 | private 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 | */ | ||
43182 | private 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 | */ | ||
43203 | private 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 | */ | ||
43217 | private 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 | */ | ||
43243 | private 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 | */ | ||
43257 | private 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 | */ | ||
43278 | private 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 | */ | ||
43292 | private 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 | */ | ||
43313 | private 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 | */ | ||
43327 | private 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 | */ | ||
43349 | private 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 | */ | ||
43363 | private 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 | */ | ||
43384 | private 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 | */ | ||
43398 | private 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 | */ | ||
43419 | private 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 | */ | ||
43433 | private 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 | */ | ||
43454 | private 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 | */ | ||
43468 | private 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 | */ | ||
43489 | private 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 | */ | ||
43503 | private 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 | */ | ||
43524 | private 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 | */ | ||
43538 | private 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 | */ | ||
43559 | private 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 | */ | ||
43573 | private 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 | */ | ||
43594 | private 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 | */ | ||
43608 | private 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 | */ | ||
43629 | private 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 | */ | ||
43643 | private 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 | */ | ||
43664 | private 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 | */ | ||
43678 | private 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 | */ | ||
43699 | private 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 | */ | ||
43713 | private 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 | */ | ||
43734 | private 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 | */ | ||
43748 | private 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 | */ | ||
43769 | private 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 | */ | ||
43783 | private 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 | */ | ||
43804 | private 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 | */ | ||
43818 | private 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 | */ | ||
43839 | private 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 | */ | ||
43853 | private 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 | */ | ||
43874 | private 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 | */ | ||
43888 | private 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 | */ | ||
43909 | private 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 | */ | ||
43923 | private 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 | */ | ||
43944 | private 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 | */ | ||
43958 | private 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 | */ | ||
43979 | private 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 | */ | ||
43993 | private 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 | */ | ||
44014 | private 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 | */ | ||
44028 | private 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 | */ | ||
44049 | private 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 | */ | ||
44063 | private 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 | */ | ||
44084 | private 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 | */ | ||
44098 | private 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 | */ | ||
44119 | private 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 | */ | ||
44133 | private 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 | */ | ||
44154 | private 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 | */ | ||
44168 | private 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 | */ | ||
44189 | private 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 | */ | ||
44203 | private 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 | */ | ||
44224 | private 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 | */ | ||
44238 | private 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 | */ | ||
44259 | private 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 | */ | ||
44273 | private 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 | */ | ||
44294 | private 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 | */ | ||
44308 | private 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 | */ | ||
44329 | private 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 | */ | ||
44343 | private 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 | ////////// | ||
44369 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
44370 | find mustContains4(_,_,source,target); | ||
44371 | } | ||
44372 | |||
44373 | private 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 | |||
44411 | private 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 | ////////// | ||
44426 | pattern 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 | } | ||
44435 | pattern 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 | } | ||
44444 | pattern 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 | ////////// | ||
44463 | private 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 | } | ||
44565 | pattern 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 | } | ||
44583 | pattern 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 | } | ||
44595 | pattern 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 | } | ||
44613 | pattern 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 | } | ||
44625 | pattern 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 | } | ||
44641 | pattern 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 | } | ||
44653 | pattern 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 | } | ||
44671 | pattern 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 | } | ||
44683 | pattern 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 | } | ||
44701 | pattern 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 | } | ||
44713 | pattern 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 | } | ||
44731 | pattern 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 | } | ||
44743 | pattern 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 | } | ||
44761 | pattern 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 | } | ||
44773 | pattern 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 | } | ||
44791 | pattern 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 | } | ||
44803 | pattern 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 | } | ||
44821 | pattern 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 | } | ||
44833 | pattern 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 | } | ||
44849 | pattern 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 | } | ||
44861 | pattern 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 | } | ||
44879 | pattern 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 | } | ||
44891 | pattern 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 | } | ||
44909 | pattern 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 | } | ||
44921 | pattern 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 | } | ||
44937 | pattern 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 | } | ||
44953 | pattern 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 | } | ||
44965 | pattern 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 | } | ||
44981 | pattern 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 | } | ||
44997 | pattern 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 | } | ||
45013 | pattern 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 | } | ||
45029 | pattern 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 | } | ||
45045 | pattern 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 | } | ||
45061 | pattern 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 | } | ||
45077 | pattern 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 | ////////// | ||
45093 | pattern 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 | } | ||
45108 | pattern 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 | } | ||
45125 | pattern 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 | } | ||
45134 | pattern 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 | } | ||
45151 | pattern 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 | } | ||
45165 | pattern 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 | } | ||
45175 | pattern 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 | } | ||
45191 | pattern 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 | } | ||
45207 | pattern 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 | } | ||
45223 | pattern 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 | } | ||
45232 | pattern 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 | } | ||
45246 | pattern 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 | } | ||
45261 | pattern 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 | } | ||
45275 | pattern 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 | ////////// | ||
45288 | pattern 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 | } | ||
45303 | pattern 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 | } | ||
45318 | pattern 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 | } | ||
45333 | pattern 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 | } | ||
45348 | pattern 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 | } | ||
45363 | pattern 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 | } | ||
45378 | pattern 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 | } | ||
45393 | pattern 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 | } | ||
45408 | pattern 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 | } | ||
45423 | pattern 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 | } | ||
45438 | pattern 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 | } | ||
45453 | pattern 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 | } | ||
45468 | pattern 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 | } | ||
45483 | pattern 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 | } | ||
45498 | pattern 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 | } | ||
45513 | pattern 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 | } | ||
45528 | pattern 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 | } | ||
45543 | pattern 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 | } | ||
45558 | pattern 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 | } | ||
45573 | pattern 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 | } | ||
45588 | pattern 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 | } | ||
45603 | pattern 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 | } | ||
45618 | pattern 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 | } | ||
45633 | pattern 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 | } | ||
45648 | pattern 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 | } | ||
45663 | pattern 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 | } | ||
45678 | pattern 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 | } | ||
45693 | pattern 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 | } | ||
45708 | pattern 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 | } | ||
45723 | pattern 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 | } | ||
45738 | pattern 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 | } | ||
45753 | pattern 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 | } | ||
45768 | pattern 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 | } | ||
45783 | pattern 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 | } | ||
45798 | pattern 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 | } | ||
45813 | pattern 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 | } | ||
45828 | pattern 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 | } | ||
45843 | pattern 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 | } | ||
45858 | pattern 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 | } | ||
45873 | pattern 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 | } | ||
45888 | pattern 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 | } | ||
45903 | pattern 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 | } | ||
45918 | pattern 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 | } | ||
45933 | pattern 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 | } | ||
45948 | pattern 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 | } | ||
45963 | pattern 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 | } | ||
45978 | pattern 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 | } | ||
45993 | pattern 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 | } | ||
46008 | pattern 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 | } | ||
46023 | pattern 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 | } | ||
46038 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
46039 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
46040 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
46041 | |||
46042 | ////////// | ||
46043 | // 0. Util | ||
46044 | ////////// | ||
46045 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
46046 | PartialInterpretation.problem(interpretation,problem); | ||
46047 | } | ||
46048 | |||
46049 | ///////////////////////// | ||
46050 | // 0.1 Existence | ||
46051 | ///////////////////////// | ||
46052 | private 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 | |||
46060 | private 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 | |||
46068 | private 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 | //////////////////////// | ||
46080 | pattern 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 | //////////////////////// | ||
46089 | private 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 | |||
46096 | private 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 | |||
46106 | private 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 | */ | ||
46124 | private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46125 | Type.name(type,"EAttribute class"); | ||
46126 | find directInstanceOf(problem,interpretation,element,type); | ||
46127 | } | ||
46128 | private 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 | */ | ||
46140 | private 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 | */ | ||
46178 | private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46179 | Type.name(type,"EAnnotation class"); | ||
46180 | find directInstanceOf(problem,interpretation,element,type); | ||
46181 | } | ||
46182 | private 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 | */ | ||
46194 | private 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 | */ | ||
46218 | private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46219 | Type.name(type,"EClass class"); | ||
46220 | find directInstanceOf(problem,interpretation,element,type); | ||
46221 | } | ||
46222 | private 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 | */ | ||
46234 | private 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 | */ | ||
46268 | private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46269 | Type.name(type,"EClassifier class"); | ||
46270 | find directInstanceOf(problem,interpretation,element,type); | ||
46271 | } | ||
46272 | private 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 | */ | ||
46284 | private 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 | */ | ||
46320 | private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46321 | Type.name(type,"EDataType class"); | ||
46322 | find directInstanceOf(problem,interpretation,element,type); | ||
46323 | } | ||
46324 | private 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 | */ | ||
46336 | private 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 | */ | ||
46372 | private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46373 | Type.name(type,"EEnum class"); | ||
46374 | find directInstanceOf(problem,interpretation,element,type); | ||
46375 | } | ||
46376 | private 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 | */ | ||
46388 | private 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 | */ | ||
46422 | private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46423 | Type.name(type,"EEnumLiteral class"); | ||
46424 | find directInstanceOf(problem,interpretation,element,type); | ||
46425 | } | ||
46426 | private 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 | */ | ||
46438 | private 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 | */ | ||
46470 | private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46471 | Type.name(type,"EModelElement class"); | ||
46472 | find directInstanceOf(problem,interpretation,element,type); | ||
46473 | } | ||
46474 | private 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 | */ | ||
46486 | private 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 | */ | ||
46512 | private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46513 | Type.name(type,"ENamedElement class"); | ||
46514 | find directInstanceOf(problem,interpretation,element,type); | ||
46515 | } | ||
46516 | private 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 | */ | ||
46528 | private 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 | */ | ||
46554 | private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46555 | Type.name(type,"EObject class"); | ||
46556 | find directInstanceOf(problem,interpretation,element,type); | ||
46557 | } | ||
46558 | private 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 | */ | ||
46570 | private 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 | */ | ||
46592 | private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46593 | Type.name(type,"EOperation class"); | ||
46594 | find directInstanceOf(problem,interpretation,element,type); | ||
46595 | } | ||
46596 | private 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 | */ | ||
46608 | private 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 | */ | ||
46644 | private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46645 | Type.name(type,"EPackage class"); | ||
46646 | find directInstanceOf(problem,interpretation,element,type); | ||
46647 | } | ||
46648 | private 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 | */ | ||
46660 | private 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 | */ | ||
46684 | private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46685 | Type.name(type,"EParameter class"); | ||
46686 | find directInstanceOf(problem,interpretation,element,type); | ||
46687 | } | ||
46688 | private 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 | */ | ||
46700 | private 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 | */ | ||
46736 | private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46737 | Type.name(type,"EReference class"); | ||
46738 | find directInstanceOf(problem,interpretation,element,type); | ||
46739 | } | ||
46740 | private 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 | */ | ||
46752 | private 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 | */ | ||
46790 | private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46791 | Type.name(type,"EStructuralFeature class"); | ||
46792 | find directInstanceOf(problem,interpretation,element,type); | ||
46793 | } | ||
46794 | private 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 | */ | ||
46806 | private 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 | */ | ||
46846 | private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46847 | Type.name(type,"ETypedElement class"); | ||
46848 | find directInstanceOf(problem,interpretation,element,type); | ||
46849 | } | ||
46850 | private 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 | */ | ||
46862 | private 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 | */ | ||
46900 | private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46901 | Type.name(type,"EStringToStringMapEntry class"); | ||
46902 | find directInstanceOf(problem,interpretation,element,type); | ||
46903 | } | ||
46904 | private 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 | */ | ||
46916 | private 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 | */ | ||
46938 | private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46939 | Type.name(type,"EGenericType class"); | ||
46940 | find directInstanceOf(problem,interpretation,element,type); | ||
46941 | } | ||
46942 | private 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 | */ | ||
46954 | private 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 | */ | ||
46976 | private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
46977 | Type.name(type,"ETypeParameter class"); | ||
46978 | find directInstanceOf(problem,interpretation,element,type); | ||
46979 | } | ||
46980 | private 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 | */ | ||
46992 | private 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 | */ | ||
47024 | private 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 | } | ||
47028 | private 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 | */ | ||
47040 | private 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 | */ | ||
47045 | private 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 | } | ||
47049 | private 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 | */ | ||
47061 | private 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 | */ | ||
47087 | private 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 | } | ||
47091 | private 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 | */ | ||
47103 | private 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 | */ | ||
47108 | private 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 | } | ||
47112 | private 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 | */ | ||
47124 | private 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 | */ | ||
47158 | private 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 | } | ||
47162 | private 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 | */ | ||
47174 | private 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 | */ | ||
47179 | private 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 | } | ||
47183 | private 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 | */ | ||
47195 | private 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 | */ | ||
47231 | private 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 | */ | ||
47245 | private 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 | */ | ||
47266 | private 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 | */ | ||
47280 | private 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 | */ | ||
47302 | private 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 | */ | ||
47316 | private 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 | */ | ||
47342 | private 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 | */ | ||
47356 | private 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 | */ | ||
47378 | private 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 | */ | ||
47392 | private 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 | */ | ||
47409 | private 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 | */ | ||
47423 | private 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 | */ | ||
47440 | private 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 | */ | ||
47454 | private 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 | */ | ||
47480 | private 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 | */ | ||
47494 | private 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 | */ | ||
47511 | private 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 | */ | ||
47525 | private 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 | */ | ||
47542 | private 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 | */ | ||
47556 | private 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 | */ | ||
47573 | private 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 | */ | ||
47587 | private 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 | */ | ||
47604 | private 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 | */ | ||
47618 | private 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 | */ | ||
47635 | private 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 | */ | ||
47649 | private 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 | */ | ||
47666 | private 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 | */ | ||
47680 | private 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 | */ | ||
47697 | private 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 | */ | ||
47711 | private 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 | */ | ||
47728 | private 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 | */ | ||
47742 | private 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 | */ | ||
47763 | private 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 | */ | ||
47777 | private 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 | */ | ||
47803 | private 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 | */ | ||
47817 | private 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 | */ | ||
47839 | private 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 | */ | ||
47853 | private 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 | */ | ||
47870 | private 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 | */ | ||
47884 | private 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 | */ | ||
47910 | private 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 | */ | ||
47924 | private 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 | */ | ||
47946 | private 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 | */ | ||
47960 | private 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 | */ | ||
47986 | private 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 | */ | ||
48000 | private 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 | */ | ||
48026 | private 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 | */ | ||
48040 | private 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 | */ | ||
48066 | private 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 | */ | ||
48080 | private 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 | */ | ||
48106 | private 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 | */ | ||
48120 | private 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 | */ | ||
48142 | private 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 | */ | ||
48156 | private 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 | */ | ||
48182 | private 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 | */ | ||
48196 | private 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 | */ | ||
48213 | private 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 | */ | ||
48227 | private 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 | */ | ||
48249 | private 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 | */ | ||
48263 | private 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 | */ | ||
48289 | private 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 | */ | ||
48303 | private 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 | */ | ||
48329 | private 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 | */ | ||
48343 | private 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 | */ | ||
48369 | private 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 | */ | ||
48383 | private 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 | */ | ||
48409 | private 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 | */ | ||
48423 | private 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 | */ | ||
48444 | private 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 | */ | ||
48458 | private 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 | */ | ||
48479 | private 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 | */ | ||
48493 | private 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 | */ | ||
48510 | private 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 | */ | ||
48524 | private 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 | */ | ||
48550 | private 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 | */ | ||
48564 | private 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 | */ | ||
48585 | private 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 | */ | ||
48599 | private 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 | */ | ||
48625 | private 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 | */ | ||
48639 | private 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 | */ | ||
48665 | private 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 | */ | ||
48679 | private 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 | */ | ||
48701 | private 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 | */ | ||
48715 | private 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 | */ | ||
48736 | private 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 | */ | ||
48750 | private 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 | */ | ||
48776 | private 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 | */ | ||
48790 | private 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 | */ | ||
48811 | private 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 | */ | ||
48825 | private 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 | */ | ||
48846 | private 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 | */ | ||
48860 | private 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 | */ | ||
48882 | private 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 | */ | ||
48896 | private 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 | */ | ||
48917 | private 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 | */ | ||
48931 | private 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 | */ | ||
48952 | private 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 | */ | ||
48966 | private 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 | */ | ||
48987 | private 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 | */ | ||
49001 | private 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 | */ | ||
49022 | private 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 | */ | ||
49036 | private 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 | */ | ||
49057 | private 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 | */ | ||
49071 | private 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 | */ | ||
49092 | private 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 | */ | ||
49106 | private 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 | */ | ||
49127 | private 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 | */ | ||
49141 | private 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 | */ | ||
49162 | private 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 | */ | ||
49176 | private 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 | */ | ||
49197 | private 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 | */ | ||
49211 | private 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 | */ | ||
49232 | private 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 | */ | ||
49246 | private 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 | */ | ||
49267 | private 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 | */ | ||
49281 | private 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 | */ | ||
49302 | private 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 | */ | ||
49316 | private 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 | */ | ||
49337 | private 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 | */ | ||
49351 | private 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 | */ | ||
49372 | private 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 | */ | ||
49386 | private 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 | */ | ||
49407 | private 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 | */ | ||
49421 | private 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 | */ | ||
49442 | private 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 | */ | ||
49456 | private 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 | */ | ||
49477 | private 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 | */ | ||
49491 | private 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 | */ | ||
49512 | private 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 | */ | ||
49526 | private 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 | */ | ||
49547 | private 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 | */ | ||
49561 | private 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 | */ | ||
49582 | private 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 | */ | ||
49596 | private 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 | */ | ||
49617 | private 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 | */ | ||
49631 | private 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 | */ | ||
49652 | private 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 | */ | ||
49666 | private 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 | */ | ||
49687 | private 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 | */ | ||
49701 | private 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 | */ | ||
49722 | private 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 | */ | ||
49736 | private 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 | */ | ||
49757 | private 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 | */ | ||
49771 | private 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 | */ | ||
49792 | private 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 | */ | ||
49806 | private 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 | */ | ||
49827 | private 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 | */ | ||
49841 | private 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 | */ | ||
49862 | private 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 | */ | ||
49876 | private 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 | ////////// | ||
49902 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
49903 | find mustContains4(_,_,source,target); | ||
49904 | } | ||
49905 | |||
49906 | private 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 | |||
49944 | private 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 | ////////// | ||
49959 | pattern 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 | } | ||
49968 | pattern 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 | } | ||
49977 | pattern 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 | ////////// | ||
49996 | private 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 | } | ||
50098 | pattern 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 | } | ||
50114 | pattern 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 | } | ||
50126 | pattern 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 | } | ||
50142 | pattern 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 | } | ||
50158 | pattern 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 | } | ||
50174 | pattern 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 | } | ||
50190 | pattern 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 | } | ||
50206 | pattern 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 | } | ||
50222 | pattern 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 | } | ||
50238 | pattern 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 | } | ||
50250 | pattern 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 | } | ||
50268 | pattern 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 | } | ||
50280 | pattern 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 | } | ||
50296 | pattern 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 | } | ||
50312 | pattern 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 | } | ||
50324 | pattern 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 | } | ||
50342 | pattern 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 | } | ||
50354 | pattern 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 | } | ||
50372 | pattern 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 | } | ||
50384 | pattern 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 | } | ||
50402 | pattern 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 | } | ||
50414 | pattern 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 | } | ||
50432 | pattern 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 | } | ||
50444 | pattern 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 | } | ||
50462 | pattern 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 | } | ||
50474 | pattern 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 | } | ||
50492 | pattern 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 | } | ||
50504 | pattern 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 | } | ||
50520 | pattern 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 | } | ||
50532 | pattern 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 | } | ||
50550 | pattern 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 | } | ||
50562 | pattern 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 | } | ||
50580 | pattern 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 | } | ||
50592 | pattern 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 | } | ||
50610 | pattern 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 | ////////// | ||
50626 | pattern 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 | } | ||
50635 | pattern 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 | } | ||
50644 | pattern 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 | } | ||
50658 | pattern 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 | } | ||
50672 | pattern 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 | } | ||
50689 | pattern 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 | } | ||
50704 | pattern 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 | } | ||
50720 | pattern 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 | } | ||
50736 | pattern 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 | } | ||
50746 | pattern 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 | } | ||
50762 | pattern 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 | } | ||
50771 | pattern 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 | } | ||
50788 | pattern 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 | } | ||
50803 | pattern 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 | ////////// | ||
50821 | pattern 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 | } | ||
50836 | pattern 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 | } | ||
50851 | pattern 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 | } | ||
50866 | pattern 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 | } | ||
50881 | pattern 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 | } | ||
50896 | pattern 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 | } | ||
50911 | pattern 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 | } | ||
50926 | pattern 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 | } | ||
50941 | pattern 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 | } | ||
50956 | pattern 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 | } | ||
50971 | pattern 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 | } | ||
50986 | pattern 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 | } | ||
51001 | pattern 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 | } | ||
51016 | pattern 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 | } | ||
51031 | pattern 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 | } | ||
51046 | pattern 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 | } | ||
51061 | pattern 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 | } | ||
51076 | pattern 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 | } | ||
51091 | pattern 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 | } | ||
51106 | pattern 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 | } | ||
51121 | pattern 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 | } | ||
51136 | pattern 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 | } | ||
51151 | pattern 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 | } | ||
51166 | pattern 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 | } | ||
51181 | pattern 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 | } | ||
51196 | pattern 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 | } | ||
51211 | pattern 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 | } | ||
51226 | pattern 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 | } | ||
51241 | pattern 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 | } | ||
51256 | pattern 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 | } | ||
51271 | pattern 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 | } | ||
51286 | pattern 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 | } | ||
51301 | pattern 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 | } | ||
51316 | pattern 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 | } | ||
51331 | pattern 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 | } | ||
51346 | pattern 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 | } | ||
51361 | pattern 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 | } | ||
51376 | pattern 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 | } | ||
51391 | pattern 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 | } | ||
51406 | pattern 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 | } | ||
51421 | pattern 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 | } | ||
51436 | pattern 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 | } | ||
51451 | pattern 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 | } | ||
51466 | pattern 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 | } | ||
51481 | pattern 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 | } | ||
51496 | pattern 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 | } | ||
51511 | pattern 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 | } | ||
51526 | pattern 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 | } | ||
51541 | pattern 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 | } | ||
51556 | pattern 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 | } | ||
51571 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
51572 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
51573 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
51574 | |||
51575 | ////////// | ||
51576 | // 0. Util | ||
51577 | ////////// | ||
51578 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
51579 | PartialInterpretation.problem(interpretation,problem); | ||
51580 | } | ||
51581 | |||
51582 | ///////////////////////// | ||
51583 | // 0.1 Existence | ||
51584 | ///////////////////////// | ||
51585 | private 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 | |||
51593 | private 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 | |||
51601 | private 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 | //////////////////////// | ||
51613 | pattern 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 | //////////////////////// | ||
51622 | private 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 | |||
51629 | private 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 | |||
51639 | private 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 | */ | ||
51657 | private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51658 | Type.name(type,"EAttribute class"); | ||
51659 | find directInstanceOf(problem,interpretation,element,type); | ||
51660 | } | ||
51661 | private 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 | */ | ||
51673 | private 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 | */ | ||
51711 | private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51712 | Type.name(type,"EAnnotation class"); | ||
51713 | find directInstanceOf(problem,interpretation,element,type); | ||
51714 | } | ||
51715 | private 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 | */ | ||
51727 | private 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 | */ | ||
51751 | private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51752 | Type.name(type,"EClass class"); | ||
51753 | find directInstanceOf(problem,interpretation,element,type); | ||
51754 | } | ||
51755 | private 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 | */ | ||
51767 | private 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 | */ | ||
51801 | private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51802 | Type.name(type,"EClassifier class"); | ||
51803 | find directInstanceOf(problem,interpretation,element,type); | ||
51804 | } | ||
51805 | private 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 | */ | ||
51817 | private 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 | */ | ||
51853 | private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51854 | Type.name(type,"EDataType class"); | ||
51855 | find directInstanceOf(problem,interpretation,element,type); | ||
51856 | } | ||
51857 | private 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 | */ | ||
51869 | private 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 | */ | ||
51905 | private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51906 | Type.name(type,"EEnum class"); | ||
51907 | find directInstanceOf(problem,interpretation,element,type); | ||
51908 | } | ||
51909 | private 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 | */ | ||
51921 | private 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 | */ | ||
51955 | private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
51956 | Type.name(type,"EEnumLiteral class"); | ||
51957 | find directInstanceOf(problem,interpretation,element,type); | ||
51958 | } | ||
51959 | private 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 | */ | ||
51971 | private 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 | */ | ||
52003 | private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52004 | Type.name(type,"EModelElement class"); | ||
52005 | find directInstanceOf(problem,interpretation,element,type); | ||
52006 | } | ||
52007 | private 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 | */ | ||
52019 | private 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 | */ | ||
52045 | private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52046 | Type.name(type,"ENamedElement class"); | ||
52047 | find directInstanceOf(problem,interpretation,element,type); | ||
52048 | } | ||
52049 | private 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 | */ | ||
52061 | private 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 | */ | ||
52087 | private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52088 | Type.name(type,"EObject class"); | ||
52089 | find directInstanceOf(problem,interpretation,element,type); | ||
52090 | } | ||
52091 | private 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 | */ | ||
52103 | private 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 | */ | ||
52125 | private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52126 | Type.name(type,"EOperation class"); | ||
52127 | find directInstanceOf(problem,interpretation,element,type); | ||
52128 | } | ||
52129 | private 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 | */ | ||
52141 | private 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 | */ | ||
52177 | private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52178 | Type.name(type,"EPackage class"); | ||
52179 | find directInstanceOf(problem,interpretation,element,type); | ||
52180 | } | ||
52181 | private 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 | */ | ||
52193 | private 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 | */ | ||
52217 | private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52218 | Type.name(type,"EParameter class"); | ||
52219 | find directInstanceOf(problem,interpretation,element,type); | ||
52220 | } | ||
52221 | private 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 | */ | ||
52233 | private 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 | */ | ||
52269 | private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52270 | Type.name(type,"EReference class"); | ||
52271 | find directInstanceOf(problem,interpretation,element,type); | ||
52272 | } | ||
52273 | private 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 | */ | ||
52285 | private 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 | */ | ||
52323 | private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52324 | Type.name(type,"EStructuralFeature class"); | ||
52325 | find directInstanceOf(problem,interpretation,element,type); | ||
52326 | } | ||
52327 | private 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 | */ | ||
52339 | private 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 | */ | ||
52379 | private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52380 | Type.name(type,"ETypedElement class"); | ||
52381 | find directInstanceOf(problem,interpretation,element,type); | ||
52382 | } | ||
52383 | private 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 | */ | ||
52395 | private 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 | */ | ||
52433 | private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52434 | Type.name(type,"EStringToStringMapEntry class"); | ||
52435 | find directInstanceOf(problem,interpretation,element,type); | ||
52436 | } | ||
52437 | private 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 | */ | ||
52449 | private 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 | */ | ||
52471 | private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52472 | Type.name(type,"EGenericType class"); | ||
52473 | find directInstanceOf(problem,interpretation,element,type); | ||
52474 | } | ||
52475 | private 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 | */ | ||
52487 | private 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 | */ | ||
52509 | private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
52510 | Type.name(type,"ETypeParameter class"); | ||
52511 | find directInstanceOf(problem,interpretation,element,type); | ||
52512 | } | ||
52513 | private 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 | */ | ||
52525 | private 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 | */ | ||
52557 | private 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 | } | ||
52561 | private 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 | */ | ||
52573 | private 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 | */ | ||
52578 | private 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 | } | ||
52582 | private 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 | */ | ||
52594 | private 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 | */ | ||
52620 | private 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 | } | ||
52624 | private 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 | */ | ||
52636 | private 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 | */ | ||
52641 | private 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 | } | ||
52645 | private 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 | */ | ||
52657 | private 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 | */ | ||
52691 | private 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 | } | ||
52695 | private 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 | */ | ||
52707 | private 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 | */ | ||
52712 | private 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 | } | ||
52716 | private 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 | */ | ||
52728 | private 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 | */ | ||
52764 | private 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 | */ | ||
52778 | private 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 | */ | ||
52799 | private 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 | */ | ||
52813 | private 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 | */ | ||
52835 | private 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 | */ | ||
52849 | private 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 | */ | ||
52875 | private 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 | */ | ||
52889 | private 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 | */ | ||
52911 | private 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 | */ | ||
52925 | private 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 | */ | ||
52942 | private 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 | */ | ||
52956 | private 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 | */ | ||
52973 | private 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 | */ | ||
52987 | private 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 | */ | ||
53013 | private 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 | */ | ||
53027 | private 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 | */ | ||
53044 | private 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 | */ | ||
53058 | private 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 | */ | ||
53075 | private 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 | */ | ||
53089 | private 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 | */ | ||
53106 | private 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 | */ | ||
53120 | private 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 | */ | ||
53137 | private 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 | */ | ||
53151 | private 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 | */ | ||
53168 | private 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 | */ | ||
53182 | private 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 | */ | ||
53199 | private 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 | */ | ||
53213 | private 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 | */ | ||
53230 | private 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 | */ | ||
53244 | private 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 | */ | ||
53261 | private 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 | */ | ||
53275 | private 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 | */ | ||
53296 | private 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 | */ | ||
53310 | private 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 | */ | ||
53336 | private 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 | */ | ||
53350 | private 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 | */ | ||
53372 | private 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 | */ | ||
53386 | private 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 | */ | ||
53403 | private 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 | */ | ||
53417 | private 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 | */ | ||
53443 | private 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 | */ | ||
53457 | private 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 | */ | ||
53479 | private 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 | */ | ||
53493 | private 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 | */ | ||
53519 | private 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 | */ | ||
53533 | private 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 | */ | ||
53559 | private 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 | */ | ||
53573 | private 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 | */ | ||
53599 | private 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 | */ | ||
53613 | private 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 | */ | ||
53639 | private 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 | */ | ||
53653 | private 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 | */ | ||
53675 | private 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 | */ | ||
53689 | private 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 | */ | ||
53715 | private 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 | */ | ||
53729 | private 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 | */ | ||
53746 | private 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 | */ | ||
53760 | private 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 | */ | ||
53782 | private 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 | */ | ||
53796 | private 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 | */ | ||
53822 | private 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 | */ | ||
53836 | private 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 | */ | ||
53862 | private 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 | */ | ||
53876 | private 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 | */ | ||
53902 | private 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 | */ | ||
53916 | private 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 | */ | ||
53942 | private 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 | */ | ||
53956 | private 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 | */ | ||
53977 | private 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 | */ | ||
53991 | private 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 | */ | ||
54012 | private 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 | */ | ||
54026 | private 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 | */ | ||
54043 | private 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 | */ | ||
54057 | private 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 | */ | ||
54083 | private 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 | */ | ||
54097 | private 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 | */ | ||
54118 | private 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 | */ | ||
54132 | private 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 | */ | ||
54158 | private 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 | */ | ||
54172 | private 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 | */ | ||
54198 | private 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 | */ | ||
54212 | private 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 | */ | ||
54234 | private 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 | */ | ||
54248 | private 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 | */ | ||
54269 | private 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 | */ | ||
54283 | private 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 | */ | ||
54309 | private 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 | */ | ||
54323 | private 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 | */ | ||
54344 | private 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 | */ | ||
54358 | private 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 | */ | ||
54379 | private 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 | */ | ||
54393 | private 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 | */ | ||
54415 | private 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 | */ | ||
54429 | private 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 | */ | ||
54450 | private 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 | */ | ||
54464 | private 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 | */ | ||
54485 | private 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 | */ | ||
54499 | private 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 | */ | ||
54520 | private 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 | */ | ||
54534 | private 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 | */ | ||
54555 | private 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 | */ | ||
54569 | private 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 | */ | ||
54590 | private 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 | */ | ||
54604 | private 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 | */ | ||
54625 | private 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 | */ | ||
54639 | private 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 | */ | ||
54660 | private 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 | */ | ||
54674 | private 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 | */ | ||
54695 | private 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 | */ | ||
54709 | private 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 | */ | ||
54730 | private 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 | */ | ||
54744 | private 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 | */ | ||
54765 | private 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 | */ | ||
54779 | private 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 | */ | ||
54800 | private 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 | */ | ||
54814 | private 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 | */ | ||
54835 | private 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 | */ | ||
54849 | private 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 | */ | ||
54870 | private 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 | */ | ||
54884 | private 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 | */ | ||
54905 | private 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 | */ | ||
54919 | private 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 | */ | ||
54940 | private 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 | */ | ||
54954 | private 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 | */ | ||
54975 | private 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 | */ | ||
54989 | private 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 | */ | ||
55010 | private 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 | */ | ||
55024 | private 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 | */ | ||
55045 | private 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 | */ | ||
55059 | private 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 | */ | ||
55080 | private 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 | */ | ||
55094 | private 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 | */ | ||
55115 | private 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 | */ | ||
55129 | private 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 | */ | ||
55150 | private 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 | */ | ||
55164 | private 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 | */ | ||
55185 | private 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 | */ | ||
55199 | private 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 | */ | ||
55220 | private 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 | */ | ||
55234 | private 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 | */ | ||
55255 | private 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 | */ | ||
55269 | private 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 | */ | ||
55290 | private 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 | */ | ||
55304 | private 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 | */ | ||
55325 | private 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 | */ | ||
55339 | private 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 | */ | ||
55360 | private 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 | */ | ||
55374 | private 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 | */ | ||
55395 | private 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 | */ | ||
55409 | private 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 | ////////// | ||
55435 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
55436 | find mustContains4(_,_,source,target); | ||
55437 | } | ||
55438 | |||
55439 | private 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 | |||
55477 | private 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 | ////////// | ||
55492 | pattern 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 | } | ||
55501 | pattern 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 | } | ||
55510 | pattern 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 | ////////// | ||
55529 | private 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 | } | ||
55631 | pattern 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 | } | ||
55649 | pattern 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 | } | ||
55661 | pattern 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 | } | ||
55679 | pattern 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 | } | ||
55691 | pattern 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 | } | ||
55709 | pattern 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 | } | ||
55721 | pattern 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 | } | ||
55739 | pattern 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 | } | ||
55751 | pattern 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 | } | ||
55769 | pattern 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 | } | ||
55781 | pattern 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 | } | ||
55799 | pattern 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 | } | ||
55811 | pattern 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 | } | ||
55829 | pattern 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 | } | ||
55841 | pattern 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 | } | ||
55857 | pattern 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 | } | ||
55869 | pattern 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 | } | ||
55887 | pattern 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 | } | ||
55899 | pattern 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 | } | ||
55917 | pattern 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 | } | ||
55929 | pattern 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 | } | ||
55947 | pattern 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 | } | ||
55959 | pattern 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 | } | ||
55975 | pattern 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 | } | ||
55991 | pattern 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 | } | ||
56007 | pattern 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 | } | ||
56023 | pattern 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 | } | ||
56039 | pattern 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 | } | ||
56055 | pattern 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 | } | ||
56071 | pattern 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 | } | ||
56083 | pattern 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 | } | ||
56099 | pattern 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 | } | ||
56111 | pattern 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 | } | ||
56127 | pattern 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 | } | ||
56143 | pattern 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 | ////////// | ||
56159 | pattern 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 | } | ||
56169 | pattern 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 | } | ||
56184 | pattern 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 | } | ||
56200 | pattern 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 | } | ||
56214 | pattern 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 | } | ||
56229 | pattern 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 | } | ||
56245 | pattern 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 | } | ||
56262 | pattern 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 | } | ||
56271 | pattern 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 | } | ||
56285 | pattern 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 | } | ||
56302 | pattern 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 | } | ||
56318 | pattern 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 | } | ||
56327 | pattern 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 | } | ||
56336 | pattern 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 | ////////// | ||
56354 | pattern 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 | } | ||
56369 | pattern 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 | } | ||
56384 | pattern 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 | } | ||
56399 | pattern 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 | } | ||
56414 | pattern 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 | } | ||
56429 | pattern 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 | } | ||
56444 | pattern 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 | } | ||
56459 | pattern 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 | } | ||
56474 | pattern 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 | } | ||
56489 | pattern 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 | } | ||
56504 | pattern 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 | } | ||
56519 | pattern 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 | } | ||
56534 | pattern 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 | } | ||
56549 | pattern 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 | } | ||
56564 | pattern 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 | } | ||
56579 | pattern 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 | } | ||
56594 | pattern 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 | } | ||
56609 | pattern 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 | } | ||
56624 | pattern 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 | } | ||
56639 | pattern 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 | } | ||
56654 | pattern 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 | } | ||
56669 | pattern 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 | } | ||
56684 | pattern 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 | } | ||
56699 | pattern 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 | } | ||
56714 | pattern 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 | } | ||
56729 | pattern 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 | } | ||
56744 | pattern 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 | } | ||
56759 | pattern 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 | } | ||
56774 | pattern 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 | } | ||
56789 | pattern 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 | } | ||
56804 | pattern 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 | } | ||
56819 | pattern 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 | } | ||
56834 | pattern 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 | } | ||
56849 | pattern 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 | } | ||
56864 | pattern 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 | } | ||
56879 | pattern 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 | } | ||
56894 | pattern 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 | } | ||
56909 | pattern 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 | } | ||
56924 | pattern 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 | } | ||
56939 | pattern 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 | } | ||
56954 | pattern 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 | } | ||
56969 | pattern 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 | } | ||
56984 | pattern 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 | } | ||
56999 | pattern 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 | } | ||
57014 | pattern 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 | } | ||
57029 | pattern 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 | } | ||
57044 | pattern 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 | } | ||
57059 | pattern 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 | } | ||
57074 | pattern 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 | } | ||
57089 | pattern 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 | } | ||
57104 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
57105 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
57106 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
57107 | |||
57108 | ////////// | ||
57109 | // 0. Util | ||
57110 | ////////// | ||
57111 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
57112 | PartialInterpretation.problem(interpretation,problem); | ||
57113 | } | ||
57114 | |||
57115 | ///////////////////////// | ||
57116 | // 0.1 Existence | ||
57117 | ///////////////////////// | ||
57118 | private 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 | |||
57126 | private 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 | |||
57134 | private 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 | //////////////////////// | ||
57146 | pattern 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 | //////////////////////// | ||
57155 | private 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 | |||
57162 | private 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 | |||
57172 | private 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 | */ | ||
57190 | private pattern mustInstanceOfFunctionalElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57191 | Type.name(type,"FunctionalElement class"); | ||
57192 | find directInstanceOf(problem,interpretation,element,type); | ||
57193 | } | ||
57194 | private 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 | */ | ||
57206 | private 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 | */ | ||
57234 | private pattern mustInstanceOfFunctionalArchitectureModel_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57235 | Type.name(type,"FunctionalArchitectureModel class"); | ||
57236 | find directInstanceOf(problem,interpretation,element,type); | ||
57237 | } | ||
57238 | private 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 | */ | ||
57250 | private 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 | */ | ||
57278 | private pattern mustInstanceOfFunction_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57279 | Type.name(type,"Function class"); | ||
57280 | find directInstanceOf(problem,interpretation,element,type); | ||
57281 | } | ||
57282 | private 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 | */ | ||
57294 | private 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 | */ | ||
57320 | private pattern mustInstanceOfFAMTerminator_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57321 | Type.name(type,"FAMTerminator class"); | ||
57322 | find directInstanceOf(problem,interpretation,element,type); | ||
57323 | } | ||
57324 | private 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 | */ | ||
57336 | private 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 | */ | ||
57362 | private pattern mustInstanceOfInformationLink_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57363 | Type.name(type,"InformationLink class"); | ||
57364 | find directInstanceOf(problem,interpretation,element,type); | ||
57365 | } | ||
57366 | private 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 | */ | ||
57378 | private 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 | */ | ||
57404 | private pattern mustInstanceOfFunctionalInterface_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57405 | Type.name(type,"FunctionalInterface class"); | ||
57406 | find directInstanceOf(problem,interpretation,element,type); | ||
57407 | } | ||
57408 | private 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 | */ | ||
57420 | private 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 | */ | ||
57446 | private pattern mustInstanceOfFunctionalInput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57447 | Type.name(type,"FunctionalInput class"); | ||
57448 | find directInstanceOf(problem,interpretation,element,type); | ||
57449 | } | ||
57450 | private 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 | */ | ||
57462 | private 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 | */ | ||
57490 | private pattern mustInstanceOfFunctionalOutput_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57491 | Type.name(type,"FunctionalOutput class"); | ||
57492 | find directInstanceOf(problem,interpretation,element,type); | ||
57493 | } | ||
57494 | private 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 | */ | ||
57506 | private 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 | */ | ||
57534 | private pattern mustInstanceOfFunctionalData_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57535 | Type.name(type,"FunctionalData class"); | ||
57536 | find directInstanceOf(problem,interpretation,element,type); | ||
57537 | } | ||
57538 | private 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 | */ | ||
57550 | private 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 | */ | ||
57580 | private pattern mustInstanceOfFunctionType_enum(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
57581 | Type.name(type,"FunctionType enum"); | ||
57582 | find directInstanceOf(problem,interpretation,element,type); | ||
57583 | } | ||
57584 | private 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 | */ | ||
57596 | private 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 | */ | ||
57601 | private 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 | } | ||
57605 | private 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 | */ | ||
57617 | private 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 | */ | ||
57622 | private 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 | } | ||
57626 | private 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 | */ | ||
57638 | private 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 | */ | ||
57668 | private 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 | */ | ||
57682 | private 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 | */ | ||
57712 | private 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 | */ | ||
57726 | private 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 | */ | ||
57747 | private 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 | */ | ||
57761 | private 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 | */ | ||
57787 | private 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 | */ | ||
57801 | private 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 | */ | ||
57823 | private 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 | */ | ||
57837 | private 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 | */ | ||
57863 | private 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 | */ | ||
57877 | private 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 | */ | ||
57907 | private 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 | */ | ||
57921 | private 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 | */ | ||
57947 | private 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 | */ | ||
57961 | private 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 | */ | ||
57982 | private 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 | */ | ||
57996 | private 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 | */ | ||
58022 | private 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 | */ | ||
58036 | private 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 | */ | ||
58066 | private 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 | */ | ||
58080 | private 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 | */ | ||
58101 | private 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 | */ | ||
58115 | private 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 | */ | ||
58141 | private 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 | */ | ||
58155 | private 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 | */ | ||
58185 | private 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 | */ | ||
58199 | private 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 | */ | ||
58225 | private 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 | */ | ||
58239 | private 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 | ////////// | ||
58265 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
58266 | find mustContains4(_,_,source,target); | ||
58267 | } | ||
58268 | |||
58269 | private 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 | |||
58283 | private 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 | ////////// | ||
58298 | pattern 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 | } | ||
58307 | pattern 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 | } | ||
58316 | pattern 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 | ////////// | ||
58335 | private 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 | } | ||
58381 | pattern 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 | } | ||
58399 | pattern 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 | } | ||
58411 | pattern 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 | } | ||
58429 | pattern 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 | } | ||
58441 | pattern 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 | } | ||
58459 | pattern 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 | } | ||
58471 | pattern 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 | } | ||
58483 | pattern 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 | } | ||
58499 | pattern 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 | } | ||
58517 | pattern 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 | } | ||
58529 | pattern 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 | } | ||
58547 | pattern 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 | } | ||
58559 | pattern 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 | } | ||
58577 | pattern 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 | ////////// | ||
58593 | pattern 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 | } | ||
58605 | pattern 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 | } | ||
58616 | pattern 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 | } | ||
58627 | pattern 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 | } | ||
58638 | pattern 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 | } | ||
58649 | pattern 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 | } | ||
58660 | pattern 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 | ////////// | ||
58676 | pattern 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 | } | ||
58691 | pattern 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 | } | ||
58708 | pattern 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 | } | ||
58723 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" | ||
58724 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" | ||
58725 | import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" | ||
58726 | |||
58727 | ////////// | ||
58728 | // 0. Util | ||
58729 | ////////// | ||
58730 | private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { | ||
58731 | PartialInterpretation.problem(interpretation,problem); | ||
58732 | } | ||
58733 | |||
58734 | ///////////////////////// | ||
58735 | // 0.1 Existence | ||
58736 | ///////////////////////// | ||
58737 | private 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 | |||
58745 | private 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 | |||
58753 | private 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 | //////////////////////// | ||
58765 | pattern 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 | //////////////////////// | ||
58774 | private 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 | |||
58781 | private 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 | |||
58791 | private 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 | */ | ||
58809 | private pattern mustInstanceOfEAttribute_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
58810 | Type.name(type,"EAttribute class"); | ||
58811 | find directInstanceOf(problem,interpretation,element,type); | ||
58812 | } | ||
58813 | private 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 | */ | ||
58825 | private 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 | */ | ||
58863 | private pattern mustInstanceOfEAnnotation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
58864 | Type.name(type,"EAnnotation class"); | ||
58865 | find directInstanceOf(problem,interpretation,element,type); | ||
58866 | } | ||
58867 | private 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 | */ | ||
58879 | private 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 | */ | ||
58903 | private pattern mustInstanceOfEClass_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
58904 | Type.name(type,"EClass class"); | ||
58905 | find directInstanceOf(problem,interpretation,element,type); | ||
58906 | } | ||
58907 | private 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 | */ | ||
58919 | private 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 | */ | ||
58953 | private pattern mustInstanceOfEClassifier_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
58954 | Type.name(type,"EClassifier class"); | ||
58955 | find directInstanceOf(problem,interpretation,element,type); | ||
58956 | } | ||
58957 | private 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 | */ | ||
58969 | private 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 | */ | ||
59005 | private pattern mustInstanceOfEDataType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59006 | Type.name(type,"EDataType class"); | ||
59007 | find directInstanceOf(problem,interpretation,element,type); | ||
59008 | } | ||
59009 | private 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 | */ | ||
59021 | private 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 | */ | ||
59057 | private pattern mustInstanceOfEEnum_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59058 | Type.name(type,"EEnum class"); | ||
59059 | find directInstanceOf(problem,interpretation,element,type); | ||
59060 | } | ||
59061 | private 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 | */ | ||
59073 | private 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 | */ | ||
59107 | private pattern mustInstanceOfEEnumLiteral_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59108 | Type.name(type,"EEnumLiteral class"); | ||
59109 | find directInstanceOf(problem,interpretation,element,type); | ||
59110 | } | ||
59111 | private 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 | */ | ||
59123 | private 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 | */ | ||
59155 | private pattern mustInstanceOfEModelElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59156 | Type.name(type,"EModelElement class"); | ||
59157 | find directInstanceOf(problem,interpretation,element,type); | ||
59158 | } | ||
59159 | private 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 | */ | ||
59171 | private 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 | */ | ||
59197 | private pattern mustInstanceOfENamedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59198 | Type.name(type,"ENamedElement class"); | ||
59199 | find directInstanceOf(problem,interpretation,element,type); | ||
59200 | } | ||
59201 | private 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 | */ | ||
59213 | private 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 | */ | ||
59239 | private pattern mustInstanceOfEObject_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59240 | Type.name(type,"EObject class"); | ||
59241 | find directInstanceOf(problem,interpretation,element,type); | ||
59242 | } | ||
59243 | private 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 | */ | ||
59255 | private 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 | */ | ||
59277 | private pattern mustInstanceOfEOperation_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59278 | Type.name(type,"EOperation class"); | ||
59279 | find directInstanceOf(problem,interpretation,element,type); | ||
59280 | } | ||
59281 | private 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 | */ | ||
59293 | private 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 | */ | ||
59329 | private pattern mustInstanceOfEPackage_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59330 | Type.name(type,"EPackage class"); | ||
59331 | find directInstanceOf(problem,interpretation,element,type); | ||
59332 | } | ||
59333 | private 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 | */ | ||
59345 | private 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 | */ | ||
59369 | private pattern mustInstanceOfEParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59370 | Type.name(type,"EParameter class"); | ||
59371 | find directInstanceOf(problem,interpretation,element,type); | ||
59372 | } | ||
59373 | private 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 | */ | ||
59385 | private 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 | */ | ||
59421 | private pattern mustInstanceOfEReference_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59422 | Type.name(type,"EReference class"); | ||
59423 | find directInstanceOf(problem,interpretation,element,type); | ||
59424 | } | ||
59425 | private 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 | */ | ||
59437 | private 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 | */ | ||
59475 | private pattern mustInstanceOfEStructuralFeature_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59476 | Type.name(type,"EStructuralFeature class"); | ||
59477 | find directInstanceOf(problem,interpretation,element,type); | ||
59478 | } | ||
59479 | private 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 | */ | ||
59491 | private 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 | */ | ||
59531 | private pattern mustInstanceOfETypedElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59532 | Type.name(type,"ETypedElement class"); | ||
59533 | find directInstanceOf(problem,interpretation,element,type); | ||
59534 | } | ||
59535 | private 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 | */ | ||
59547 | private 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 | */ | ||
59585 | private pattern mustInstanceOfEStringToStringMapEntry_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59586 | Type.name(type,"EStringToStringMapEntry class"); | ||
59587 | find directInstanceOf(problem,interpretation,element,type); | ||
59588 | } | ||
59589 | private 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 | */ | ||
59601 | private 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 | */ | ||
59623 | private pattern mustInstanceOfEGenericType_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59624 | Type.name(type,"EGenericType class"); | ||
59625 | find directInstanceOf(problem,interpretation,element,type); | ||
59626 | } | ||
59627 | private 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 | */ | ||
59639 | private 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 | */ | ||
59661 | private pattern mustInstanceOfETypeParameter_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { | ||
59662 | Type.name(type,"ETypeParameter class"); | ||
59663 | find directInstanceOf(problem,interpretation,element,type); | ||
59664 | } | ||
59665 | private 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 | */ | ||
59677 | private 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 | */ | ||
59709 | private 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 | } | ||
59713 | private 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 | */ | ||
59725 | private 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 | */ | ||
59730 | private 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 | } | ||
59734 | private 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 | */ | ||
59746 | private 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 | */ | ||
59772 | private 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 | } | ||
59776 | private 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 | */ | ||
59788 | private 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 | */ | ||
59793 | private 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 | } | ||
59797 | private 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 | */ | ||
59809 | private 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 | */ | ||
59843 | private 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 | } | ||
59847 | private 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 | */ | ||
59859 | private 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 | */ | ||
59864 | private 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 | } | ||
59868 | private 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 | */ | ||
59880 | private 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 | */ | ||
59916 | private 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 | */ | ||
59930 | private 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 | */ | ||
59951 | private 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 | */ | ||
59965 | private 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 | */ | ||
59987 | private 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 | */ | ||
60001 | private 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 | */ | ||
60027 | private 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 | */ | ||
60041 | private 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 | */ | ||
60063 | private 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 | */ | ||
60077 | private 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 | */ | ||
60094 | private 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 | */ | ||
60108 | private 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 | */ | ||
60125 | private 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 | */ | ||
60139 | private 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 | */ | ||
60165 | private 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 | */ | ||
60179 | private 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 | */ | ||
60196 | private 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 | */ | ||
60210 | private 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 | */ | ||
60227 | private 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 | */ | ||
60241 | private 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 | */ | ||
60258 | private 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 | */ | ||
60272 | private 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 | */ | ||
60289 | private 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 | */ | ||
60303 | private 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 | */ | ||
60320 | private 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 | */ | ||
60334 | private 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 | */ | ||
60351 | private 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 | */ | ||
60365 | private 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 | */ | ||
60382 | private 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 | */ | ||
60396 | private 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 | */ | ||
60413 | private 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 | */ | ||
60427 | private 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 | */ | ||
60448 | private 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 | */ | ||
60462 | private 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 | */ | ||
60488 | private 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 | */ | ||
60502 | private 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 | */ | ||
60524 | private 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 | */ | ||
60538 | private 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 | */ | ||
60555 | private 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 | */ | ||
60569 | private 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 | */ | ||
60595 | private 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 | */ | ||
60609 | private 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 | */ | ||
60631 | private 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 | */ | ||
60645 | private 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 | */ | ||
60671 | private 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 | */ | ||
60685 | private 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 | */ | ||
60711 | private 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 | */ | ||
60725 | private 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 | */ | ||
60751 | private 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 | */ | ||
60765 | private 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 | */ | ||
60791 | private 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 | */ | ||
60805 | private 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 | */ | ||
60827 | private 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 | */ | ||
60841 | private 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 | */ | ||
60867 | private 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 | */ | ||
60881 | private 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 | */ | ||
60898 | private 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 | */ | ||
60912 | private 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 | */ | ||
60934 | private 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 | */ | ||
60948 | private 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 | */ | ||
60974 | private 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 | */ | ||
60988 | private 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 | */ | ||
61014 | private 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 | */ | ||
61028 | private 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 | */ | ||
61054 | private 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 | */ | ||
61068 | private 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 | */ | ||
61094 | private 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 | */ | ||
61108 | private 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 | */ | ||
61129 | private 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 | */ | ||
61143 | private 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 | */ | ||
61164 | private 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 | */ | ||
61178 | private 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 | */ | ||
61195 | private 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 | */ | ||
61209 | private 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 | */ | ||
61235 | private 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 | */ | ||
61249 | private 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 | */ | ||
61270 | private 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 | */ | ||
61284 | private 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 | */ | ||
61310 | private 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 | */ | ||
61324 | private 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 | */ | ||
61350 | private 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 | */ | ||
61364 | private 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 | */ | ||
61386 | private 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 | */ | ||
61400 | private 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 | */ | ||
61421 | private 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 | */ | ||
61435 | private 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 | */ | ||
61461 | private 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 | */ | ||
61475 | private 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 | */ | ||
61496 | private 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 | */ | ||
61510 | private 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 | */ | ||
61531 | private 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 | */ | ||
61545 | private 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 | */ | ||
61567 | private 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 | */ | ||
61581 | private 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 | */ | ||
61602 | private 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 | */ | ||
61616 | private 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 | */ | ||
61637 | private 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 | */ | ||
61651 | private 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 | */ | ||
61672 | private 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 | */ | ||
61686 | private 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 | */ | ||
61707 | private 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 | */ | ||
61721 | private 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 | */ | ||
61742 | private 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 | */ | ||
61756 | private 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 | */ | ||
61777 | private 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 | */ | ||
61791 | private 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 | */ | ||
61812 | private 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 | */ | ||
61826 | private 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 | */ | ||
61847 | private 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 | */ | ||
61861 | private 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 | */ | ||
61882 | private 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 | */ | ||
61896 | private 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 | */ | ||
61917 | private 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 | */ | ||
61931 | private 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 | */ | ||
61952 | private 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 | */ | ||
61966 | private 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 | */ | ||
61987 | private 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 | */ | ||
62001 | private 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 | */ | ||
62022 | private 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 | */ | ||
62036 | private 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 | */ | ||
62057 | private 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 | */ | ||
62071 | private 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 | */ | ||
62092 | private 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 | */ | ||
62106 | private 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 | */ | ||
62127 | private 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 | */ | ||
62141 | private 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 | */ | ||
62162 | private 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 | */ | ||
62176 | private 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 | */ | ||
62197 | private 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 | */ | ||
62211 | private 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 | */ | ||
62232 | private 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 | */ | ||
62246 | private 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 | */ | ||
62267 | private 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 | */ | ||
62281 | private 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 | */ | ||
62302 | private 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 | */ | ||
62316 | private 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 | */ | ||
62337 | private 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 | */ | ||
62351 | private 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 | */ | ||
62372 | private 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 | */ | ||
62386 | private 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 | */ | ||
62407 | private 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 | */ | ||
62421 | private 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 | */ | ||
62442 | private 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 | */ | ||
62456 | private 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 | */ | ||
62477 | private 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 | */ | ||
62491 | private 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 | */ | ||
62512 | private 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 | */ | ||
62526 | private 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 | */ | ||
62547 | private 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 | */ | ||
62561 | private 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 | ////////// | ||
62587 | private pattern mustContains2(source: DefinedElement, target: DefinedElement) { | ||
62588 | find mustContains4(_,_,source,target); | ||
62589 | } | ||
62590 | |||
62591 | private 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 | |||
62629 | private 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 | ////////// | ||
62644 | pattern 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 | } | ||
62653 | pattern 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 | } | ||
62662 | pattern 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 | ////////// | ||
62681 | private 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 | } | ||
62783 | pattern 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 | } | ||
62799 | pattern 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 | } | ||
62811 | pattern 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 | } | ||
62829 | pattern 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 | } | ||
62841 | pattern 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 | } | ||
62859 | pattern 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 | } | ||
62871 | pattern 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 | } | ||
62887 | pattern 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 | } | ||
62903 | pattern 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 | } | ||
62919 | pattern 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 | } | ||
62935 | pattern 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 | } | ||
62951 | pattern 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 | } | ||
62967 | pattern 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 | } | ||
62983 | pattern 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 | } | ||
62995 | pattern 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 | } | ||
63013 | pattern 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 | } | ||
63025 | pattern 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 | } | ||
63041 | pattern 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 | } | ||
63053 | pattern 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 | } | ||
63071 | pattern 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 | } | ||
63083 | pattern 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 | } | ||
63099 | pattern 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 | } | ||
63115 | pattern 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 | } | ||
63127 | pattern 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 | } | ||
63145 | pattern 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 | } | ||
63157 | pattern 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 | } | ||
63175 | pattern 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 | } | ||
63187 | pattern 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 | } | ||
63205 | pattern 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 | } | ||
63217 | pattern 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 | } | ||
63235 | pattern 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 | } | ||
63247 | pattern 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 | } | ||
63265 | pattern 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 | } | ||
63277 | pattern 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 | } | ||
63295 | pattern 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 | ////////// | ||
63311 | pattern 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 | } | ||
63320 | pattern 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 | } | ||
63335 | pattern 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 | } | ||
63351 | pattern 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 | } | ||
63360 | pattern 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 | } | ||
63374 | pattern 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 | } | ||
63383 | pattern 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 | } | ||
63397 | pattern 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 | } | ||
63411 | pattern 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 | } | ||
63428 | pattern 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 | } | ||
63444 | pattern 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 | } | ||
63454 | pattern 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 | } | ||
63471 | pattern 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 | } | ||
63487 | pattern 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 | ////////// | ||
63506 | pattern 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 | } | ||
63521 | pattern 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 | } | ||
63536 | pattern 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 | } | ||
63551 | pattern 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 | } | ||
63566 | pattern 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 | } | ||
63581 | pattern 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 | } | ||
63596 | pattern 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 | } | ||
63611 | pattern 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 | } | ||
63626 | pattern 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 | } | ||
63641 | pattern 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 | } | ||
63656 | pattern 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 | } | ||
63671 | pattern 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 | } | ||
63686 | pattern 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 | } | ||
63701 | pattern 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 | } | ||
63716 | pattern 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 | } | ||
63731 | pattern 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 | } | ||
63746 | pattern 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 | } | ||
63761 | pattern 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 | } | ||
63776 | pattern 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 | } | ||
63791 | pattern 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 | } | ||
63806 | pattern 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 | } | ||
63821 | pattern 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 | } | ||
63836 | pattern 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 | } | ||
63851 | pattern 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 | } | ||
63866 | pattern 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 | } | ||
63881 | pattern 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 | } | ||
63896 | pattern 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 | } | ||
63911 | pattern 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 | } | ||
63926 | pattern 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 | } | ||
63941 | pattern 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 | } | ||
63956 | pattern 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 | } | ||
63971 | pattern 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 | } | ||
63986 | pattern 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 | } | ||
64001 | pattern 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 | } | ||
64016 | pattern 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 | } | ||
64031 | pattern 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 | } | ||
64046 | pattern 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 | } | ||
64061 | pattern 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 | } | ||
64076 | pattern 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 | } | ||
64091 | pattern 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 | } | ||
64106 | pattern 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 | } | ||
64121 | pattern 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 | } | ||
64136 | pattern 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 | } | ||
64151 | pattern 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 | } | ||
64166 | pattern 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 | } | ||
64181 | pattern 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 | } | ||
64196 | pattern 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 | } | ||
64211 | pattern 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 | } | ||
64226 | pattern 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 | } | ||
64241 | pattern 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 | } | ||