import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" ////////// // 0. Util ////////// private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) { PartialInterpretation.problem(interpretation,problem); } ///////////////////////// // 0.1 Existence ///////////////////////// private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); LogicProblem.elements(problem,element); } or { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); } private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustExist(problem,interpretation,element); } or { find interpretation(problem,interpretation); neg find elementCloseWorld(element); PartialInterpretation.openWorldElements(interpretation,element); } private pattern elementCloseWorld(element:DefinedElement) { PartialInterpretation.openWorldElements(i,element); PartialInterpretation.maxNewElements(i,0); } or { Scope.targetTypeInterpretation(scope,interpretation); PartialTypeInterpratation.elements(interpretation,element); Scope.maxNewElements(scope,0); } //////////////////////// // 0.2 Equivalence //////////////////////// pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { find mayExist(problem,interpretation,a); find mayExist(problem,interpretation,b); a == b; } pattern mustEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) { find mustExist(problem,interpretation,a); find mustExist(problem,interpretation,b); a == b; } //////////////////////// // 0.3 Required Patterns by TypeIndexer //////////////////////// private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); LogicProblem.types(problem,type); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); } private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) { find interpretation(problem,interpretation); LogicProblem.types(problem,type); TypeDefinition.elements(type,element); } or { find interpretation(problem,interpretation); find typeInterpretation(problem,interpretation,type,typeInterpretation); PartialComplexTypeInterpretation.elements(typeInterpretation,element); } private pattern isPrimitive(element: PrimitiveElement) { PrimitiveElement(element); } ////////// // 1. Problem-Specific Base Indexers ////////// // 1.1 Type Indexers ////////// // 1.1.1 primitive Type Indexers ////////// ////////// // 1.1.2 domain-specific Type Indexers ////////// /** * An element must be an instance of type "ConstellationMission class". */ private pattern mustInstanceOfConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"ConstellationMission class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"ConstellationMission class"); } /** * An element may be an instance of type "ConstellationMission class". */ private pattern mayInstanceOfConstellationMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewConstellationMission_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewConstellationMission_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfConstellationMission_class(problem,interpretation,element); } /** * An element must be an instance of type "InterferometryMission class". */ private pattern mustInstanceOfInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"InterferometryMission class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"InterferometryMission class"); } /** * An element may be an instance of type "InterferometryMission class". */ private pattern mayInstanceOfInterferometryMission_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewInterferometryMission_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewInterferometryMission_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfInterferometryMission_class(problem,interpretation,element); } /** * An element must be an instance of type "CommunicatingElement class". */ private pattern mustInstanceOfCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CommunicatingElement class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CommunicatingElement class"); } /** * An element may be an instance of type "CommunicatingElement class". */ private pattern mayInstanceOfCommunicatingElement_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewCommunicatingElement_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewCommunicatingElement_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); } /** * An element must be an instance of type "GroundStationNetwork class". */ private pattern mustInstanceOfGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"GroundStationNetwork class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"GroundStationNetwork class"); } /** * An element may be an instance of type "GroundStationNetwork class". */ private pattern mayInstanceOfGroundStationNetwork_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewGroundStationNetwork_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); neg find scopeDisallowsNewGroundStationNetwork_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); } /** * An element must be an instance of type "Spacecraft class". */ private pattern mustInstanceOfSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"Spacecraft class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"Spacecraft class"); } /** * An element may be an instance of type "Spacecraft class". */ private pattern mayInstanceOfSpacecraft_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewSpacecraft_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewSpacecraft_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfSpacecraft_class(problem,interpretation,element); } /** * An element must be an instance of type "CommSubsystem class". */ private pattern mustInstanceOfCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CommSubsystem class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CommSubsystem class"); } /** * An element may be an instance of type "CommSubsystem class". */ private pattern mayInstanceOfCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCommSubsystem_class(problem,interpretation,element); } /** * An element must be an instance of type "Payload class". */ private pattern mustInstanceOfPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"Payload class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewPayload_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"Payload class"); } /** * An element may be an instance of type "Payload class". */ private pattern mayInstanceOfPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewPayload_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewPayload_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfPayload_class(problem,interpretation,element); } /** * An element must be an instance of type "InterferometryPayload class". */ private pattern mustInstanceOfInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"InterferometryPayload class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"InterferometryPayload class"); } /** * An element may be an instance of type "InterferometryPayload class". */ private pattern mayInstanceOfInterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewInterferometryPayload_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewInterferometryPayload_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfInterferometryPayload_class(problem,interpretation,element); } /** * An element must be an instance of type "CubeSat3U class". */ private pattern mustInstanceOfCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CubeSat3U class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CubeSat3U class"); } /** * An element may be an instance of type "CubeSat3U class". */ private pattern mayInstanceOfCubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCubeSat3U_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCubeSat3U_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCubeSat3U_class(problem,interpretation,element); } /** * An element must be an instance of type "CubeSat6U class". */ private pattern mustInstanceOfCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CubeSat6U class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CubeSat6U class"); } /** * An element may be an instance of type "CubeSat6U class". */ private pattern mayInstanceOfCubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCubeSat6U_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCubeSat6U_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCubeSat6U_class(problem,interpretation,element); } /** * An element must be an instance of type "SmallSat class". */ private pattern mustInstanceOfSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"SmallSat class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"SmallSat class"); } /** * An element may be an instance of type "SmallSat class". */ private pattern mayInstanceOfSmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewSmallSat_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewSmallSat_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfSmallSat_class(problem,interpretation,element); } /** * An element must be an instance of type "CubeSat class". */ private pattern mustInstanceOfCubeSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CubeSat class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCubeSat_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CubeSat class"); } /** * An element may be an instance of type "CubeSat class". */ private pattern mayInstanceOfCubeSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCubeSat_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCubeSat_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCubeSat_class(problem,interpretation,element); } /** * An element must be an instance of type "UHFCommSubsystem class". */ private pattern mustInstanceOfUHFCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"UHFCommSubsystem class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewUHFCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"UHFCommSubsystem class"); } /** * An element may be an instance of type "UHFCommSubsystem class". */ private pattern mayInstanceOfUHFCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewUHFCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewUHFCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); } /** * An element must be an instance of type "XCommSubsystem class". */ private pattern mustInstanceOfXCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"XCommSubsystem class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewXCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"XCommSubsystem class"); } /** * An element may be an instance of type "XCommSubsystem class". */ private pattern mayInstanceOfXCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewXCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewXCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); } /** * An element must be an instance of type "KaCommSubsystem class". */ private pattern mustInstanceOfKaCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"KaCommSubsystem class"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewKaCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"KaCommSubsystem class"); } /** * An element may be an instance of type "KaCommSubsystem class". */ private pattern mayInstanceOfKaCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewKaCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewKaCommSubsystem_class(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); } /** * An element must be an instance of type "ConstellationMission class DefinedPart". */ private pattern mustInstanceOfConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"ConstellationMission class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"ConstellationMission class DefinedPart"); } /** * An element may be an instance of type "ConstellationMission class DefinedPart". */ private pattern mayInstanceOfConstellationMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfConstellationMission_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "ConstellationMission class UndefinedPart". */ private pattern mustInstanceOfConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"ConstellationMission class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"ConstellationMission class UndefinedPart"); } /** * An element may be an instance of type "ConstellationMission class UndefinedPart". */ private pattern mayInstanceOfConstellationMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewConstellationMission_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfInterferometryMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewConstellationMission_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "InterferometryMission class DefinedPart". */ private pattern mustInstanceOfInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"InterferometryMission class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"InterferometryMission class DefinedPart"); } /** * An element may be an instance of type "InterferometryMission class DefinedPart". */ private pattern mayInstanceOfInterferometryMission_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfInterferometryMission_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "InterferometryMission class UndefinedPart". */ private pattern mustInstanceOfInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"InterferometryMission class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"InterferometryMission class UndefinedPart"); } /** * An element may be an instance of type "InterferometryMission class UndefinedPart". */ private pattern mayInstanceOfInterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewInterferometryMission_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "CommunicatingElement class DefinedPart". */ private pattern mustInstanceOfCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CommunicatingElement class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CommunicatingElement class DefinedPart"); } /** * An element may be an instance of type "CommunicatingElement class DefinedPart". */ private pattern mayInstanceOfCommunicatingElement_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfCommunicatingElement_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "CommunicatingElement class UndefinedPart". */ private pattern mustInstanceOfCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CommunicatingElement class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CommunicatingElement class UndefinedPart"); } /** * An element may be an instance of type "CommunicatingElement class UndefinedPart". */ private pattern mayInstanceOfCommunicatingElement_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfSpacecraft_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfSpacecraft_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewCommunicatingElement_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "GroundStationNetwork class DefinedPart". */ private pattern mustInstanceOfGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"GroundStationNetwork class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"GroundStationNetwork class DefinedPart"); } /** * An element may be an instance of type "GroundStationNetwork class DefinedPart". */ private pattern mayInstanceOfGroundStationNetwork_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfGroundStationNetwork_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "GroundStationNetwork class UndefinedPart". */ private pattern mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"GroundStationNetwork class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"GroundStationNetwork class UndefinedPart"); } /** * An element may be an instance of type "GroundStationNetwork class UndefinedPart". */ private pattern mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfSpacecraft_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfSpacecraft_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewGroundStationNetwork_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "CommSubsystem class DefinedPart". */ private pattern mustInstanceOfCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CommSubsystem class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CommSubsystem class DefinedPart"); } /** * An element may be an instance of type "CommSubsystem class DefinedPart". */ private pattern mayInstanceOfCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfCommSubsystem_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "CommSubsystem class UndefinedPart". */ private pattern mustInstanceOfCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"CommSubsystem class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"CommSubsystem class UndefinedPart"); } /** * An element may be an instance of type "CommSubsystem class UndefinedPart". */ private pattern mayInstanceOfCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewCommSubsystem_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "XCommSubsystem class DefinedPart". */ private pattern mustInstanceOfXCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"XCommSubsystem class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewXCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"XCommSubsystem class DefinedPart"); } /** * An element may be an instance of type "XCommSubsystem class DefinedPart". */ private pattern mayInstanceOfXCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfXCommSubsystem_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "XCommSubsystem class UndefinedPart". */ private pattern mustInstanceOfXCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"XCommSubsystem class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewXCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"XCommSubsystem class UndefinedPart"); } /** * An element may be an instance of type "XCommSubsystem class UndefinedPart". */ private pattern mayInstanceOfXCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewXCommSubsystem_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find scopeDisallowsNewXCommSubsystem_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfXCommSubsystem_class_UndefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "KaCommSubsystem class DefinedPart". */ private pattern mustInstanceOfKaCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"KaCommSubsystem class DefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewKaCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"KaCommSubsystem class DefinedPart"); } /** * An element may be an instance of type "KaCommSubsystem class DefinedPart". */ private pattern mayInstanceOfKaCommSubsystem_class_DefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find mustInstanceOfKaCommSubsystem_class_DefinedPart(problem,interpretation,element); } /** * An element must be an instance of type "KaCommSubsystem class UndefinedPart". */ private pattern mustInstanceOfKaCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { Type.name(type,"KaCommSubsystem class UndefinedPart"); find directInstanceOf(problem,interpretation,element,type); } private pattern scopeDisallowsNewKaCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); PartialInterpretation.scopes(interpretation,scope); Scope.targetTypeInterpretation(scope,typeInterpretation); Scope.maxNewElements(scope,0); PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type); Type.name(type,"KaCommSubsystem class UndefinedPart"); } /** * An element may be an instance of type "KaCommSubsystem class UndefinedPart". */ private pattern mayInstanceOfKaCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewKaCommSubsystem_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find interpretation(problem,interpretation); PartialInterpretation.openWorldElements(interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); neg find scopeDisallowsNewKaCommSubsystem_class_UndefinedPart(problem, interpretation); neg find isPrimitive(element); } or { find mustInstanceOfKaCommSubsystem_class_UndefinedPart(problem,interpretation,element); } ////////// // 1.2 Relation Declaration Indexers ////////// /** * Matcher for detecting tuples t where []groundStationNetwork reference ConstellationMission(source,target) */ private pattern mustInRelationgroundStationNetwork_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"groundStationNetwork reference ConstellationMission"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** * Matcher for detecting tuples t where <>groundStationNetwork reference ConstellationMission(source,target) */ private pattern mayInRelationgroundStationNetwork_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); // The two endpoint of the link have to exist find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency find mayInstanceOfConstellationMission_class(problem,interpretation,source); find mayInstanceOfGroundStationNetwork_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. numberOfExistingReferences == count find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []spacecraft reference ConstellationMission(source,target) */ private pattern mustInRelationspacecraft_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"spacecraft reference ConstellationMission"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** * Matcher for detecting tuples t where <>spacecraft reference ConstellationMission(source,target) */ private pattern mayInRelationspacecraft_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); // The two endpoint of the link have to exist find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency find mayInstanceOfConstellationMission_class(problem,interpretation,source); find mayInstanceOfSpacecraft_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. numberOfExistingReferences == count find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,_); check(numberOfExistingReferences < 50); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []commSubsystem reference CommunicatingElement(source,target) */ private pattern mustInRelationcommSubsystem_reference_CommunicatingElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"commSubsystem reference CommunicatingElement"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** * Matcher for detecting tuples t where <>commSubsystem reference CommunicatingElement(source,target) */ private pattern mayInRelationcommSubsystem_reference_CommunicatingElement( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); // The two endpoint of the link have to exist find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency find mayInstanceOfCommunicatingElement_class(problem,interpretation,source); find mayInstanceOfCommSubsystem_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. numberOfExistingReferences == count find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,_); check(numberOfExistingReferences < 2); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []payload reference Spacecraft(source,target) */ private pattern mustInRelationpayload_reference_Spacecraft( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"payload reference Spacecraft"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** * Matcher for detecting tuples t where <>payload reference Spacecraft(source,target) */ private pattern mayInRelationpayload_reference_Spacecraft( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); // The two endpoint of the link have to exist find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency find mayInstanceOfSpacecraft_class(problem,interpretation,source); find mayInstanceOfPayload_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. numberOfExistingReferences == count find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,_); check(numberOfExistingReferences < 1); // The reference is containment, then a new reference cannot be create if: // 1. Multiple parents neg find mustContains4(problem,interpretation,_,target); // 2. Circle in the containment hierarchy neg find mustTransitiveContains(source,target); } or { find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,target); } /** * Matcher for detecting tuples t where []target reference CommSubsystem(source,target) */ private pattern mustInRelationtarget_reference_CommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference CommSubsystem"); PartialRelationInterpretation.relationlinks(relationIterpretation,link); BinaryElementRelationLink.param1(link,source); BinaryElementRelationLink.param2(link,target); } /** * Matcher for detecting tuples t where <>target reference CommSubsystem(source,target) */ private pattern mayInRelationtarget_reference_CommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target:DefinedElement) { find interpretation(problem,interpretation); // The two endpoint of the link have to exist find mayExist(problem, interpretation, source); find mayExist(problem, interpretation, target); // Type consistency find mayInstanceOfCommSubsystem_class(problem,interpretation,source); find mayInstanceOfCommSubsystem_class(problem,interpretation,target); // There are "numberOfExistingReferences" currently existing instances of the reference from the source, // the upper bound of the multiplicity should be considered. numberOfExistingReferences == count find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,source,_); check(numberOfExistingReferences < 1); } or { find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,source,target); } ////////// // 1.3 Relation Definition Indexers ////////// // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries communicationLinkDoesNotStartAtContainingElement private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement( problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); // Element is exported find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem(problem,interpretation,var_Element,var_Comm1); find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem(problem,interpretation,var_Element,var_Comm2); neg find mayEquivalent(problem, interpretation, var_Comm1, var_Comm2); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement( problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find interpretation(problem,interpretation); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); // Element is exported find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem(problem,interpretation,var_Element,var_Comm1); find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem(problem,interpretation,var_Element,var_Comm2); neg find mustEquivalent(problem, interpretation, var_Comm1, var_Comm2); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement( problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); // Element is exported find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem(problem,interpretation,var_Element,var_Comm1); find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem(problem,interpretation,var_Element,var_Comm2); neg find mustEquivalent(problem, interpretation, var_Comm1, var_Comm2); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries transmittingCommSubsystem private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, var_Element, var_Comm) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm); // Element is exported // Comm is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_Comm); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_Comm,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, _var__0); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, var_Element, var_Comm) { find interpretation(problem,interpretation); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm); // Element is exported // Comm is exported find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Comm); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_Comm); find mayInRelationtarget_reference_CommSubsystem(problem,interpretation,var_Comm,var_virtual1); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, _var__0); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_transmittingCommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, var_Element, var_Comm) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm); // Element is exported // Comm is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Element,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_Comm); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_Comm); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_Comm,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, _var__0); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries notEnoughInterferometryPayloads private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); // Mission is exported find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find interpretation(problem,interpretation); find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); // Mission is exported find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); // Mission is exported find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads(problem,interpretation,var_Mission); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries atLeastTwoInterferometryPayloads private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); // Mission is exported find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1); find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2); neg find mayEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find interpretation(problem,interpretation); find mayInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); // Mission is exported find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1); find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2); neg find mustEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_atLeastTwoInterferometryPayloads( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class(problem,interpretation,var_Mission); // Mission is exported find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft1); find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload(problem,interpretation,var_Mission,var_Spacecraft2); neg find mustEquivalent(problem, interpretation, var_Spacecraft1, var_Spacecraft2); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries spacecraftWithInterferometryPayload private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Mission is exported // Spacecraft is exported find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_Spacecraft); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); find mustInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1); find mustInstanceOfPayload_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_Payload); find mustInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission, var_Spacecraft) { find interpretation(problem,interpretation); find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Mission is exported // Spacecraft is exported find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Spacecraft); find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); find mayInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1); find mayInstanceOfPayload_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_Payload); find mayInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_spacecraftWithInterferometryPayload( problem:LogicProblem, interpretation:PartialInterpretation, var_Mission, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Mission is exported // Spacecraft is exported find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_Spacecraft); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); find mustInRelationpayload_reference_Spacecraft(problem,interpretation,var_Spacecraft,var_virtual1); find mustInstanceOfPayload_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_Payload); find mustInstanceOfInterferometryPayload_class(problem,interpretation,var_Payload); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries noLinkToGroundStation private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation); find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1); find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_GroundStation); find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1); find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_Spacecraft); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation); find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1); find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Spacecraft,var_GroundStation); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries noPotentialLinkToGroundStation private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation); find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1); find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(problem,interpretation,var_Spacecraft,var_GroundStation); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_GroundStation); find mayInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1); find mayInstanceOfSpacecraft_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_Spacecraft); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(problem,interpretation,var_Spacecraft,var_GroundStation); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual0); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_GroundStation); find mustInstanceOfConstellationMission_class(problem,interpretation,var_Mission); find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,var_Mission,var_virtual1); find mustInstanceOfSpacecraft_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_Spacecraft); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed(problem,interpretation,var_Spacecraft,var_GroundStation); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries indirectLinkAllowed private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed+(var_From,var_To); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_From); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed+(var_From,var_To); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectLinkAllowed( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed+(var_From,var_To); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries linkAllowed private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(problem,interpretation,var_From); }or{ find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From); }or{ find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_To); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_From); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(problem,interpretation,var_From); }or{ find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_From); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); find mayInstanceOfCubeSat3U_class(problem,interpretation,var_From); }or{ find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_From); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); find mayInstanceOfCubeSat3U_class(problem,interpretation,var_From); find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_To); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U(problem,interpretation,var_From); }or{ find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From); }or{ find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna(problem,interpretation,var_From,var_To); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_From); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_To); } private pattern twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(var_From, var_To) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(_,_,var_From, var_To); } private pattern twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(var_From, var_To) { find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(_,_,var_From, var_To); } private pattern twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(var_From, var_To) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_linkAllowed(_,_,var_From, var_To); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries matchingAntenna private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_From); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_FromSys); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_ToSys); find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem(problem,interpretation,var_FromSys,var_ToSys); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_From); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_From); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual0); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_FromSys); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_To); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual1); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_ToSys); find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem(problem,interpretation,var_FromSys,var_ToSys); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingAntenna( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_From); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_From); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_From,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_FromSys); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_To); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_To,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_ToSys); find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem(problem,interpretation,var_FromSys,var_ToSys); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries matchingCommSubsystem private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_To); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfXCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfXCommSubsystem_class(problem,interpretation,var_To); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfKaCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfKaCommSubsystem_class(problem,interpretation,var_To); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,var_From); find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,var_To); }or{ find interpretation(problem,interpretation); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mayInstanceOfXCommSubsystem_class(problem,interpretation,var_From); find mayInstanceOfXCommSubsystem_class(problem,interpretation,var_To); }or{ find interpretation(problem,interpretation); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mayInstanceOfKaCommSubsystem_class(problem,interpretation,var_From); find mayInstanceOfKaCommSubsystem_class(problem,interpretation,var_To); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, var_From, var_To) { find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_To); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfXCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfXCommSubsystem_class(problem,interpretation,var_To); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_To); // From is exported // To is exported find mustInstanceOfKaCommSubsystem_class(problem,interpretation,var_From); find mustInstanceOfKaCommSubsystem_class(problem,interpretation,var_To); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries cubeSat3U private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); // Sat is exported find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat3U( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries cubeSat6U private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat6U( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfCubeSat6U_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfCubeSat6U_class(problem,interpretation,var_Sat); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat6U( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mayInstanceOfCubeSat6U_class(problem,interpretation,var_Sat); // Sat is exported find mayInstanceOfCubeSat6U_class(problem,interpretation,var_Sat); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSat6U( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfCubeSat6U_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfCubeSat6U_class(problem,interpretation,var_Sat); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries communicationLoop private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop( problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); // Element is exported find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop( problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find interpretation(problem,interpretation); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); // Element is exported find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop( problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Element); // Element is exported find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink(problem,interpretation,var_Element,var_Element); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries indirectCommunicationLink private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Source, var_Target) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); // Source is exported // Target is exported find twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Source, var_Target) { find interpretation(problem,interpretation); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); // Source is exported // Target is exported find twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_indirectCommunicationLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Source, var_Target) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); // Source is exported // Target is exported find twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink+(var_Source,var_Target); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries directCommunicationLink private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Source, var_Target) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); // Source is exported // Target is exported find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_TargetSubsystem); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_SourceSubsystem); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual2); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2); find mustEquivalent(problem, interpretation, var_virtual2, var_TargetSubsystem); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Source, var_Target) { find interpretation(problem,interpretation); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); // Source is exported // Target is exported find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); find mayInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual0); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_TargetSubsystem); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual1); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_SourceSubsystem); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual2); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2); find mayEquivalent(problem, interpretation, var_virtual2, var_TargetSubsystem); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Source, var_Target) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); // Source is exported // Target is exported find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_TargetSubsystem); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Source); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Source,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_SourceSubsystem); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual2); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2); find mustEquivalent(problem, interpretation, var_virtual2, var_TargetSubsystem); } private pattern twoParam_mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target); } private pattern twoParam_mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) { find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target); } private pattern twoParam_currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(var_Source, var_Target) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_directCommunicationLink(_,_,var_Source, var_Target); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries incompatibleSourceAndTargetBand private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand( problem:LogicProblem, interpretation:PartialInterpretation, var_SourceSubsystem) { find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); // SourceSubsystem is exported find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_TargetSubsystem); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem(problem,interpretation,var_SourceSubsystem,var_TargetSubsystem); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand( problem:LogicProblem, interpretation:PartialInterpretation, var_SourceSubsystem) { find interpretation(problem,interpretation); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); // SourceSubsystem is exported find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); find mayInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual0); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_TargetSubsystem); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem(problem,interpretation,var_SourceSubsystem,var_TargetSubsystem); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand( problem:LogicProblem, interpretation:PartialInterpretation, var_SourceSubsystem) { find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); // SourceSubsystem is exported find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceSubsystem); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceSubsystem,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_TargetSubsystem); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_matchingCommSubsystem(problem,interpretation,var_SourceSubsystem,var_TargetSubsystem); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries threeUCubeSatWithNonUhfCrossLink private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_SourceComm); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceComm); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceComm,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_TargetComm); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual2); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2); find mustEquivalent(problem, interpretation, var_virtual2, var_TargetComm); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mayInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); // Sat is exported find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_SourceComm); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_SourceComm); find mayInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceComm,var_virtual1); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mayEquivalent(problem, interpretation, var_virtual1, var_TargetComm); find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual2); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2); find mayEquivalent(problem, interpretation, var_virtual2, var_TargetComm); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfCubeSat3U_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Sat); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Sat,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_SourceComm); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf(problem,interpretation,var_SourceComm); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_SourceComm); find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,var_SourceComm,var_virtual1); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual1); find mustEquivalent(problem, interpretation, var_virtual1, var_TargetComm); find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Target); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Target,var_virtual2); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual2); find mustEquivalent(problem, interpretation, var_virtual2, var_TargetComm); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork(problem,interpretation,var_Target); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries commSubsystemBandUhf private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf( problem:LogicProblem, interpretation:PartialInterpretation, var_Comm) { find interpretation(problem,interpretation); find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_Comm); // Comm is exported find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_Comm); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf( problem:LogicProblem, interpretation:PartialInterpretation, var_Comm) { find interpretation(problem,interpretation); find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,var_Comm); // Comm is exported find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,var_Comm); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_commSubsystemBandUhf( problem:LogicProblem, interpretation:PartialInterpretation, var_Comm) { find interpretation(problem,interpretation); find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_Comm); // Comm is exported find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,var_Comm); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries groundStationNetwork private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork( problem:LogicProblem, interpretation:PartialInterpretation, var_Network) { find interpretation(problem,interpretation); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network); // Network is exported find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork( problem:LogicProblem, interpretation:PartialInterpretation, var_Network) { find interpretation(problem,interpretation); find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network); // Network is exported find mayInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_groundStationNetwork( problem:LogicProblem, interpretation:PartialInterpretation, var_Network) { find interpretation(problem,interpretation); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network); // Network is exported find mustInstanceOfGroundStationNetwork_class(problem,interpretation,var_Network); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries cubeSatWithKaAntenna private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_Comm); find mustInstanceOfKaCommSubsystem_class(problem,interpretation,var_Comm); neg find mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mayInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mayInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual0); find mayInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mayEquivalent(problem, interpretation, var_virtual0, var_Comm); find mayInstanceOfKaCommSubsystem_class(problem,interpretation,var_Comm); neg find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna( problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,var_Spacecraft); // Spacecraft is exported find mustInstanceOfCommunicatingElement_class(problem,interpretation,var_Spacecraft); find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,var_Spacecraft,var_virtual0); find mustInstanceOfCommSubsystem_class(problem,interpretation,var_virtual0); find mustEquivalent(problem, interpretation, var_virtual0, var_Comm); find mustInstanceOfKaCommSubsystem_class(problem,interpretation,var_Comm); neg find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat(problem,interpretation,var_Spacecraft); } // Must, May and Current queries for pattern hu bme mit inf dslreasoner domains satellite queries smallSat private pattern mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat); } private pattern mayInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mayInstanceOfSmallSat_class(problem,interpretation,var_Sat); // Sat is exported find mayInstanceOfSmallSat_class(problem,interpretation,var_Sat); } private pattern currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_smallSat( problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find interpretation(problem,interpretation); find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat); // Sat is exported find mustInstanceOfSmallSat_class(problem,interpretation,var_Sat); } ////////// // 1.4 Containment Indexer ////////// private pattern mustContains2(source: DefinedElement, target: DefinedElement) { find mustContains4(_,_,source,target); } private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation, source: DefinedElement, target: DefinedElement) { find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,source,target); }or { find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,source,target); }or { find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,source,target); }or { find mustInRelationpayload_reference_Spacecraft(problem,interpretation,source,target); } private pattern mustTransitiveContains(source,target) { find mustContains2+(source,target); } ////////// // 2. Invalidation Indexers ////////// // 2.1 Invalidated by WF Queries ////////// pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem,interpretation,var_Element); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem,interpretation,var_Mission); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem,interpretation,var_Spacecraft); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem,interpretation,var_Spacecraft); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem,interpretation,var_Element); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem:LogicProblem, interpretation:PartialInterpretation, var_SourceSubsystem) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem,interpretation,var_SourceSubsystem); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem,interpretation,var_Sat); } pattern invalidatedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find mustInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem,interpretation,var_Spacecraft); } ////////// // 3. Unfinishedness Indexers ////////// // 3.1 Unfinishedness Measured by Multiplicity ////////// pattern unfinishedLowerMultiplicity_groundStationNetwork_reference_ConstellationMission(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"groundStationNetwork reference ConstellationMission"); find mustInstanceOfConstellationMission_class(problem,interpretation,object); numberOfExistingReferences == count find mustInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,object,_); check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } pattern unfinishedLowerMultiplicity_spacecraft_reference_ConstellationMission(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"spacecraft reference ConstellationMission"); find mustInstanceOfConstellationMission_class(problem,interpretation,object); numberOfExistingReferences == count find mustInRelationspacecraft_reference_ConstellationMission(problem,interpretation,object,_); check(numberOfExistingReferences < 2); missingMultiplicity == eval(2-numberOfExistingReferences); } pattern unfinishedLowerMultiplicity_commSubsystem_reference_CommunicatingElement(problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, object:DefinedElement,missingMultiplicity) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"commSubsystem reference CommunicatingElement"); find mustInstanceOfCommunicatingElement_class(problem,interpretation,object); numberOfExistingReferences == count find mustInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,object,_); check(numberOfExistingReferences < 1); missingMultiplicity == eval(1-numberOfExistingReferences); } ////////// // 3.2 Unfinishedness Measured by WF Queries ////////// pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLinkDoesNotStartAtContainingElement(problem,interpretation,var_Element); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem:LogicProblem, interpretation:PartialInterpretation, var_Mission) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_notEnoughInterferometryPayloads(problem,interpretation,var_Mission); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noLinkToGroundStation(problem,interpretation,var_Spacecraft); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_noPotentialLinkToGroundStation(problem,interpretation,var_Spacecraft); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem:LogicProblem, interpretation:PartialInterpretation, var_Element) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_communicationLoop(problem,interpretation,var_Element); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem:LogicProblem, interpretation:PartialInterpretation, var_SourceSubsystem) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_incompatibleSourceAndTargetBand(problem,interpretation,var_SourceSubsystem); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem:LogicProblem, interpretation:PartialInterpretation, var_Sat) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_threeUCubeSatWithNonUhfCrossLink(problem,interpretation,var_Sat); } pattern unfinishedBy_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem:LogicProblem, interpretation:PartialInterpretation, var_Spacecraft) { find currentInRelation_pattern_hu_bme_mit_inf_dslreasoner_domains_satellite_queries_cubeSatWithKaAntenna(problem,interpretation,var_Spacecraft); } ////////// // 4. Refinement Indexers ////////// // 4.1 Object constructors ////////// private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation) { find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfConstellationMission_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfInterferometryPayload_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfGroundStationNetwork_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfPayload_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCubeSat6U_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfXCommSubsystem_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCubeSat3U_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfKaCommSubsystem_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfSpacecraft_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfSmallSat_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCubeSat_class(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfConstellationMission_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfConstellationMission_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommunicatingElement_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfGroundStationNetwork_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfCommSubsystem_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfXCommSubsystem_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfXCommSubsystem_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfKaCommSubsystem_class_DefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); }or{ find interpretation(problem,interpretation); find mustInstanceOfKaCommSubsystem_class_UndefinedPart(problem,interpretation,root); find mustExist(problem, interpretation, root); } pattern createObject_InterferometryPayload_class_by_payload_reference_Spacecraft( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryPayload class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"payload reference Spacecraft"); find mustInstanceOfSpacecraft_class(problem,interpretation,container); find mayInstanceOfInterferometryPayload_class(problem,interpretation,newObject); find mayInRelationpayload_reference_Spacecraft(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_InterferometryPayload_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryPayload class"); find mayInstanceOfInterferometryPayload_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_CubeSat6U_class_by_spacecraft_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat6U class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission"); find mustInstanceOfConstellationMission_class(problem,interpretation,container); find mayInstanceOfCubeSat6U_class(problem,interpretation,newObject); find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_CubeSat6U_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat6U class"); find mayInstanceOfCubeSat6U_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_GroundStationNetwork_class_UndefinedPart_by_groundStationNetwork_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"GroundStationNetwork class UndefinedPart"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"groundStationNetwork reference ConstellationMission"); find mustInstanceOfConstellationMission_class(problem,interpretation,container); find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,newObject); find mayInRelationgroundStationNetwork_reference_ConstellationMission(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_GroundStationNetwork_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"GroundStationNetwork class UndefinedPart"); find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_UHFCommSubsystem_class_by_commSubsystem_reference_CommunicatingElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"UHFCommSubsystem class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"commSubsystem reference CommunicatingElement"); find mustInstanceOfCommunicatingElement_class(problem,interpretation,container); find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,newObject); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_UHFCommSubsystem_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"UHFCommSubsystem class"); find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_SmallSat_class_by_spacecraft_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"SmallSat class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission"); find mustInstanceOfConstellationMission_class(problem,interpretation,container); find mayInstanceOfSmallSat_class(problem,interpretation,newObject); find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_SmallSat_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"SmallSat class"); find mayInstanceOfSmallSat_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_KaCommSubsystem_class_UndefinedPart_by_commSubsystem_reference_CommunicatingElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"KaCommSubsystem class UndefinedPart"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"commSubsystem reference CommunicatingElement"); find mustInstanceOfCommunicatingElement_class(problem,interpretation,container); find mayInstanceOfKaCommSubsystem_class_UndefinedPart(problem,interpretation,newObject); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_KaCommSubsystem_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"KaCommSubsystem class UndefinedPart"); find mayInstanceOfKaCommSubsystem_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_CubeSat3U_class_by_spacecraft_reference_ConstellationMission( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat3U class"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"spacecraft reference ConstellationMission"); find mustInstanceOfConstellationMission_class(problem,interpretation,container); find mayInstanceOfCubeSat3U_class(problem,interpretation,newObject); find mayInRelationspacecraft_reference_ConstellationMission(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_CubeSat3U_class( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"CubeSat3U class"); find mayInstanceOfCubeSat3U_class(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_XCommSubsystem_class_UndefinedPart_by_commSubsystem_reference_CommunicatingElement( problem:LogicProblem, interpretation:PartialInterpretation, relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation, container:DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"XCommSubsystem class UndefinedPart"); PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation); PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"commSubsystem reference CommunicatingElement"); find mustInstanceOfCommunicatingElement_class(problem,interpretation,container); find mayInstanceOfXCommSubsystem_class_UndefinedPart(problem,interpretation,newObject); find mayInRelationcommSubsystem_reference_CommunicatingElement(problem,interpretation,container,newObject); find mustExist(problem, interpretation, container); neg find mustExist(problem, interpretation, newObject); } pattern createObject_XCommSubsystem_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"XCommSubsystem class UndefinedPart"); find mayInstanceOfXCommSubsystem_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } pattern createObject_InterferometryMission_class_UndefinedPart( problem:LogicProblem, interpretation:PartialInterpretation, typeInterpretation:PartialComplexTypeInterpretation) { find interpretation(problem,interpretation); neg find hasElementInContainment(problem,interpretation); PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation); PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"InterferometryMission class UndefinedPart"); find mayInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,newObject); find mayExist(problem, interpretation, newObject); neg find mustExist(problem, interpretation, newObject); } ////////// // 4.2 Type refinement ////////// pattern refineTypeTo_InterferometryPayload_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInterferometryPayload_class(problem,interpretation,element); neg find mustInstanceOfInterferometryPayload_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); } pattern refineTypeTo_CubeSat6U_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); } pattern refineTypeTo_GroundStationNetwork_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfSpacecraft_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); } pattern refineTypeTo_UHFCommSubsystem_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); } pattern refineTypeTo_SmallSat_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfCubeSat_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); } pattern refineTypeTo_KaCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfKaCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class(problem,interpretation,element); } pattern refineTypeTo_CubeSat3U_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCubeSat6U_class(problem,interpretation,element); neg find mustInstanceOfSmallSat_class(problem,interpretation,element); neg find mustInstanceOfGroundStationNetwork_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfCubeSat3U_class(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); } pattern refineTypeTo_XCommSubsystem_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfXCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfConstellationMission_class(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfUHFCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfKaCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfXCommSubsystem_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); } pattern refineTypeTo_InterferometryMission_class_UndefinedPart(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.newElements(interpretation,element); find mayInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfCommunicatingElement_class(problem,interpretation,element); neg find mustInstanceOfCommSubsystem_class(problem,interpretation,element); neg find mustInstanceOfInterferometryMission_class_UndefinedPart(problem,interpretation,element); neg find mustInstanceOfPayload_class(problem,interpretation,element); } ////////// // 4.3 Relation refinement ////////// pattern refineRelation_target_reference_CommSubsystem( problem:LogicProblem, interpretation:PartialInterpretation, relationIterpretation:PartialRelationInterpretation, from: DefinedElement, to: DefinedElement) { find interpretation(problem,interpretation); PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation); PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"target reference CommSubsystem"); find mustExist(problem, interpretation, from); find mustExist(problem, interpretation, to); find mustInstanceOfCommSubsystem_class(problem,interpretation,from); find mustInstanceOfCommSubsystem_class(problem,interpretation,to); find mayInRelationtarget_reference_CommSubsystem(problem,interpretation,from,to); neg find mustInRelationtarget_reference_CommSubsystem(problem,interpretation,from,to); }