Implicit specialization audit¶
Every implied generalization this implementation adds — a base type a definition
kind specializes, a base feature a usage kind subsets, the owner feature a nested
usage subsets by its role, a role redefinition (entry, render, …) — audited
row by row against the two normative tables and the pilot's map.
Sources:
- KerML 1.1 Beta 2 §8.4 semantic library constraints (
check…Specialization,check…Redefinition): 67 constraints, read frombuild/spec-docs/kerml.txt(scripts/download-spec-examples.sh; line numbers arepdftotext -layoutlines). - SysML v2 1.1 Beta 2 §8.4 implied specialization constraints: 123 constraints,
build/spec-docs/sysml.txt. - The pilot's
org.omg.sysml.util.ImplicitGeneralizationMapat commit38665073bbf02849bd309b106eba79cbb3a1ee1dof Systems-Modeling/SysML-v2-Pilot-Implementation: 232put(metaclass, role, target)entries, read only. - Ours:
internal/semantic/semantics/implicit.go(kind bases),nested.go(nested role subsettings),roles.go(role redefinitions),connector.go(end redefinitions andparticipant),crossing.go,metadata.go,model.go(DirectSupertypesassembles them).file:lineis the literal of the library name in the current tree.
Verdicts describe the tree before this change: match — ours implies what the clause requires; missing — the clause's general is not implied (a note says whether this change adds it, or why it cannot be represented, with a reproducer); wrong — ours implied a different or extra general (all fixed in this change); spec-only — the clause has no pilot map entry (marked on the verdict); pilot-only — a pilot entry no clause requires (recorded, not copied). Where the pilot and the spec differ, the spec is implemented and the difference noted.
Counts — KerML: {'missing': 28, 'match': 36, 'wrong': 3}; SysML: {'match': 82, 'missing': 30, 'wrong': 11}; pilot-only entries: 17.
TestImpliedSpecializationAuditRows (internal/semantic/semantics/implicit_audit_test.go)
proves every row this change fixes: the implied general is present and a member it
supplies resolves from the usage.
KerML 1.1 Beta 2 §8.4 semantic library constraints¶
| Metaclass | Role / context | Spec clause (constraint, pdftotext line) and library target | Pilot entry (ImplicitGeneralizationMap) |
Ours (file:line) | Verdict | Note |
|---|---|---|---|---|---|---|
Multiplicity |
base | checkMultiplicitySpecialization (l. 9305)Base::naturals |
Multiplicity base |
— | missing | multiplicities are not features in this implementation (no symbol to carry a general); reproducer: feature f[2] → no Base::naturals general |
Type |
base | checkTypeSpecialization (l. 9662)Base::Anything |
Type base |
implicit.go:14 Base::Anything |
match | implicit.go implicitKerMLBases["type"] |
Feature |
crossing | checkFeatureCrossingSpecialization (l. 10763)— |
— | crossing.go implicitCrossFeatureGenerals |
match (spec-only) | crossing.go; no pilot map entry |
Feature |
dataValue | checkFeatureDataValueSpecialization (l. 10772)Base::dataValues |
Feature dataValue |
implicit.go:22 Base::dataValues |
match | |
Feature |
end | checkFeatureEndRedefinition (l. 10780)— |
— | connector.go implicitEndRedefinitions |
match (spec-only) | positional end redefinition, connector.go implicitEndRedefinitions; no pilot map entry |
Feature |
end | checkFeatureEndSpecialization (l. 10798)Links::Link::participant |
Feature participant |
connector.go:931 Links::Link::participant |
missing | fixed here: an end of an association or connector that no end redefinition places now subsets Links::Link::participant (connector.go implicitEndParticipant); binary ends reach it through BinaryLink::source/target |
Feature |
flowFeature | checkFeatureFlowFeatureRedefinition (l. 10816)Transfers::Transfer::source::sourceOutput, Transfers::Transfer::target::targetInput |
FlowEnd sourceOutputFlowEnd targetInput |
— | missing | flow ends are FlowEnds nodes, not features; reproducer: flow f from a.x to b.y has no end feature to redefine Transfer::source::sourceOutput (metamodel reflection in metamodel/structure_rules.go only) |
Feature |
object | checkFeatureObjectSpecialization (l. 10835)Objects::objects |
Feature object |
implicit.go:170 Objects::objects |
match | |
Feature |
occurrence | checkFeatureOccurrenceSpecialization (l. 10843)Occurrences::occurrences |
Feature occurrence |
implicit.go:44 Occurrences::occurrences |
match | |
Feature |
ownedCrossFeatureRedefinition | checkFeatureOwnedCrossFeatureRedefinitionSpecialization (l. 10851)— |
— | crossing.go implicitCrossFeatureGenerals |
match (spec-only) | crossing.go (redefined end's cross feature); no pilot map entry |
Feature |
ownedCrossFeature | checkFeatureOwnedCrossFeatureSpecialization (l. 10867)— |
— | crossing.go implicitCrossFeatureGenerals |
match (spec-only) | owned cross feature specializes its end types (crossing.go); no pilot map entry |
Feature |
parameter | checkFeatureParameterRedefinition (l. 10894)— |
— | model.go ImplicitParameterRedefinitions |
match (spec-only) | positional parameter redefinition (ImplicitParameterRedefinitions, model.go); no pilot map entry |
Feature |
portion | checkFeaturePortionSpecialization (l. 10933)Occurrences::Occurrence::portions |
Feature portion |
nested.go:652 Occurrences::Occurrence::portions |
missing | fixed here: portion feature of an Occurrence-conforming owner subsets Occurrences::Occurrence::portions (nested.go kermlFeatureNestedFQN) |
Feature |
result | checkFeatureResultRedefinition (l. 10948)— |
— | model.go ImplicitParameterRedefinitions |
match (spec-only) | result parameter redefinition (ImplicitParameterRedefinitions); no pilot map entry |
Feature |
base | checkFeatureSpecialization (l. 10968)Base::things |
Feature base |
implicit.go:766 Base::things |
match | implicit.go implicitKerMLFeatureBases["feature"] (baseUsageFQN) |
Feature |
subobject | checkFeatureSubobjectSpecialization (l. 10974)Objects::Object::subobjects |
Feature subobject |
nested.go:654 Objects::Object::subobjects |
missing | fixed here: composite struct-typed feature of an Object-conforming owner subsets Objects::Object::subobjects (nested.go kermlFeatureNestedFQN) |
Feature |
suboccurrence | checkFeatureSuboccurrenceSpecialization (l. 10992)Occurrences::Occurrence::suboccurrences |
Feature suboccurrence |
nested.go:467 Occurrences::Occurrence::suboccurrences |
missing | fixed here: composite class-typed feature of an Occurrence-conforming owner subsets Occurrences::Occurrence::suboccurrences (nested.go kermlFeatureNestedFQN) |
Feature |
valuation | checkFeatureValuationSpecialization (l. 11007)— |
— | — | missing (spec-only) | a feature value's result-binding (FeatureValue → =) is evaluated, not represented as a specialization of the value expression result; reproducer: feature f = 1 has no general for the literal's result; no pilot map entry |
DataType |
base | checkDataTypeSpecialization (l. 11638)Base::DataValue |
DataType base |
implicit.go:15 Base::DataValue |
match | implicit.go implicitKerMLBases["datatype"] |
Class |
base | checkClassSpecialization (l. 11693)Occurrences::Occurrence |
Class base |
implicit.go:16 Occurrences::Occurrence |
match | implicit.go implicitKerMLBases["class"] |
Structure |
base | checkStructureSpecialization (l. 11751)Objects::Object |
Structure base |
implicit.go:149 Objects::Object |
match | |
Association |
binary | checkAssociationBinarySpecialization (l. 11846)Links::BinaryLink |
Association binary |
connector.go:707 Links::BinaryLink |
match | |
Association |
base | checkAssociationSpecialization (l. 11854)Links::Link |
Association base |
implicit.go:20 Links::Link |
match | |
AssociationStructure |
binary | checkAssociationStructureBinarySpecialization (l. 11944)Objects::BinaryLinkObject |
AssociationStructure binary |
implicit.go:121 Objects::BinaryLinkObject |
match | |
AssociationStructure |
base | checkAssociationStructureSpecialization (l. 11952)Objects::LinkObject |
AssociationStructure base |
implicit.go:152 Objects::LinkObject |
match | |
BindingConnector |
base | checkBindingConnectorSpecialization (l. 12036)Links::selfLinks |
BindingConnector binaryBindingConnector binaryObject |
implicit.go:56 Links::selfLinks |
match | implicit.go implicitUsageBases[UsageBinding] / implicitKerMLFeatureBases["binding"] |
Connector |
binaryObject | checkConnectorBinaryObjectSpecialization (l. 12105)Objects::binaryLinkObjects |
Connector binaryObject |
— | missing | |
Connector |
binary | checkConnectorBinarySpecialization (l. 12114)Links::binaryLinks |
Connector binary |
implicit.go:128 Links::binaryLinks |
match | |
Connector |
object | checkConnectorObjectSpecialization (l. 12122)Objects::linkObjects |
Connector object |
implicit.go:174 Objects::linkObjects |
match | |
Connector |
base | checkConnectorSpecialization (l. 12130)Links::links |
Connector base |
implicit.go:19 Links::links |
match | |
Succession |
base | checkSuccessionSpecialization (l. 12238)Occurrences::happensBeforeLinks |
Succession binarySuccession binaryObject |
implicit.go:57 Occurrences::happensBeforeLinks |
match | implicit.go implicitUsageBases[UsageSuccession] / implicitKerMLFeatureBases["succession"] |
Behavior |
base | checkBehaviorSpecialization (l. 12337)Performances::Performance |
Behavior base |
implicit.go:26 Performances::Performance |
match | |
Step |
enclosedPerformance | checkStepEnclosedPerformanceSpecialization (l. 12389)Performances::Performance::enclosedPerformances |
Step enclosedPerformance |
nested.go:175 Performances::Performance::enclosedPerformances |
match | nested.go stepNestedFQN |
Step |
ownedPerformance | checkStepOwnedPerformanceSpecialization (l. 12399)Objects::Object::ownedPerformances |
Step ownedPerformance |
nested.go:174 Objects::Object::ownedPerformances |
match | nested.go stepNestedFQN |
Step |
base | checkStepSpecialization (l. 12411)Performances::performances |
Step base |
implicit.go:24 Performances::performances |
match | |
Step |
subperformance | checkStepSubperformanceSpecialization (l. 12418)Performances::Performance::subperformances |
Step subperformance |
nested.go:173 Performances::Performance::subperformances |
match | nested.go stepNestedFQN |
BooleanExpression |
base | checkBooleanExpressionSpecialization (l. 12581)Performances::booleanEvaluations |
BooleanExpression base |
implicit.go:183 Performances::booleanEvaluations |
match | |
Expression |
base | checkExpressionSpecialization (l. 12694)Performances::evaluations |
Expression base |
implicit.go:25 Performances::evaluations |
match | |
Function |
base | checkFunctionSpecialization (l. 12806)Performances::Evaluation |
Function base |
implicit.go:154 Performances::Evaluation |
match | |
Invariant |
base | checkInvariantSpecialization (l. 12870)Performances::trueEvaluations, Performances::falseEvaluations |
Invariant baseInvariant negated |
implicit.go implicitKerMLFeatureBases["inv"] |
match | inv → trueEvaluations; a negated inv false/inv not → falseEvaluations is not represented (KerML Invariant::isNegated is parsed as part of the body) |
Predicate |
base | checkPredicateSpecialization (l. 12907)Performances::BooleanEvaluation |
Predicate base |
implicit.go:155 Performances::BooleanEvaluation |
match | |
ConstructorExpression |
resultFeature | checkConstructorExpressionResultFeatureRedefinition (l. 13134)VisibilityKind::public |
— | — | missing (spec-only) | expressions are not symbols: constructor results are typed by exprtype.go, no redefinition edge; no pilot map entry |
ConstructorExpression |
result | checkConstructorExpressionResultSpecialization (l. 13150)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
ConstructorExpression |
base | checkConstructorExpressionSpecialization (l. 13157)Performances::constructorEvaluations |
ConstructorExpression base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::constructorEvaluations general to query |
FeatureChainExpression |
result | checkFeatureChainExpressionResultSpecialization (l. 13238)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
FeatureChainExpression |
sourceTarget | checkFeatureChainExpressionSourceTargetRedefinition (l. 13251)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
FeatureChainExpression |
target | checkFeatureChainExpressionTargetRedefinition (l. 13260)ControlFunctions::'.'::source::target |
FeatureChainExpression target |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::ControlFunctions::'.'::source::target general to query |
FeatureReferenceExpression |
result | checkFeatureReferenceExpressionResultSpecialization (l. 13387)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
IndexExpression |
result | checkIndexExpressionResultSpecialization (l. 13457)Collections::Collection |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
InvocationExpression |
behaviorResult | checkInvocationExpressionBehaviorResultSpecialization (l. 13596)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
InvocationExpression |
base | checkInvocationExpressionSpecialization (l. 13614)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
LiteralBoolean |
base | checkLiteralBooleanSpecialization (l. 13705)Performances::literalBooleanEvaluations |
LiteralBoolean base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::literalBooleanEvaluations general to query |
LiteralExpression |
base | checkLiteralExpressionSpecialization (l. 13742)Performances::literalEvaluations |
LiteralExpression base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::literalEvaluations general to query |
LiteralInfinity |
base | checkLiteralInfinitySpecialization (l. 13780)Performances::literalIntegerEvaluations |
LiteralInfinity base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::literalIntegerEvaluations general to query |
LiteralInteger |
base | checkLiteralIntegerSpecialization (l. 13812)Performances::literalIntegerEvaluations |
LiteralInteger base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::literalIntegerEvaluations general to query |
LiteralRational |
base | checkLiteralRationalSpecialization (l. 13848)Performances::literalRationalEvaluations |
LiteralRational base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::literalRationalEvaluations general to query |
LiteralString |
base | checkLiteralStringSpecialization (l. 13880)Performances::literalStringEvaluations |
LiteralString base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::literalStringEvaluations general to query |
MetadataAccessExpression |
base | checkMetadataAccessExpressionSpecialization (l. 13947)Performances::metadataAccessEvaluations |
MetadataAccessExpression base |
— | missing | expressions are not symbols; reproducer: the expression of attribute a = 1; has no Performances::metadataAccessEvaluations general to query |
NullExpression |
base | checkNullExpressionSpecialization (l. 14006)Performances::nullEvaluations |
NullExpression base |
valuetype.go:129 (typing only) |
missing | null is typed Base::Anything by valuetype.go:129, not given a nullEvaluations general (expressions are not symbols) |
SelectExpression |
result | checkSelectExpressionResultSpecialization (l. 14076)— |
— | — | missing (spec-only) | expressions are not symbols here (typed by exprtype.go); the result/argument redefinitions have no element to hang on; no pilot map entry |
Flow |
base | checkFlowSpecialization (l. 14198)Transfers::transfers |
Flow base |
implicit.go:187 Transfers::transfers |
wrong | fixed here: every KerML flow subsets Transfers::transfers; before, every flow subset flowTransfers and gained the SysML Flows::Message definition (model.go, removed) |
Flow |
withEnds | checkFlowWithEndsSpecialization (l. 14205)Transfers::flowTransfers |
Flow flow |
implicit.go:814 Transfers::flowTransfers |
match | flowTransfers only when the flow declares from/to ends (flowDeclaresEnds); fixed here for an end-less flow, which subsets transfers alone now |
PayloadFeature |
base | checkPayloadFeatureRedefinition (l. 14368)Transfers::Transfer::payload |
PayloadFeature payload |
— | missing | payload features are the of clause's declared usage; no Transfers::Transfer::payload redefinition edge (reflection only, metamodel/structure_rules.go) |
SuccessionFlow |
base | checkSuccessionFlowSpecialization (l. 14397)Transfers::flowTransfersBefore |
SuccessionFlow base |
implicit.go:812 Transfers::flowTransfersBefore |
wrong | fixed here: succession flow subsets Transfers::flowTransfersBefore (was flowTransfers) |
Metaclass |
base | checkMetaclassSpecialization (l. 14772)Metaobjects::Metaobject |
Metaclass base |
implicit.go:89 Metaobjects::Metaobject |
match | |
MetadataFeature |
semantic | checkMetadataFeatureSemanticSpecialization (l. 14853)Metaobjects::SemanticMetadata::baseType |
MetadataFeature baseType |
metadata.go:11 |
match | metadata.go semanticMetadataBases (SemanticMetadata::baseType) |
MetadataFeature |
base | checkMetadataFeatureSpecialization (l. 14884)Metaobjects::metaobjects |
MetadataFeature base |
implicit.go:188 Metaobjects::metaobjects |
wrong | fixed here: a KerML metadata feature subsets Metaobjects::metaobjects; before, its metaclass type routed it to Objects::objects |
SysML v2 1.1 Beta 2 §8.4 implied specialization constraints¶
| Metaclass | Role / context | Spec clause (constraint, pdftotext line) and library target | Pilot entry (ImplicitGeneralizationMap) |
Ours (file:line) | Verdict | Note |
|---|---|---|---|---|---|---|
UsageVariationDefinition |
base | checkUsageVariationDefinitionSpecialization (l. 17400)— |
— | model.go VariationPointOwning |
match (spec-only) | model.go VariationPointOwning (variant usage specializes its variation); no pilot map entry |
UsageVariationUsage |
base | checkUsageVariationUsageSpecialization (l. 17407)— |
— | model.go VariationPointOwning |
match (spec-only) | model.go VariationPointOwning; no pilot map entry |
AttributeUsage |
base | checkAttributeUsageSpecialization (l. 17825)Base::dataValues |
AttributeUsage base |
implicit.go:22 Base::dataValues |
match | |
EventOccurrenceUsage |
base | checkEventOccurrenceUsageSpecialization (l. 18033)Occurrences::Occurrence::timeEnclosedOccurrences |
EventOccurrenceUsage suboccurrence |
nested.go:262 Occurrences::Occurrence::timeEnclosedOccurrences |
missing | fixed here: event occurrence owned by an occurrence definition/usage subsets Occurrences::Occurrence::timeEnclosedOccurrences (nested.go familyNestedFQN) |
OccurrenceDefinition |
individual | checkOccurrenceDefinitionIndividualSpecialization (l. 18103)Occurrences::Life |
OccurrenceDefinition life |
implicit.go:23 Occurrences::Life |
match | implicit.go implicitDefinitionBases[DefIndividual]; the matching extra edge for individual usages (not in spec or pilot) was removed here |
OccurrenceDefinition |
multiplicity | checkOccurrenceDefinitionMultiplicitySpecialization (l. 18115)Base::zeroOrOne |
Multiplicity classifier |
— | missing | multiplicities are not features here; reproducer: individual occurrence def I; has no multiplicity element specializing Base::zeroOrOne |
OccurrenceUsage |
snapshot | checkOccurrenceUsageSnapshotSpecialization (l. 18165)Occurrences::Occurrence::snapshots, PortionKind::snapshot |
OccurrenceUsage snapshot |
nested.go:465 Occurrences::Occurrence::snapshots |
match | nested.go occurrenceNestedFQN (PortionSnapshot) |
OccurrenceUsage |
base | checkOccurrenceUsageSpecialization (l. 18178)Occurrences::occurrences |
OccurrenceUsage base |
implicit.go:44 Occurrences::occurrences |
match | |
OccurrenceUsage |
suboccurrence | checkOccurrenceUsageSuboccurrenceSpecialization (l. 18185)Occurrences::Occurrence::suboccurrences |
Feature suboccurrence |
nested.go:467 Occurrences::Occurrence::suboccurrences |
match | nested.go occurrenceNestedFQN |
OccurrenceUsage |
timeSlice | checkOccurrenceUsageTimeSliceSpecialization (l. 18200)Occurrences::Occurrence::timeSlices, PortionKind::timeslice |
OccurrenceUsage timeslice |
nested.go:463 Occurrences::Occurrence::timeSlices |
match | nested.go occurrenceNestedFQN (PortionTimeslice) |
ItemDefinition |
base | checkItemDefinitionSpecialization (l. 18338)Items::Item |
ItemDefinition base |
implicit.go:86 Items::Item |
match | |
ItemUsage |
base | checkItemUsageSpecialization (l. 18378)Items::items |
ItemUsage base |
implicit.go:43 Items::items |
match | |
ItemUsage |
subitem | checkItemUsageSubitemSpecialization (l. 18384)Items::Item::subitems |
ItemUsage subitem |
nested.go:294 Items::Item::subitems |
match | nested.go familyNestedFQN |
PartDefinition |
base | checkPartDefinitionSpecialization (l. 18457)Parts::Part |
PartDefinition base |
implicit.go:13 Parts::Part |
match | |
PartUsage |
actor | checkPartUsageActorSpecialization (l. 18495)Requirements::RequirementCheck::actors, Cases::Case::actors |
PartUsage requirementActorPartUsage caseActor |
nested.go:267 Requirements::RequirementCheck::actorsnested.go:269 Cases::Case::actors |
missing | fixed here: an actor of a requirement/viewpoint subsets Requirements::RequirementCheck::actors, of a case Cases::Case::actors (nested.go familyNestedFQN); the positional redefinition of inherited actors (roles.go) stays |
PartUsage |
base | checkPartUsageSpecialization (l. 18508)Parts::parts |
PartUsage base |
implicit.go:21 Parts::parts |
match | |
PartUsage |
stakeholder | checkPartUsageStakeholderSpecialization (l. 18515)Requirements::RequirementCheck::stakeholders |
PartUsage requirementStakeholder |
nested.go:273 Requirements::RequirementCheck::stakeholders |
missing | fixed here: a stakeholder subsets Requirements::RequirementCheck::stakeholders (nested.go familyNestedFQN) |
PartUsage |
subpart | checkPartUsageSubpartSpecialization (l. 18524)Items::Item::subparts |
PartUsage subitem |
nested.go:331 Items::Item::subparts |
match | nested.go partNestedFQN |
PortDefinition |
base | checkPortDefinitionSpecialization (l. 18772)Ports::Port |
PortDefinition base |
implicit.go:97 Ports::Port |
match | |
PortUsage |
ownedPort | checkPortUsageOwnedPortSpecialization (l. 18837)Parts::Part::ownedPorts |
PortUsage ownedPort |
nested.go:306 Parts::Part::ownedPorts |
match | nested.go familyNestedFQN |
PortUsage |
base | checkPortUsageSpecialization (l. 18852)Ports::ports |
PortUsage base |
implicit.go:58 Ports::ports |
match | |
PortUsage |
subport | checkPortUsageSubportSpecialization (l. 18859)Ports::Port::subports |
PortUsage subport |
nested.go:309 Ports::Port::subports |
match | nested.go familyNestedFQN |
ConnectionDefinition |
binary | checkConnectionDefinitionBinarySpecialization (l. 19017)Connections::BinaryConnection |
ConnectionDefinition binary |
implicit.go:427 Connections::BinaryConnection |
match | implicit.go kindBaseFQN (two owned ends) |
ConnectionUsage |
binary | checkConnectionUsageBinarySpecialization (l. 19071)Connections::binaryConnections |
ConnectionUsage binary |
implicit.go:481 Connections::binaryConnections |
match | implicit.go usageBaseFeatureFQN (two owned ends) |
ConnectionUsage |
base | checkConnectionUsageSpecialization (l. 19079)Connections::connections |
ConnectionUsage base |
implicit.go:55 Connections::connections |
match | |
InterfaceDefinition |
binary | checkInterfaceDefinitionBinarySpecialization (l. 19221)Interfaces::BinaryInterface |
InterfaceDefinition binary |
implicit.go:429 Interfaces::BinaryInterface |
match | implicit.go kindBaseFQN (two owned ends) |
InterfaceDefinition |
base | checkInterfaceDefinitionSpecialization (l. 19229)Interfaces::Interface |
InterfaceDefinition base |
implicit.go:98 Interfaces::Interface |
match | |
InterfaceUsage |
binary | checkInterfaceUsageBinarySpecialization (l. 19259)Interfaces::binaryInterfaces |
InterfaceUsage binary |
implicit.go:483 Interfaces::binaryInterfaces |
match | implicit.go usageBaseFeatureFQN (two owned ends) |
InterfaceUsage |
base | checkInterfaceUsageSpecialization (l. 19267)Interfaces::interfaces |
InterfaceUsage base |
implicit.go:59 Interfaces::interfaces |
match | |
AllocationDefinition |
base | checkAllocationDefinitionSpecialization (l. 19357)Allocations::Allocation |
AllocationDefinition baseAllocationDefinition binary |
implicit.go:99 Allocations::Allocation |
match | |
AllocationUsage |
base | checkAllocationUsageSpecialization (l. 19393)Allocations::allocations |
AllocationUsage baseAllocationUsage binary |
implicit.go:60 Allocations::allocations |
match | |
FlowDefinition |
binary | checkFlowDefinitionBinarySpecialization (l. 19472)Flows::Message |
FlowDefinition binary |
implicit.go:431 Flows::Message |
match | implicit.go kindBaseFQN (two owned ends) |
FlowDefinition |
base | checkFlowDefinitionSpecialization (l. 19480)Flows::MessageAction |
FlowDefinition base |
implicit.go:96 Flows::MessageAction |
match | |
FlowUsage |
flow | checkFlowUsageFlowSpecialization (l. 19523)Flows::flows |
FlowUsage base |
implicit.go:27 Flows::flows |
match | Flows::flows only when the flow declares from/to ends (flowDeclaresEnds); fixed here for end-less flow f : D;, which now subsets messages alone. The pilot gives every FlowUsage flows. |
FlowUsage |
base | checkFlowUsageSpecialization (l. 19531)Flows::messages |
FlowUsage message |
implicit.go:495 Flows::messages |
wrong | fixed here: every flow usage subsets Flows::messages; before, flow usages subset flows regardless of ends and gained an extra Flows::Message definition edge (model.go, removed) |
SuccessionFlowUsage |
base | checkSuccessionFlowUsageSpecialization (l. 19564)Flows::successionFlows |
SuccessionFlowUsage baseSuccessionFlowUsage message |
implicit.go:491 Flows::successionFlows |
match | implicit.go usageBaseFeatureFQN (IsSuccessionFlow) |
AcceptActionUsage |
base | checkAcceptActionUsageSpecialization (l. 19843)Actions::acceptActions |
AcceptActionUsage base |
implicit.go:32 Actions::acceptActions |
wrong | fixed here: action a accept … subsets Actions::acceptActions (implicit.go usageRoleBaseFQN); before it specialized the Actions::AcceptAction definition directly (model.go, removed). A transition's trigger accept is not a symbol (see TriggerAction row) |
AcceptActionUsage |
subaction | checkAcceptActionUsageSubactionSpecialization (l. 19855)Actions::Action::acceptSubactions |
AcceptActionUsage subaction |
nested.go:362 Actions::Action::acceptSubactions |
missing | fixed here: Actions::Action::acceptSubactions (nested.go actionKindNestedFQN) |
AcceptActionUsage |
triggerAction | checkAcceptActionUsageTriggerActionSpecialization (l. 19864)Actions::TransitionAction::accepter |
ActionUsage triggerFlowUsage trigger |
— | missing | a transition's accept trigger is a span on the TransitionMember, not a symbol; reproducer: transition first a accept S then b; has no accepter element to subset TransitionAction::accepter |
ActionDefinition |
base | checkActionDefinitionSpecialization (l. 19929)Actions::Action |
ActionDefinition base |
implicit.go:104 Actions::Action |
match | |
ActionUsage |
ownedAction | checkActionUsageOwnedActionSpecialization (l. 20015)Parts::Part::ownedActions |
ActionUsage ownedAction |
nested.go:345 Parts::Part::ownedActions |
match | nested.go actionNestedFQN |
ActionUsage |
base | checkActionUsageSpecialization (l. 20025)Actions::actions |
ActionUsage base |
implicit.go:61 Actions::actions |
match | |
ActionUsage |
stateAction | checkActionUsageStateActionRedefinition (l. 20032)States::StateAction |
StateDefinition base |
implicit.go:105 States::StateAction |
match | roles.go stateActionFQNs (entry/do/exit redefine entryAction/doAction/exitAction) |
ActionUsage |
subaction | checkActionUsageSubactionSpecialization (l. 20055)Actions::Action::subactions |
ActionUsage subaction |
nested.go:342 Actions::Action::subactions |
match | nested.go actionNestedFQN; entry/exit actions are excluded per isSubactionUsage() and fall to subperformances |
AssignmentActionUsage |
accessedFeature | checkAssignmentActionUsageAccessedFeatureRedefinition (l. 20106)Actions::AssignmentAction::target::startingAt::accessedFeature |
— | — | missing (spec-only) | as above; no pilot map entry |
AssignmentActionUsage |
referent | checkAssignmentActionUsageReferentRedefinition (l. 20118)— |
— | — | missing (spec-only) | as above; no pilot map entry |
AssignmentActionUsage |
base | checkAssignmentActionUsageSpecialization (l. 20129)Actions::assignmentActions |
AssignmentActionUsage base |
— | missing | assign x := v; is an AssignmentActionNode statement without a symbol; reproducer: action a { assign x := 1; } has no element to subset Actions::assignmentActions |
AssignmentActionUsage |
startingAt | checkAssignmentActionUsageStartingAtRedefinition (l. 20136)Actions::AssignmentAction::target::startingAt |
— | — | missing (spec-only) | as above; no pilot map entry |
AssignmentActionUsage |
subaction | checkAssignmentActionUsageSubactionSpecialization (l. 20147)Actions::Action::assignments |
AssignmentActionUsage subaction |
— | missing | as above (Actions::Action::assignments) |
ControlNode |
base | checkControlNodeSpecialization (l. 20241)Actions::Action::control, Actions::Action::controls |
— | — | match (spec-only) | reached through forks/joins/merges/decisions, which subset controls in the library (fixed here); no pilot map entry |
DecisionNode |
outgoingSuccession | checkDecisionNodeOutgoingSuccessionSpecialization (l. 20307)ControlPerformances::DecisionPerformance::outgoingHBLink |
SuccessionAsUsage decision |
— | missing | a chain subsetting (decision.outgoingHBLink) that the supertype tables cannot carry; the runtime routes on it (exec/runtime/state_route.go). Reproducer: decide d; first d then a; — the succession has no DecisionPerformance::outgoingHBLink general |
DecisionNode |
base | checkDecisionNodeSpecialization (l. 20316)Actions::Action::decisions |
DecisionNode subaction |
implicit.go:31 Actions::Action::decisions |
wrong | fixed here: decide subsets Actions::Action::decisions; before, the control nodes specialized the Actions::DecisionAction etc. definitions directly |
ForkNode |
base | checkForkNodeSpecialization (l. 20364)Actions::Action::forks |
ForkNode subaction |
implicit.go:28 Actions::Action::forks |
wrong | fixed here: Actions::Action::forks |
ForLoopActionUsage |
base | checkForLoopActionUsageSpecialization (l. 20408)Actions::forLoopActions |
ForLoopActionUsage base |
— | missing | for x in c { … } is a WhileLoopActionNode statement without a symbol (only its loop variable is one); reproducer: action a { for i in x { } } |
ForLoopActionUsage |
subaction | checkForLoopActionUsageSubactionSpecialization (l. 20415)Actions::Action::forLoops |
ForLoopActionUsage subaction |
— | missing | as above |
ForLoopActionUsage |
var | checkForLoopActionUsageVarRedefinition (l. 20428)Actions::ForLoopAction::var |
ForLoopActionUsage loopVariable |
— | missing | the loop variable is a symbol but its owning loop is not; no ForLoopAction::var redefinition |
IfActionUsage |
base | checkIfActionUsageSpecialization (l. 20506)Actions::ifThenActions, Actions::ifThenElseActions |
IfActionUsage baseIfActionUsage ifThenElse |
— | missing | if is an IfActionNode statement without a symbol; reproducer: action a { if c { } } |
IfActionUsage |
subaction | checkIfActionUsageSubactionSpecialization (l. 20518)Actions::Action::ifSubactions |
IfActionUsage subaction |
— | missing | as above |
JoinNode |
base | checkJoinNodeSpecialization (l. 20595)Actions::Action::joins |
JoinNode subaction |
implicit.go:29 Actions::Action::joins |
wrong | fixed here: Actions::Action::joins |
MergeNode |
incomingSuccession | checkMergeNodeIncomingSuccessionSpecialization (l. 20676)ControlPerformances::MergePerformance::incomingHBLink |
SuccessionAsUsage merge |
— | missing | as above (MergePerformance::incomingHBLink) |
MergeNode |
base | checkMergeNodeSpecialization (l. 20685)Actions::Action::merges |
MergeNode subaction |
implicit.go:30 Actions::Action::merges |
wrong | fixed here: Actions::Action::merges |
PerformActionUsage |
base | checkPerformActionUsageSpecialization (l. 20746)Parts::Part::performedActions |
PerformActionUsage performedAction |
nested.go:250 Parts::Part::performedActions |
match | nested.go familyNestedFQN (performedActions) |
SendActionUsage |
base | checkSendActionUsageSpecialization (l. 20808)Actions::sendActions |
SendActionUsage base |
implicit.go:33 Actions::sendActions |
wrong | fixed here: action s send … and a bare send statement subset Actions::sendActions; before they specialized the Actions::SendAction definition directly |
SendActionUsage |
subaction | checkSendActionUsageSubactionSpecialization (l. 20815)Actions::Action::sendSubactions |
SendActionUsage subaction |
nested.go:364 Actions::Action::sendSubactions |
missing | fixed here: Actions::Action::sendSubactions (nested.go actionKindNestedFQN) |
TerminateActionUsage |
base | checkTerminateActionUsageSpecialization (l. 20883)Actions::terminateActions |
TerminateActionUsage base |
implicit.go:541 Actions::terminateActions |
missing | fixed here: action stop terminate; subsets Actions::terminateActions; a bare terminate; statement has no symbol |
TerminateActionUsage |
subaction | checkTerminateActionUsageSubactionSpecialization (l. 20890)Actions::Action::terminateSubactions |
TerminateActionUsage subaction |
nested.go:366 Actions::Action::terminateSubactions |
missing | fixed here: Actions::Action::terminateSubactions |
WhileLoopActionUsage |
base | checkWhileLoopActionUsageSpecialization (l. 21056)Actions::whileLoopActions |
WhileLoopActionUsage base |
— | missing | while/loop … until is a WhileLoopActionNode statement without a symbol |
WhileLoopActionUsage |
subaction | checkWhileLoopActionUsageSubactionSpecialization (l. 21063)Actions::Action::whileLoops |
WhileLoopActionUsage subaction |
— | missing | as above |
ExhibitStateUsage |
base | checkExhibitStateUsageSpecialization (l. 21274)Parts::Part::exhibitedStates |
ExhibitStateUsage performedAction |
nested.go:254 Parts::Part::exhibitedStates |
match | nested.go familyNestedFQN (exhibitedStates) |
StateDefinition |
base | checkStateDefinitionSpecialization (l. 21412)States::StateAction |
StateDefinition base |
implicit.go:105 States::StateAction |
match | |
StateUsage |
exclusiveState | checkStateUsageExclusiveStateSpecialization (l. 21553)States::StateAction::exclusiveStates |
StateUsage exclusiveState |
nested.go:390 States::StateAction::exclusiveStates |
missing | fixed here: substates of a non-parallel state subset States::StateAction::exclusiveStates (nested.go stateNestedFQN) |
StateUsage |
ownedState | checkStateUsageOwnedStateSpecialization (l. 21567)Parts::Part::ownedStates |
StateUsage ownedAction |
nested.go:393 Parts::Part::ownedStates |
match | nested.go stateNestedFQN |
StateUsage |
base | checkStateUsageSpecialization (l. 21577)States::stateActions |
StateUsage base |
implicit.go:62 States::stateActions |
match | |
StateUsage |
substate | checkStateUsageSubstateSpecialization (l. 21584)States::StateAction::substates |
StateUsage substate |
nested.go:388 States::StateAction::substates |
match | nested.go stateNestedFQN; now only for a parallel owner, exclusiveStates (which subsets substates) otherwise |
TransitionUsage |
action | checkTransitionUsageActionSpecialization (l. 21834)Actions::Action::decisionTransitions |
TransitionUsage actionTransition |
nested.go:378 Actions::Action::decisionTransitions |
missing | fixed here: a transition owned by an action subsets Actions::Action::decisionTransitions (nested.go transitionNestedFQN) |
TransitionUsage |
payload | checkTransitionUsagePayloadSpecialization (l. 21846)— |
— | — | missing (spec-only) | the payload parameter is a symbol but the chain subsetting (trigger.payload) is not representable in the supertype tables; no pilot map entry |
TransitionUsage |
base | checkTransitionUsageSpecialization (l. 21865)Actions::transitionActions |
TransitionUsage base |
implicit.go:63 Actions::transitionActions |
match | |
TransitionUsage |
state | checkTransitionUsageStateSpecialization (l. 21872)States::StateAction::stateTransitions |
TransitionUsage stateTransition |
nested.go:375 States::StateAction::stateTransitions |
missing | fixed here: a transition owned by a state subsets States::StateAction::stateTransitions (nested.go transitionNestedFQN) |
TransitionUsage |
successionSource | checkTransitionUsageSuccessionSourceSpecialization (l. 21899)— |
— | ir/lower/state_graph.go |
match (spec-only) | the transition's succession is lowered with its source (ir/lower/state_graph.go); no library general involved; no pilot map entry |
TransitionUsage |
transitionFeature | checkTransitionUsageTransitionFeatureSpecialization (l. 21907)Actions::TransitionAction, Actions::TransitionAction::accepter, Actions::TransitionAction::guard, Actions::TransitionAction::effect |
ActionUsage triggerFlowUsage triggerActionUsage guardFlowUsage guardActionUsage effectFlowUsage effect |
— | missing | trigger (accept), guard (if) and effect (do) are parts of the TransitionMember, not symbols; reproducer: transition first a if x do b then c; — nothing subsets TransitionAction::guard/effect |
CalculationDefinition |
base | checkCalculationDefinitionSpecialization (l. 22093)Calculations::Calculation |
CalculationDefinition base |
implicit.go:106 Calculations::Calculation |
match | |
CalculationUsage |
base | checkCalculationUsageSpecialization (l. 22137)Calculations::calculations |
CalculationUsage base |
implicit.go:65 Calculations::calculations |
match | |
CalculationUsage |
subcalculation | checkCalculationUsageSubcalculationSpecialization (l. 22149)Calculations::Calculation::subcalculations |
CalculationUsage subcalculation |
nested.go:402 Calculations::Calculation::subcalculations |
match | nested.go calcNestedFQN |
AssertConstraintUsage |
base | checkAssertConstraintUsageSpecialization (l. 22241)Constraints::negatedConstraintChecks, Constraints::assertedConstraintChecks |
AssertConstraintUsage negatedAssertConstraintUsage base |
implicit.go:550 Constraints::negatedConstraintChecksimplicit.go:552 Constraints::assertedConstraintChecks |
missing | fixed here: assert constraint subsets Constraints::assertedConstraintChecks, assert not constraint negatedConstraintChecks (implicit.go usageRoleBaseFQN) |
ConstraintDefinition |
base | checkConstraintDefinitionSpecialization (l. 22300)Constraints::ConstraintCheck |
ConstraintDefinition base |
implicit.go:107 Constraints::ConstraintCheck |
match | |
ConstraintUsage |
checkedConstraint | checkConstraintUsageCheckedConstraintSpecialization (l. 22361)Items::Item::checkedConstraints |
ConstraintUsage checkedConstraint |
nested.go:431 Items::Item::checkedConstraints |
match | nested.go constraintNestedFQN |
ConstraintUsage |
requirementConstraint | checkConstraintUsageRequirementConstraintSpecialization (l. 22371)Requirements::RequirementCheck, RequirementConstraintKind::assumption, Requirements::RequirementCheck::assumptions |
ConstraintUsage assumption |
implicit.go:108 Requirements::RequirementChecknested.go:423 Requirements::RequirementCheck::assumptions |
match | nested.go requirementConstraintFQN (assumptions/constraints) |
ConstraintUsage |
base | checkConstraintUsageSpecialization (l. 22389)Constraints::constraintChecks |
ConstraintUsage base |
implicit.go:67 Constraints::constraintChecks |
match | |
ConcernDefinition |
base | checkConcernDefinitionSpecialization (l. 22665)Requirements::ConcernCheck |
ConcernDefinition base |
implicit.go:18 Requirements::ConcernCheck |
match | |
ConcernUsage |
framedConcern | checkConcernUsageFramedConcernSpecialization (l. 22699)Requirements::RequirementCheck::concerns |
ConcernUsage concern |
nested.go:277 Requirements::RequirementCheck::concerns |
wrong | fixed here: frame concern subsets Requirements::RequirementCheck::concerns; before it fell to subrequirements |
ConcernUsage |
base | checkConcernUsageSpecialization (l. 22713)Requirements::concernChecks |
ConcernUsage base |
implicit.go:51 Requirements::concernChecks |
match | |
RequirementDefinition |
base | checkRequirementDefinitionSpecialization (l. 22921)Requirements::RequirementCheck |
RequirementDefinition base |
implicit.go:108 Requirements::RequirementCheck |
match | |
RequirementUsage |
objective | checkRequirementUsageObjectiveRedefinition (l. 23088)— |
— | roles.go caseRoleRedefinitions |
match (spec-only) | roles.go caseRoleRedefinitions (positional objective); no pilot map entry |
RequirementUsage |
requirementVerification | checkRequirementUsageRequirementVerificationSpecialization (l. 23104)VerificationCases::VerificationCase::obj::requirementVerifications |
— | nested.go:281 VerificationCases::VerificationCase::obj::requirementVerifications |
wrong | fixed here: an objective's verify requirement subsets Requirements::requirementChecks and VerificationCases::VerificationCase::obj::requirementVerifications; before it had only Base::things |
RequirementUsage |
base | checkRequirementUsageSpecialization (l. 23114)Requirements::requirementChecks |
RequirementUsage base |
implicit.go:68 Requirements::requirementChecks |
match | |
RequirementUsage |
subrequirement | checkRequirementUsageSubrequirementSpecialization (l. 23121)Requirements::RequirementCheck::subrequirements |
RequirementUsage subrequirement |
nested.go:447 Requirements::RequirementCheck::subrequirements |
match | nested.go requirementNestedFQN |
SatisfyRequirementUsage |
base | checkSatisfyRequirementUsageSpecialization (l. 23273)Requirements::notSatisfiedRequirementChecks, Requirements::satisfiedRequirementChecks |
SatisfyRequirementUsage negatedSatisfyRequirementUsage base |
implicit.go:559 Requirements::notSatisfiedRequirementChecksimplicit.go:561 Requirements::satisfiedRequirementChecks |
wrong | fixed here: satisfy requirement subsets Requirements::satisfiedRequirementChecks, assert not satisfy notSatisfiedRequirementChecks; before a satisfy usage had only Base::things |
CaseDefinition |
base | checkCaseDefinitionSpecialization (l. 23508)Cases::Case |
CaseDefinition base |
implicit.go:109 Cases::Case |
match | |
CaseUsage |
base | checkCaseUsageSpecialization (l. 23614)Cases::cases |
CaseUsage base |
implicit.go:69 Cases::cases |
match | |
CaseUsage |
subcase | checkCaseUsageSubcaseSpecialization (l. 23621)Cases::Case::subcases |
CaseUsage subcase |
nested.go:411 Cases::Case::subcases |
match | nested.go caseNestedFQN |
AnalysisCaseDefinition |
base | checkAnalysisCaseDefinitionSpecialization (l. 23814)AnalysisCases::AnalysisCase |
AnalysisCaseDefinition base |
implicit.go:110 AnalysisCases::AnalysisCase |
match | |
AnalysisCaseUsage |
base | checkAnalysisCaseUsageSpecialization (l. 23861)AnalysisCases::analysisCases |
AnalysisCaseUsage base |
implicit.go:71 AnalysisCases::analysisCases |
match | |
AnalysisCaseUsage |
subAnalysisCase | checkAnalysisCaseUsageSubAnalysisCaseSpecialization (l. 23873)AnalysisCases::AnalysisCase::subAnalysisCases |
AnalysisCaseUsage subAnalysisCase |
nested.go:313 AnalysisCases::AnalysisCase::subAnalysisCases |
match | nested.go familyNestedFQN |
VerificationCase |
base | checkVerificationCaseSpecialization (l. 24062)VerificationCases::VerificationCase |
VerificationCaseDefinition base |
implicit.go:111 VerificationCases::VerificationCase |
match | spec text lists the name only; the definition row covers it |
VerificationCaseUsage |
base | checkVerificationCaseUsageSpecialization (l. 24115)VerificationCases::verificationCases |
VerificationCaseUsage base |
implicit.go:72 VerificationCases::verificationCases |
match | |
VerificationCaseUsage |
subVerificationCase | checkVerificationCaseUsageSubVerificationCaseSpecialization (l. 24122)VerificationCases::VerificationCase::subVerificationCases |
VerificationCaseUsage subVerificationCase |
nested.go:317 VerificationCases::VerificationCase::subVerificationCases |
match | nested.go familyNestedFQN |
IncludeUseCaseUsage |
base | checkIncludeUseCaseUsageSpecialization (l. 24249)UseCases::UseCase::includedUseCases |
IncludeUseCaseUsage subUseCase |
nested.go:258 UseCases::UseCase::includedUseCases |
match | nested.go familyNestedFQN (includedUseCases) |
UseCaseDefinition |
base | checkUseCaseDefinitionSpecialization (l. 24298)UseCases::UseCase |
UseCaseDefinition base |
implicit.go:112 UseCases::UseCase |
match | |
UseCaseUsage |
base | checkUseCaseUsageSpecialization (l. 24341)UseCases::useCases |
UseCaseUsage base |
implicit.go:73 UseCases::useCases |
match | |
UseCaseUsage |
subUseCase | checkUseCaseUsageSubUseCaseSpecialization (l. 24348)UseCases::UseCase::subUseCases |
UseCaseUsage subUseCase |
nested.go:321 UseCases::UseCase::subUseCases |
match | nested.go familyNestedFQN |
RenderingDefinition |
base | checkRenderingDefinitionSpecialization (l. 24702)Views::Rendering |
RenderingDefinition base |
implicit.go:17 Views::Rendering |
match | |
RenderingUsage |
base | checkRenderingUsageRedefinition (l. 24757)Views::View::viewRendering |
RenderingUsage viewRendering |
roles.go:23 Views::View::viewRendering |
match | roles.go viewRenderingFQN |
RenderingUsage |
base | checkRenderingUsageSpecialization (l. 24766)Views::renderings |
RenderingUsage base |
implicit.go:49 Views::renderings |
match | |
RenderingUsage |
subrendering | checkRenderingUsageSubrenderingSpecialization (l. 24777)Views::Rendering::subrenderings |
RenderingUsage subrendering |
nested.go:298 Views::Rendering::subrenderings |
match | nested.go familyNestedFQN |
ViewDefinition |
base | checkViewDefinitionSpecialization (l. 24827)Views::View |
ViewDefinition base |
implicit.go:91 Views::View |
match | |
ViewpointDefinition |
base | checkViewpointDefinitionSpecialization (l. 24912)Views::ViewpointCheck |
ViewpointDefinition base |
implicit.go:92 Views::ViewpointCheck |
match | |
ViewpointUsage |
base | checkViewpointUsageSpecialization (l. 24957)Views::viewpointChecks |
ViewpointUsage base |
implicit.go:48 Views::viewpointChecks |
match | |
ViewpointUsage |
viewpointSatisfaction | checkViewpointUsageViewpointSatisfactionSpecialization (l. 24968)Views::View::viewpointSatisfactions |
ViewpointUsage satisfied |
nested.go:290 Views::View::viewpointSatisfactions |
wrong | fixed here: a viewpoint of a view subsets Views::View::viewpointSatisfactions; before it fell to Items::Item::checkedConstraints |
ViewUsage |
base | checkViewUsageSpecialization (l. 25104)Views::views |
ViewUsage base |
implicit.go:47 Views::views |
match | |
ViewUsage |
subview | checkViewUsageSubviewSpecialization (l. 25111)Views::View::subviews |
ViewUsage subview |
nested.go:302 Views::View::subviews |
match | nested.go familyNestedFQN |
MetadataDefinition |
base | checkMetadataDefinitionSpecialization (l. 25234)Metadata::MetadataItem |
MetadataDefinition base |
implicit.go:90 Metadata::MetadataItem |
match | |
MetadataUsage |
base | checkMetadataUsageSpecialization (l. 25267)Metadata::metadataItems |
MetadataUsage base |
implicit.go:46 Metadata::metadataItems |
match | |
TriggerInvocationExpression |
base | checkTriggerInvocationExpressionSpecializationTriggers::TriggerWhen, Triggers::TriggerAt, Triggers::TriggerAfter |
TriggerInvocationExpression whenTriggerInvocationExpression atTriggerInvocationExpression after |
— | missing | when/at/after triggers are typed by check/passes/typecheck_trigger.go and lowered (ir/lower/state_graph.go); expressions are not symbols, so no Triggers::TriggerWhen general |
Pilot map entries keyed by role (pilot-only, or realising a spec row above)¶
Every put(...) of the pilot map whose target no §8.4 constraint names, plus the role-keyed entries that realise a constraint listed above under another metaclass.
| Pilot metaclass | Pilot role | Pilot target | Ours (file:line) | Verdict | Note |
|---|---|---|---|---|---|
BindingConnector |
binaryObject | Links::selfLinks |
implicit.go:56 Links::selfLinks |
see spec row | both resolve to Links::selfLinks; ours matches through selfLinks |
Connector |
object | Objects::linkObjects |
implicit.go:174 Objects::linkObjects |
see spec row | pilot keys for the KerML connector object/binary-object bases; ours: KerML connector → links/binaryLinks only, the object forms (Objects::linkObjects, binaryLinkObjects) are not derived — reproducer: struct S { feature a : S; feature b : S; connector c from a to b; } lacks Objects::binaryLinkObjects |
Connector |
binaryObject | Objects::binaryLinkObjects |
— | see spec row | as above (Objects::binaryLinkObjects) |
Expression |
enclosedPerformance | Performances::Performance::enclosedPerformances |
nested.go:175 Performances::Performance::enclosedPerformances |
see spec row | the pilot treats an Expression as a Step for checkStepEnclosedPerformanceSpecialization; ours: nested.go stepNestedFQN applies to expr usages as steps |
Feature |
dataValue | Base::dataValues |
implicit.go:22 Base::dataValues |
see spec row | checkFeatureDataValueSpecialization; ours implicit.go declaredTypeFeatureBase |
Feature |
occurrence | Occurrences::occurrences |
implicit.go:44 Occurrences::occurrences |
see spec row | checkFeatureOccurrenceSpecialization; ours as above |
Feature |
suboccurrence | Occurrences::Occurrence::suboccurrences |
nested.go:467 Occurrences::Occurrence::suboccurrences |
see spec row | checkFeatureSuboccurrenceSpecialization; fixed here |
Feature |
portion | Occurrences::Occurrence::portions |
nested.go:652 Occurrences::Occurrence::portions |
see spec row | checkFeaturePortionSpecialization; fixed here |
Feature |
object | Objects::objects |
implicit.go:170 Objects::objects |
see spec row | checkFeatureObjectSpecialization; ours as above |
Feature |
subobject | Objects::Object::subobjects |
nested.go:654 Objects::Object::subobjects |
see spec row | checkFeatureSubobjectSpecialization; fixed here |
Feature |
participant | Links::Link::participant |
connector.go:931 Links::Link::participant |
see spec row | checkFeatureEndSpecialization; fixed here |
Feature |
startingAt | FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt |
— | pilot-only | the pilot realises checkAssignmentActionUsageStartingAtRedefinition on the KerML Feature; spec puts it on AssignmentActionUsage (not modelled here, see above) |
Feature |
accessedFeature | FeatureReferencingPerformances::FeatureAccessPerformance::onOccurrence::startingAt::accessedFeature |
— | pilot-only | as above (checkAssignmentActionUsageAccessedFeatureRedefinition) |
FeatureChainExpression |
target | ControlFunctions::'.'::source::target |
— | see spec row | checkFeatureChainExpressionTargetRedefinition (not modelled) |
Invariant |
negated | Performances::falseEvaluations |
— | see spec row | pilot key for the negated branch of checkInvariantSpecialization; not modelled |
PayloadFeature |
payload | Transfers::Transfer::payload |
— | see spec row | checkPayloadFeatureRedefinition (not modelled) |
Flow |
enclosedPerformance | Performances::Performance::enclosedPerformances |
nested.go:175 Performances::Performance::enclosedPerformances |
see spec row | KerML step rows applied to flows; ours nested.go stepFallbackFQNs |
Flow |
subperformance | Performances::Performance::subperformances |
nested.go:173 Performances::Performance::subperformances |
see spec row | as above |
Flow |
ownedPerformance | Objects::Object::ownedPerformances |
nested.go:174 Objects::Object::ownedPerformances |
see spec row | as above |
FlowEnd |
sourceOutput | Transfers::Transfer::source::sourceOutput |
— | see spec row | checkFeatureFlowFeatureRedefinition (not modelled) |
FlowEnd |
targetInput | Transfers::Transfer::target::targetInput |
— | see spec row | as above |
MetadataFeature |
annotatedElement | Metaobjects::Metaobject::annotatedElement |
— | pilot-only | the pilot redefines Metaobject::annotatedElement; ours binds the annotated element (annotated_element.go:209) rather than adding a redefinition edge |
Multiplicity |
feature | Base::exactlyOne |
— | pilot-only | spec checkMultiplicitySpecialization names Base::naturals only; exactlyOne is the pilot's default for a feature multiplicity. Not modelled (multiplicities are not features) |
Multiplicity |
classifier | Base::zeroOrOne |
— | see spec row | as above; zeroOrOne for a classifier multiplicity (the spec asks it only of an individual OccurrenceDefinition) |
MultiplicityRange |
feature | Base::naturals |
— | see spec row | duplicate of the spec Base::naturals row keyed by the concrete metaclass; not modelled |
MultiplicityRange |
classifier | Base::naturals |
— | see spec row | as above |
Step |
incomingTransfer | Occurrences::Occurrence::incomingTransfers |
shape.go:22 Occurrences::Occurrence::incomingTransfers |
pilot-only | pilot helper for accept actions; no spec constraint names Occurrence::incomingTransfers. Ours: the runtime reads it (shape.go:22), no general |
Step |
featureWrite | FeatureReferencingPerformances::FeatureWritePerformance |
— | pilot-only | pilot helper for assignment actions (FeatureWritePerformance); no spec constraint. Ours: check/passes/typecheck_assign.go type-checks against it, no general |
Succession |
binaryObject | Occurrences::happensBeforeLinks |
implicit.go:57 Occurrences::happensBeforeLinks |
see spec row | resolves to happensBeforeLinks; ours matches |
SuccessionFlow |
enclosedperformance | Performances::Performance::enclosedPerformances |
nested.go:175 Performances::Performance::enclosedPerformances |
see spec row | as above |
SuccessionFlow |
subperformance | Performances::Performance::subperformances |
nested.go:173 Performances::Performance::subperformances |
see spec row | as above |
SuccessionFlow |
ownedPerformance | Objects::Object::ownedPerformances |
nested.go:174 Objects::Object::ownedPerformances |
see spec row | as above |
AcceptActionUsage |
subaction | Actions::Action::acceptSubactions |
nested.go:362 Actions::Action::acceptSubactions |
see spec row | checkAcceptActionUsageSubactionSpecialization; fixed here |
ActionUsage |
subperformance | Performances::Performance::subperformances |
nested.go:173 Performances::Performance::subperformances |
see spec row | KerML step rows applied to action usages; ours nested.go stepFallbackFQNs |
ActionUsage |
enclosedPerformance | Performances::Performance::enclosedPerformances |
nested.go:175 Performances::Performance::enclosedPerformances |
see spec row | as above |
ActionUsage |
ownedPerformance | Objects::Object::ownedPerformances |
nested.go:174 Objects::Object::ownedPerformances |
see spec row | as above |
ActionUsage |
entry | States::StateAction::entryAction |
roles.go:111 States::StateAction::entryAction |
pilot-only | checkActionUsageStateActionRedefinition; ours roles.go |
ActionUsage |
do | States::StateAction::doAction |
roles.go:112 States::StateAction::doAction |
pilot-only | as above |
ActionUsage |
exit | States::StateAction::exitAction |
roles.go:113 States::StateAction::exitAction |
pilot-only | as above |
ActionUsage |
trigger | Actions::TransitionAction::accepter |
— | see spec row | see checkTransitionUsageTransitionFeatureSpecialization (not modelled) |
ActionUsage |
guard | Actions::TransitionAction::guard |
— | see spec row | as above |
ActionUsage |
effect | Actions::TransitionAction::effect |
— | see spec row | as above |
AllocationDefinition |
binary | Allocations::Allocation |
implicit.go:99 Allocations::Allocation |
see spec row | the pilot maps the binary allocation to Allocation itself; no binary library type exists, ours matches through Allocation |
AllocationUsage |
binary | Allocations::allocations |
implicit.go:60 Allocations::allocations |
see spec row | as above (allocations) |
AssertConstraintUsage |
negated | Constraints::negatedConstraintChecks |
implicit.go:550 Constraints::negatedConstraintChecks |
see spec row | pilot key for the negated branch of checkAssertConstraintUsageSpecialization; fixed here (negatedConstraintChecks) |
AssignmentActionUsage |
subaction | Actions::Action::assignments |
— | see spec row | checkAssignmentActionUsageSubactionSpecialization (not modelled) |
AssignmentActionUsage |
featureWrite | Actions::AssignmentAction |
— | pilot-only | the pilot types an assignment by Actions::AssignmentAction; not modelled (no symbol) |
BindingConnectorAsUsage |
binaryObject | Links::selfLinks |
implicit.go:56 Links::selfLinks |
see spec row | as above |
ConcernUsage |
concern | Requirements::RequirementCheck::concerns |
nested.go:277 Requirements::RequirementCheck::concerns |
see spec row | checkConcernUsageFramedConcernSpecialization; fixed here |
ConnectionDefinition |
base | Connections::Connection |
implicit.go:95 Connections::Connection |
pilot-only | |
ConnectionUsage |
subpart | Items::Item::subparts |
nested.go:331 Items::Item::subparts |
see spec row | a ConnectionUsage is a PartUsage, so checkPartUsageSubpartSpecialization applies; ours nested.go partNestedFQN covers connection usages |
ConstraintUsage |
enclosedPerformance | Performances::Performance::enclosedPerformances |
nested.go:175 Performances::Performance::enclosedPerformances |
see spec row | as above (constraint usages are steps) |
ConstraintUsage |
subperformance | Performances::Performance::subperformances |
nested.go:173 Performances::Performance::subperformances |
see spec row | as above |
ConstraintUsage |
ownedPerformance | Objects::Object::ownedPerformances |
nested.go:174 Objects::Object::ownedPerformances |
see spec row | as above |
ConstraintUsage |
assumption | Requirements::RequirementCheck::assumptions |
nested.go:423 Requirements::RequirementCheck::assumptions |
see spec row | checkConstraintUsageRequirementConstraintSpecialization; ours nested.go requirementConstraintFQN |
ConstraintUsage |
requirement | Requirements::RequirementCheck::constraints |
nested.go:425 Requirements::RequirementCheck::constraints |
pilot-only | as above |
DecisionNode |
subaction | Actions::Action::decisions |
implicit.go:31 Actions::Action::decisions |
see spec row | checkDecisionNodeSpecialization; fixed here |
EventOccurrenceUsage |
suboccurrence | Occurrences::Occurrence::timeEnclosedOccurrences |
nested.go:262 Occurrences::Occurrence::timeEnclosedOccurrences |
see spec row | checkEventOccurrenceUsageSpecialization; fixed here |
ExhibitStateUsage |
performedAction | Parts::Part::exhibitedStates |
nested.go:254 Parts::Part::exhibitedStates |
see spec row | checkExhibitStateUsageSpecialization; ours nested.go familyNestedFQN |
FlowUsage |
subaction | Actions::Action::subactions |
nested.go:342 Actions::Action::subactions |
see spec row | a FlowUsage is an ActionUsage; ours nested.go actionNestedFQN covers flows |
FlowUsage |
ownedAction | Parts::Part::ownedActions |
nested.go:345 Parts::Part::ownedActions |
see spec row | as above |
FlowUsage |
entry | States::StateAction::entryAction |
roles.go:111 States::StateAction::entryAction |
pilot-only | a flow as a state entry/do/exit action; ours roles.go stateActionFQN keys on the usage, flows included |
FlowUsage |
do | States::StateAction::doAction |
roles.go:112 States::StateAction::doAction |
pilot-only | as above |
FlowUsage |
exit | States::StateAction::exitAction |
roles.go:113 States::StateAction::exitAction |
pilot-only | as above |
FlowUsage |
trigger | Actions::TransitionAction::accepter |
— | see spec row | see checkTransitionUsageTransitionFeatureSpecialization (not modelled) |
FlowUsage |
guard | Actions::TransitionAction::guard |
— | see spec row | as above |
FlowUsage |
effect | Actions::TransitionAction::effect |
— | see spec row | as above |
FlowUsage |
timeslice | Occurrences::Occurrence::timeSlices |
nested.go:463 Occurrences::Occurrence::timeSlices |
see spec row | a FlowUsage is an OccurrenceUsage; ours nested.go occurrenceNestedFQN covers it |
FlowUsage |
snapshot | Occurrences::Occurrence::snapshots |
nested.go:465 Occurrences::Occurrence::snapshots |
see spec row | as above |
ForLoopActionUsage |
subaction | Actions::Action::forLoops |
— | see spec row | checkForLoopActionUsageSubactionSpecialization (not modelled) |
ForLoopActionUsage |
loopVariable | Actions::ForLoopAction::var |
— | see spec row | checkForLoopActionUsageVarRedefinition (not modelled) |
ForkNode |
subaction | Actions::Action::forks |
implicit.go:28 Actions::Action::forks |
see spec row | checkForkNodeSpecialization; fixed here |
IfActionUsage |
ifThenElse | Actions::ifThenElseActions |
— | see spec row | pilot key for the else branch of checkIfActionUsageSpecialization; not modelled (no symbol) |
IfActionUsage |
subaction | Actions::Action::ifSubactions |
— | see spec row | checkIfActionUsageSubactionSpecialization (not modelled) |
IncludeUseCaseUsage |
performedAction | Parts::Part::performedActions |
nested.go:250 Parts::Part::performedActions |
see spec row | an included use case performed by a part; ours: performedActions only for perform, reproducer: part p { include use case u; } lacks Parts::Part::performedActions (the pilot gives it; no spec constraint names it) |
JoinNode |
subaction | Actions::Action::joins |
implicit.go:29 Actions::Action::joins |
see spec row | checkJoinNodeSpecialization; fixed here |
MetadataUsage |
annotatedElement | Metaobjects::Metaobject::annotatedElement |
— | pilot-only | as above |
MetadataUsage |
baseType | Metaobjects::SemanticMetadata::baseType |
— | see spec row | SysML restatement of checkMetadataFeatureSemanticSpecialization; ours metadata.go:11 |
MergeNode |
subaction | Actions::Action::merges |
implicit.go:30 Actions::Action::merges |
see spec row | checkMergeNodeSpecialization; fixed here |
OccurrenceDefinition |
life | Occurrences::Life |
implicit.go:23 Occurrences::Life |
see spec row | checkOccurrenceDefinitionIndividualSpecialization; ours implicit.go |
PartUsage |
subitem | Items::Item::subparts |
nested.go:331 Items::Item::subparts |
see spec row | checkPartUsageSubpartSpecialization; ours nested.go partNestedFQN |
PartUsage |
requirementActor | Requirements::RequirementCheck::actors |
nested.go:267 Requirements::RequirementCheck::actors |
see spec row | checkPartUsageActorSpecialization; fixed here |
PartUsage |
requirementStakeholder | Requirements::RequirementCheck::stakeholders |
nested.go:273 Requirements::RequirementCheck::stakeholders |
see spec row | checkPartUsageStakeholderSpecialization; fixed here |
PartUsage |
caseActor | Cases::Case::actors |
nested.go:269 Cases::Case::actors |
see spec row | checkPartUsageActorSpecialization; fixed here |
PortUsage |
ownedPort | Parts::Part::ownedPorts |
nested.go:306 Parts::Part::ownedPorts |
see spec row | checkPortUsageOwnedPortSpecialization; ours nested.go |
RenderingUsage |
viewRendering | Views::View::viewRendering |
roles.go:23 Views::View::viewRendering |
see spec row | checkRenderingUsageRedefinition; ours roles.go |
RenderingUsage |
subpart | Items::Item::subparts |
nested.go:331 Items::Item::subparts |
see spec row | as above (rendering usages) |
RequirementUsage |
verification | Verifications::VerificationCase::obj::requirementVerifications |
— | pilot-only | checkRequirementUsageRequirementVerificationSpecialization; fixed here |
SatisfyRequirementUsage |
negated | Requirements::notSatisfiedRequirementChecks |
implicit.go:559 Requirements::notSatisfiedRequirementChecks |
see spec row | pilot key for the negated branch of checkSatisfyRequirementUsageSpecialization; fixed here (notSatisfiedRequirementChecks) |
SendActionUsage |
subaction | Actions::Action::sendSubactions |
nested.go:364 Actions::Action::sendSubactions |
see spec row | checkSendActionUsageSubactionSpecialization; fixed here |
StateUsage |
exclusiveState | States::StateAction::exclusiveStates |
nested.go:390 States::StateAction::exclusiveStates |
see spec row | checkStateUsageExclusiveStateSpecialization; fixed here |
StateUsage |
ownedAction | Parts::Part::ownedStates |
nested.go:393 Parts::Part::ownedStates |
see spec row | checkStateUsageOwnedStateSpecialization (ownedStates); ours nested.go |
SuccessionAsUsage |
binaryObject | Occurrences::happensBeforeLinks |
implicit.go:57 Occurrences::happensBeforeLinks |
see spec row | as above |
SuccessionAsUsage |
decision | ControlPerformances::DecisionPerformance::outgoingHBLink |
— | see spec row | pilot realisation of checkDecisionNodeOutgoingSuccessionSpecialization (see that row: not modelled) |
SuccessionAsUsage |
merge | ControlPerformances::MergePerformance::incomingHBLink |
— | see spec row | pilot realisation of checkMergeNodeIncomingSuccessionSpecialization (not modelled) |
TerminateActionUsage |
subaction | Actions::Action::terminateSubactions |
nested.go:366 Actions::Action::terminateSubactions |
see spec row | checkTerminateActionUsageSubactionSpecialization; fixed here |
TransitionUsage |
actionTransition | Actions::Action::decisionTransitions |
nested.go:378 Actions::Action::decisionTransitions |
see spec row | checkTransitionUsageActionSpecialization; fixed here |
TransitionUsage |
stateTransition | States::StateAction::stateTransitions |
nested.go:375 States::StateAction::stateTransitions |
see spec row | checkTransitionUsageStateSpecialization; fixed here |
TriggerInvocationExpression |
when | Triggers::TriggerWhen |
— | see spec row | checkTriggerInvocationExpressionSpecialization (not modelled) |
TriggerInvocationExpression |
at | Triggers::TriggerAt |
— | see spec row | as above |
TriggerInvocationExpression |
after | Triggers::TriggerAfter |
— | see spec row | as above |
ViewUsage |
subpart | Items::Item::subparts |
nested.go:331 Items::Item::subparts |
see spec row | as above (view usages) |
ViewpointUsage |
satisfied | Views::View::viewpointSatisfactions |
nested.go:290 Views::View::viewpointSatisfactions |
see spec row | checkViewpointUsageViewpointSatisfactionSpecialization; fixed here |
WhileLoopActionUsage |
subaction | Actions::Action::whileLoops |
— | see spec row | checkWhileLoopActionUsageSubactionSpecialization (not modelled) |