5.2.3 Entities

5.2.3.1 Entity definitions

5.2.3.1.1 absorbed_dose_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An absorbed_dose_measure_with_unit is a measure_with_unit that implements the ARM concept of Absorbed_dose_measure_with_unit.

EXPRESS specification:

*)
ENTITY absorbed_dose_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\absorbed_dose_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = gray;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- absorbed_dose_measure_with_unit
(*

Formal propositions:

WR1: The absorbed_dose_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The absorbed_dose_measure_with_unit shall reference an si_unit with the name of gray.

WR3: The unit_component shall be an si_unit.

5.2.3.1.2 activity_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An activity_measure_with_unit is a measure_with_unit that implements the ARM concept of Activity_measure_with_unit.

EXPRESS specification:

*)
ENTITY activity_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\activity_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = becquerel;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- activity_measure_with_unit
(*

Formal propositions:

WR1: The activity_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The activity_measure_with_unit shall reference a becquerel si_unit.

WR3: The unit_component shall be an si_unit.

5.2.3.1.3 add_design_object_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An add_design_object_assignment is an action_assignment that implements the ARM concept of Add_design_object_management_relationship.

EXPRESS specification:

*)
ENTITY add_design_object_assignment
   SUBTYPE OF (action_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(it <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(it))
        AND (it\product_definition_relationship.name = 
                       'design object addition'))) = 1;
END_ENTITY; -- add_design_object_assignment
(*

Formal propositions:

WR1: The add_design_object_assignment shall have exactly one item that is a product_definition_relationship with a name of 'design object addition'.

Informal propositions:

IP1: The add_design_object_assignment shall have exactly one item that is a managed_design_object that is not a product_definition_relationship with a name of 'design object addition' and is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design.

5.2.3.1.4 add_design_object_request_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An add_design_object_request_assignment is an action_request_assignment that implements the ARM concepts of Add_design_object_management_relationship and Change_request.

EXPRESS specification:

*)
ENTITY add_design_object_request_assignment
   SUBTYPE OF (action_request_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(it <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(it))
        AND (it\product_definition_relationship.name = 
                         'design object addition'))) = 1;
END_ENTITY; -- add_design_object_request_assignment
(*

Formal propositions:

WR1: The add_design_object_request_assignment shall have exactly one item that is a product_definition_relationship with a name of 'design object addition'.

Informal propositions:

IP1: The add_design_object_request_assignment shall have exactly one item that is a managed_design_object that is not a product_definition_relationship with a name of 'design object addition' and is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design.

5.2.3.1.5 altered_package_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A altered_package_terminal is a package_terminal that implements the ARM concept of Altered_package_terminal.

EXPRESS specification:

*)
ENTITY altered_package_terminal
  ABSTRACT SUPERTYPE OF ((shape_formed_terminal ANDOR
      surface_prepped_terminal) ANDOR length_trimmed_terminal)
   SUBTYPE OF (package_terminal);
WHERE
 WR1: SIZEOF(QUERY ( sar <* USEDIN (SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
      'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'terminal to be altered' ))
       = 1;
 WR2: (SELF.of_shape.definition\product_definition.description =
       'altered package');
END_ENTITY; -- altered_package_terminal
(*

Formal propositions:

WR1: The altered_package_terminal shall be referenced by one shape_aspect_relationship with a description of 'terminal to be altered' as the related_shape_aspect.

WR2: The altered_package_terminal shall be an aspect of the shape of a product_definition with a description of 'altered package'.

5.2.3.1.6 analytical_model

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An analytical_model is a representation that implements the ARM concept of Analytical_model.

EXPRESS specification:

*)
ENTITY analytical_model
  SUBTYPE OF (representation);
UNIQUE
  UR1: SELF\representation.name;
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 2;
  WR2: SIZEOF (QUERY (dr <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       dr.assigned_document.kind\document_type.product_data_type = 
       'language reference manual')) = 1;
  WR3: SIZEOF (QUERY (it <* SELF.items |
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MODEL_PARAMETER' IN 
       TYPEOF (it)))) = 0;
  WR4: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |
       (rr\representation_relationship.name = 'access mechanism') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL_PORT' IN
       TYPEOF (rr.rep_2)))) >= 1;
END_ENTITY; -- analytical_model
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within a population of analytical_model.

WR1: The analytical_model shall be referenced by exactly two document_references.

WR2: The analytical_model shall be referenced by exactly one document_reference where the document_type is 'language reference manual'.

WR3: The analytical_model shall have at least one model_parameter in its set of items.

WR4: The analytical_model shall be referenced as rep_1 in at least one representation_relationship with a name of 'access mechanism' where the rep_2 references an analytical_model_port.

5.2.3.1.7 analytical_model_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An analytical_model_definition is a product_definition that implements the ARM concepts of: Analytical_model_definition

EXPRESS specification:

*)
ENTITY analytical_model_definition
 SUBTYPE OF (product_definition);
WHERE
  WR1: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
       SELF\product_definition_with_associated_documents.
        documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) + 
       SIZEOF (QUERY (ada <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'creation date')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR4: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR5: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\product_definition ||
       SELF\analytical_model_definition))) = 0;
  WR7: SIZEOF (QUERY (prpc <* USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.' +
       'PRODUCTS') |
       prpc\product_category.name = 'simulation model')) >= 1;
END_ENTITY; -- analytical_model_definition
(*

Formal propositions:

WR1: If the analytical_model_definition is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR2: The analytical_model_definition shall have exactly one creation date.

WR3: The analytical_model_definition shall have exactly one approval.

WR4: The analytical_model_definition shall have at least one organization or person_and_organization as the creator.

WR5: The analytical_model_definition shall have exactly one security_classification.

WR6: The analytical_model_definition shall not be any other type of product_definition.

WR7: The analytical_model_definition shall have a product_category name of 'simulation model'.

5.2.3.1.8 analytical_model_make_from_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An analytical_model_make_from_relationship is a representation and a representation_relationship that implements the ARM concept of Analytical_model_make_from.

EXPRESS specification:

*)
ENTITY analytical_model_make_from_relationship
  SUBTYPE OF (representation, representation_relationship);
UNIQUE
  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL'] *
       TYPEOF (SELF.rep_1)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL'] *
       TYPEOF (SELF.rep_2)) = 1;
  WR3: SIZEOF( QUERY(rr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |NOT(
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAKE_FROM_MODEL_PORT_RELATIONSHIP' IN TYPEOF(rr.rep_2))))) = 0;
  WR4: SIZEOF( QUERY(rr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |NOT(
       (rr\representation_relationship.name = 'associated make from') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAKE_FROM_MODEL_PORT_RELATIONSHIP' IN TYPEOF(rr.rep_2))))) = 0;
  WR5: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL'] *
       TYPEOF (SELF)) = 0;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\analytical_model_make_from_relationship))) = 0;
END_ENTITY; -- analytical_model_make_from_relationship 
(* 

Formal propositions:

Formal propositions:

WR1: The combination of rep_1 and rep_2 shall be unique within a population of analytical_model_make_from_relationship.

WR1: The analytical_model_make_from_relationship shall reference an analytical_model as its rep_1.

WR2: The analytical_model_make_from_relationship shall reference an analytical_model as its rep_2.

WR3: The analytical_model_make_from_relationship shall be related to only a make_from_model_port_relationship via a representation_relationship.

WR4: The analytical_model_make_from_relationship shall be related to only a make_from_model_port_relationship via a representation_relationship with a name of 'associated make from'.

WR5: The analytical_model_make_from_relationship shall not be an analytical_model.

WR6: The analytical_model_make_from_relationship shall only be a representation, represetation_item or in addition to itself.

5.2.3.1.9 analytical_model_port

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An analytical_model_port is a representation that describes an interface point for an analytical_model. An analytical_model_port implements the ARM constructs of:
  • Analytical_model_port
  • Analytical_model_scalar_port
  • Analytical_model_vector_port
  • Digital_analytical_model_port

EXPRESS specification:

*)
ENTITY analytical_model_port
  SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'distributed property') AND
       (it\descriptive_representation_item.description IN 
       ['true', 'false']))) = 1;
  WR2: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'nominal signal flow direction') AND
       (it\descriptive_representation_item.description IN 
       ['input direction',
       'output direction', 'bidirectional', 'unknown direction',
       'not applicable']))) <= 1;
  WR3: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'port type') AND
       (it\descriptive_representation_item.description IN 
       ['string property type',
       'logical property type', 'physical property type',
       'boolean property type']))) = 1;
  WR4: SIZEOF (QUERY (am <* QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'REPRESENTATION_RELATIONSHIP.REP_2') |
       rr\representation_relationship.name = 'access mechanism') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL' IN 
       TYPEOF (am.rep_1))) = 1;
  WR5: SIZEOF (QUERY (aga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       aga.assigned_group\group.name IN ['scalar port', 'digital scalar port', 
       'vector port', 'digital vector port', 
       'digital analytical model port'])) <= 1;
  WR6: (NOT (SIZEOF (QUERY (aga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       aga.assigned_group\group.name IN ['vector port', 'digital vector port'])) 
       = 1)) OR
       (SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'size') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COUNT_MEASURE' IN
       TYPEOF (it\measure_with_unit.value_component)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONTEXT_DEPENDENT_UNIT' IN
       TYPEOF (it\measure_with_unit.unit_component)))) = 1);
  WR7: (NOT (SIZEOF (QUERY (aga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       aga.assigned_group\group.name IN ['digital scalar port', 
       'digital vector port', 'digital analytical model port'])) = 1)) OR
       (SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'nominal signal flow direction') AND
    (it\descriptive_representation_item.description IN ['input direction',
       'output direction', 'bidirectional', 'unknown direction']))) = 1);
END_ENTITY; -- analytical_model_port
(*

Formal propositions:

WR1: The analytical_model_port shall have exactly one descriptive_representation_item with a name of 'distributed property' and a description of 'true' or 'false'.

WR2: The analytical_model_port shall have at most one descriptive_representation_item with a name of 'nominal signal flow direction' and a description of 'input direction', 'output direction', 'bidirectional', 'unknown direction', or 'not applicable'.

WR3: The analytical_model_port shall have exactly one descriptive_representation_item with a name of 'port type' and a description of 'string property type', 'logical property type', 'physical property type', or 'boolean property type'.

WR4: The analytical_model_port shall be related to exactly one analytical_model as the 'access mechanism'.

WR5: The analytical_model_port shall be assigned to at most one group with a name of 'scalar port', 'digital scalar port', 'vector port', 'digital vector port', or 'digital analytical model port'.

WR6: If the analytical_model_port is assigned to a group with a name of 'vector port' or 'digital vector port', it shall have exactly one measure_representation_item with a name of 'size', a value_component that is a count_measure, and a unit_component that is a context_dependent_unit.

WR7: If the analytical_model_port is assigned to a group with a name of 'digital scalar port', 'digital vector port', or 'digital analytical model port', it shall have exactly one descriptive_representation_item with a name of 'nominal signal flow direction' and a description of 'input direction', 'output direction', 'bidirectional', or 'unknown direction'.

5.2.3.1.10 analytical_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An analytical_representation is a representation that associates specific properties with an analytical_model. An analytical_representation implements the ARM concept of Analytical_representation.

EXPRESS specification:

*)
ENTITY analytical_representation
  SUBTYPE OF (representation);
UNIQUE
  UR1: SELF\representation.name;
WHERE
  WR1: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PARAMETER_ASSIGNMENT_REPRESENTATION' IN
       TYPEOF (rr.rep_2))) >= 1;
  WR2: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'REPRESENTATION_RELATIONSHIP.REP_2') | 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL' IN TYPEOF (rr.rep_1))) = 1;
END_ENTITY; -- analytical_representation
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within a population of analytical_representation.

WR1: The analytical_representation shall have at least one representation_relationship that references a parameter_assignment_representation.

WR2: The analytical_representation shall have exactly one representation_relationship that references an analytical_model.

5.2.3.1.11 angular_dimension_with_orientation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An angular_dimension_with_orientation is a dimensional_location that defines the angle between two shape elements. An angular_dimension_with_orientation implements the ARM concept of Angular_dimension_with_direction_vector.

EXPRESS specification:

*)
ENTITY angular_dimension_with_orientation
  SUBTYPE OF (dimensional_location);
WHERE
    wr1: SELF\shape_aspect_relationship.description = 'angular';
END_ENTITY; -- angular_dimension_with_orientation
(*

Formal propositions:

WR1: The description of the angular_dimension_with_orientation shall be 'angular'.

Informal propositions:

IP1: The angular_dimension_with_orientation shall have exactly one property_definition with a description of 'dimensional location property', and that property_definition either shall be represented by a representation that contains a placement with a name of 'orientation' or shall relate to a property_definition with a description of 'datum based vector orientation' to specify the 'measurement orientation'.

IP2: If the angular_dimension_with_orientation has a property_definition with a description of 'dimensional location property' and that property_definition relates to a property_definition with a description of 'datum based vector orientation' to specify the 'measurement orientation', the combination of the shape_aspect specified as the related_shape_aspect, the shape_aspect specified as the relating_shape_aspect, and the property_definition with a description of 'datum based vector orientation' shall be unique.

IP3: If the angular_dimension_with_orientation has a property_definition with a description of 'dimensional location property' and that property_definition is represented by a representation that contains a placement with a name of 'orientation', the combination of the shape_aspect specified as the related_shape_aspect, the shape_aspect specified as the relating_shape_aspect, and the placement with a name of 'orientation' shall be unique.

5.2.3.1.12 angularity_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An angularity_tolerance is a geometric_tolerance_with_specified_datum_system. An angularity_tolerance implements the ARM concept of Angularity_tolerance.

EXPRESS specification:

*)
ENTITY angularity_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'angularity';
END_ENTITY; -- angularity_tolerance
(*

Formal propositions:

WR1: The name for the angularity_tolerance shall be 'angularity'.

Informal propositions:

IP1: The toleranced_shape_aspect of the angularity_tolerance shall either lie on the boundary of the shape of the product; be a centre_of_symmetry with a description of either 'axis' or 'plane'; be a tangent with a description of 'plane'; be a part_template_definition; or be a composite_shape_aspect the 'composing' shape_aspects of which either are all of type part_template_definition, are all of type centre_of_symmetry and have the same description -- either 'axis' or 'plane', or are all of type tangent with a description of 'plane'.

IP2: The angularity_tolerance shall have at most two physical_unit_datum in its referenced datum_system.

IP3: The angularity_tolerance shall have at least one physical_unit_datum in its referenced datum_system that has description of either 'axis' or 'plane'.

IP4: If the toleranced_shape_aspect of the angularity_tolerance is neither a centre_of_symmetry with a description of 'axis' nor a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'axis', the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

5.2.3.1.13 applied_action_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_action_assignment is an action_assignment that specifies a set of action_assigned_item.

EXPRESS specification:

*)
ENTITY applied_action_assignment
  SUBTYPE OF (action_assignment);
    items : SET [1:?] OF action_assigned_item;
END_ENTITY; -- applied_action_assignment
(*

5.2.3.1.14 applied_approval_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_approval_assignment is an approval_assignment that specifies a set of approval_assigned_item.

EXPRESS specification:

*)
ENTITY applied_approval_assignment 
 SUBTYPE OF (approval_assignment); 
 items : SET [1:?] OF approval_assigned_item; 
END_ENTITY; -- applied_approval_assignment
(*

5.2.3.1.15 applied_certification_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_certification_assignment is a certification_assignment that specifies a set of certification_assigned_item.

EXPRESS specification:

*)
ENTITY applied_certification_assignment
  SUBTYPE OF (certification_assignment);
  items : SET [1:?] OF certification_assigned_item;
END_ENTITY; -- applied_certification_assignment
(*

5.2.3.1.16 applied_classification_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_classification_assignment is a group_assignment that specifies a set of classification_assigned_item.

EXPRESS specification:

*)
ENTITY applied_classification_assignment
   SUBTYPE OF (group_assignment);
     items : SET [1:?] OF classification_assigned_item;
END_ENTITY; -- applied_classification_assignment
(*

5.2.3.1.17 applied_contract_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_contract_assignment is a contract_assignment that specifies a set of contract_assigned_item.

EXPRESS specification:

*)
ENTITY applied_contract_assignment
  SUBTYPE OF (contract_assignment);
  items : SET [1:?] OF contract_assigned_item;
END_ENTITY; -- applied_contract_assignment
(*

5.2.3.1.18 applied_date_and_time_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_date_and_time_assignment is a date_and_time_assignment that specifies a set of date_and_time_assigned_item.

EXPRESS specification:

*)
ENTITY applied_date_and_time_assignment
  SUBTYPE OF (date_and_time_assignment);
  items : SET [1:?] OF date_and_time_assigned_item;
WHERE
  WR1: applied_date_time_correlation
       (SELF,'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN');
  WR2: (NOT (SELF.role\date_time_role.name = 'participant date and time')) OR
       (SIZEOF (QUERY (ra <* QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_ACTION' IN
       TYPEOF (it)) |
       NOT (SIZEOF (USEDIN (ra,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS')) = 1))) = 0);
END_ENTITY; -- applied_date_and_time_assignment
(*

Formal propositions:

WR1: The role of the applied_date_and_time_assignment shall correlate with the items of the applied_date_and_time_assignment.

WR2: If the applied_date_and_time_assignment has a role of 'participant date and time', each rule_action in the set of items shall have exactly one applied_person_and_organization_assignment.

5.2.3.1.19 applied_date_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_date_assignment is a date_assignment that specifies a set of date_assigned_item.

EXPRESS specification:

*)
ENTITY applied_date_assignment
  SUBTYPE OF (date_assignment);
  items : SET [1:?] OF date_assigned_item;
WHERE
  WR1: applied_date_correlation (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN');
END_ENTITY; -- applied_date_assignment
(*

Formal propositions:

WR1: The role of the applied_date_assignment shall correlate with the items of the applied_date_assignment.

5.2.3.1.20 applied_document_reference

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_document_reference is a document reference that specifies a set of document_assigned_item.

EXPRESS specification:

*)
ENTITY applied_document_reference
  SUBTYPE OF (document_reference);
  items : SET [1:?] OF document_assigned_item;
END_ENTITY; -- applied_document_reference
(*

5.2.3.1.21 applied_group_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_group_assignment is a group_assignment that specifies a set of group_assigned_item.

EXPRESS specification:

*)
ENTITY applied_group_assignment
 SUBTYPE OF (group_assignment);
     items : SET [1:?] OF group_assigned_item;
END_ENTITY; -- applied_group_assignment
(*

Informal propositions:

IP1: If the applied_group_assignment has an assigned_group that is a functional_terminal_group then it shall only have items that are functional_unit_terminal_definitions with a description of 'scalar terminal'.

5.2.3.1.22 applied_organization_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_organization_assignment is an organization_assignment that specifies a set of organization_assigned_item.

EXPRESS specification:

*)
ENTITY applied_organization_assignment
  SUBTYPE OF (organization_assignment);
  items : SET [1:?] OF organization_assigned_item;
END_ENTITY; -- applied_organization_assignment
(*

5.2.3.1.23 applied_person_and_organization_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_person_and_organization_assignment is a person_and_organization_assignment that specifies a set of person_and_organization_assigned_item.

EXPRESS specification:

*)
ENTITY applied_person_and_organization_assignment
  SUBTYPE OF (person_and_organization_assignment);
  items : SET [1:?] OF person_and_organization_assigned_item;
END_ENTITY; -- applied_person_and_organization_assignment
(*

5.2.3.1.24 applied_person_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_person_assignment is a person_assignment that specifies a set of person_assigned_item.

EXPRESS specification:

*)
ENTITY applied_person_assignment
 SUBTYPE OF (person_assignment);
     items : SET [1:?] OF person_assigned_item;
END_ENTITY; -- applied_person_assignment
(*

5.2.3.1.25 applied_promissory_usage_in_product_model_assignment

An applied_promissory_usage_in_product_model_assignment is a group_assignment that specifies a set of promissory_usage_in_product_model_assigned_item. One item shall be a product_concept and the other item shall be a product_definition.

EXPRESS specification:

*)
ENTITY applied_promissory_usage_in_product_model_assignment
 SUBTYPE OF (group_assignment);
     items : SET [1:?] OF promissory_usage_in_product_model_assigned_item;
WHERE
 WR1: SIZEOF(QUERY(pm <* items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_CONCEPT' IN TYPEOF(pm)
        )) = 1;
 WR2: SIZEOF(QUERY(pd <* items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN TYPEOF(pd)
        )) = 1;
 WR3: SIZEOF(items) = 2;
 WR4: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROMISSORY_USAGE_IN_PRODUCT_MODEL' IN TYPEOF(SELF\group_assignment.assigned_group);
 WR5: SIZEOF(USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) <= 1;
END_ENTITY; -- applied_promissory_usage_in_product_model_assignment
(*

5.2.3.1.26 applied_security_classification_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An applied_security_classification_assignment is a security_classification_assignment that specifies a set of security_classification_assigned_item.

EXPRESS specification:

*)
ENTITY applied_security_classification_assignment
  SUBTYPE OF (security_classification_assignment);
  items : SET [1:?] OF security_classification_assigned_item;
END_ENTITY; -- applied_security_classification_assignment
(*

5.2.3.1.27 array_placement_group_component_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An array_placement_group_component_definition is a assembly_group_component_definition that implements the ARM concept of Array_placement_group .

EXPRESS specification:

*)
ENTITY array_placement_group_component_definition
  SUPERTYPE OF (ONEOF(linear_array_placement_group_component_definition,
                      rectangular_array_placement_group_component_definition))
  SUBTYPE OF (assembly_group_component_definition);
END_ENTITY; -- array_placement_group_component_definition
(*

5.2.3.1.28 array_placement_group_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An array_placement_group_component_shape_aspect is a assembly_group_component_shape_aspect that implements the ARM concepts of Array_placement_group .

EXPRESS specification:

*)
ENTITY array_placement_group_component_shape_aspect
  SUPERTYPE OF (ONEOF(linear_array_placement_group_component_shape_aspect,
                      rectangular_array_placement_group_component_shape_aspect))
  SUBTYPE OF (assembly_group_component_shape_aspect);
END_ENTITY; -- array_placement_group_component_shape_aspect
(*

5.2.3.1.29 assembly_bond_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An assembly_bond_definition is a shape_aspect that defines a joint that uses material to bond together portions of the assembly. An assembly_bond_definition implements the ARM concept of Assembly_bond_definition.

EXPRESS specification:

*)
ENTITY assembly_bond_definition
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name;
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1;
  WR2: SIZEOF (QUERY (aga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BOND_CATEGORY' IN
       TYPEOF (aga.assigned_group))) = 1;
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name  = 'bonded feature 1' ))  = 1;
  WR4: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name  = 'bonded feature 2' ))  = 1;
  WR5: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PRODUCT_DEFINITION' IN TYPEOF (SELF.of_shape.definition))
       AND
       (SIZEOF (QUERY (prpc <* USEDIN (SELF.of_shape.definition.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.' +
       'PRODUCTS') |
       prpc\product_category.name = 'technology specific model')) >= 1));
END_ENTITY; -- assembly_bond_definition
(*

Formal propositions:

Formal propositions:

WR1: The name of the assembly_bond_definition shall be unique.

WR1: The assembly_bond_definition shall have exactly one material_designation.

WR2: The assembly_bond_definition shall be in exactly one bond_category.

WR3: The assembly_bond_definition shall be related to exactly one shape_aspect as the 'bonded feature 1'.

WR4: The assembly_bond_definition shall be related to exactly one shape_aspect as the 'bonded feature 2'.

WR5: The assembly_bond_definition shall be an aspect of the shape of the externally_defined_product_definition of a 'technology specific model' product.

5.2.3.1.30 assembly_definition

An assembly_definition is a physical_unit. An assembly_definition implements the ARM concepts of a Pca and a Pca_usage_view.

EXPRESS specification:

*)
ENTITY assembly_definition
 SUBTYPE OF (physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: NOT EXISTS(SELF\product_definition.name) OR 
        (SELF\product_definition.name = 'assembly module');
  WR3: (NOT (SELF.frame_of_reference.name = 'physical design')) OR
       (SIZEOF (QUERY (du <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design usage') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_ASSEMBLY_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_ASSEMBLY_DEFINITION'] *
       TYPEOF (du.relating_product_definition)) = 1) AND
       (du.relating_product_definition.frame_of_reference.name = 
       'physical design usage') AND
       (du.relating_product_definition\product_definition.name = 'assembly module')
        )) = 1);
  WR4: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'pca terminal'))) >= 2))) = 0);
END_ENTITY; -- assembly_definition
(*

Formal propositions:

WR1: The name shall exist.

WR2: The assembly_definition shall be a definition of a product that has a name of 'assembly module'.

WR3: If the assembly_definition is a physical design, it shall relate to exactly one assembly_definition, externally_defined_assembly_definition, or library_defined_assembly_definition that is a physical design usage with a name of 'assembly module' as the design usage.

WR4: If the assembly_definition has a frame_of_reference name of 'physical design usage', it shall have at least two shape_aspects that are assembly_module_terminals with a description of 'pca terminal'.

5.2.3.1.31 assembly_group_component_definition

An assembly_group_component_definition is a component_definition that implements the ARM concept of Assembly_group_component .

EXPRESS specification:

*)
ENTITY assembly_group_component_definition
  SUBTYPE OF (component_definition);
WHERE
  WR1: (SIZEOF (QUERY (gc <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'group component') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (gc.related_product_definition)))) >= 1)  OR
       (SIZEOF (QUERY(agcsa <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_GROUP_COMPONENT_SHAPE_ASPECT' IN TYPEOF (agcsa)))) = 0);
  WR2: (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)))) = 0) OR
       (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_JOINT' IN TYPEOF (aj)) AND
       (SIZEOF (QUERY( acu <* USEDIN (aj\shape_aspect_relationship.relating_shape_aspect,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF (acu))
       AND (acu\product_definition_relationship.relating_product_definition = SELF)
       )) >= 1))) >= 1);
  WR3: (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)))) = 0) OR
       (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj))AND
       (SIZEOF (QUERY( acu <* USEDIN (aj\
        shape_aspect_relationship.related_shape_aspect,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF (acu))
        AND (acu\product_definition_relationship.relating_product_definition = SELF)
        )) = 0))) = 0);
  WR4: (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)))) = 0) OR
       (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)) AND
       (SIZEOF (QUERY( cl <* USEDIN (aj\
        shape_aspect_relationship.related_shape_aspect.of_shape.definition,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'REPRESENTATION.ITEMS') |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_LOCATION' IN TYPEOF (cl))
        AND (aj IN cl\representation.items))) = 0))) = 0);
END_ENTITY; -- assembly_group_component_definition
(*

Formal propositions:

WR1: The assembly_group_component_definition shall be related to at least one component_definition by a product_definition_relationship with a name of 'group component' or it shall be a definition for an assembly_component_group_shape_aspect.

WR2: If the assembly_group_component_definition is referenced by an assembly_joint through the of_shape attribute, at least one of the members of component_definition that are related by the relating_shape_aspect of that assembly_joint shall be related by members of assembly_component_usage to this assembly_group_component_definition.

WR3: If the assembly_group_component_definition is referenced by an assembly_joint through the of_shape attribute, each member of component_definition that are related by the related_shape_aspect of that assembly_joint shall be related by members of assembly_component_usage to this assembly_group_component_definition.

WR4: If the assembly_group_component_definition is referenced by an assembly_joint through the of_shape.definition attribute, the component_definition that is related by the assembly_joint\shape_aspect_relationship.related_shape_aspect.of_shape.definition attribute of that assembly_joint shall be positioned by a member of component_location which also references that assembly_joint.

5.2.3.1.32 assembly_group_component_definition_placement_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A assembly_group_component_definition_placement_link is a product_definition and a product_definition_relationship that implements the ARM concept of Assembly_component_placement_link

EXPRESS specification:

*)
ENTITY assembly_group_component_definition_placement_link
  SUBTYPE OF (product_definition,product_definition_relationship);
WHERE
  WR1: SELF\product_definition_relationship.related_product_definition :<>:
       SELF\product_definition_relationship.relating_product_definition;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.related_product_definition);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.relating_product_definition);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\product_definition ||
       SELF\product_definition_relationship ||
       SELF\assembly_group_component_definition_placement_link)) = 0;
  WR5: SELF\product_definition.name = '';
  WR6: SELF\product_definition_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')) = 1;
END_ENTITY; -- assembly_group_component_definition_placement_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The assembly_group_component_definition_placement_link shall relate to only a component_definition in the related_product_definition.

WR3: The assembly_group_component_definition_placement_link shall relate to only a component_definition in the relating_product_definition.

WR4: The types of assembly_group_component_definition_placement_link shall be only assembly_group_component_definition_placement_link, product_definition, and product_definition_relationship.

WR5: The name attribute of the product_definition supertype shall be an empty string.

WR6: The name attribute of the product_definition_relationship supertype shall be an empty string.

WR7: Each assembly_group_component_definition_placement_link shall be referenced exactly once by a product_definition_relationship related_product_definition.

5.2.3.1.33 assembly_group_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An assembly_group_component_shape_aspect is a component_shape_aspect that implements the ARM concept of Assembly_group_component .

EXPRESS specification:

*)
ENTITY assembly_group_component_shape_aspect
  SUBTYPE OF (component_shape_aspect);
WHERE
  WR1: (SIZEOF (QUERY (gc <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'group component') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (gc.related_shape_aspect))))
       >= 1);
END_ENTITY; -- assembly_group_component_shape_aspect
(*

Formal propositions:

WR1: The assembly_group_component_shape_aspect shall be related to at least one component_shape_aspect by a shape_aspect_relationship with a name of 'group component'.

5.2.3.1.34 assembly_group_component_shape_aspect_placement_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An assembly_group_component_shape_aspect_placement_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Assembly_component_placement_link

EXPRESS specification:

*)
ENTITY assembly_group_component_shape_aspect_placement_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\assembly_group_component_shape_aspect_placement_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) = 1;
END_ENTITY; -- assembly_group_component_shape_aspect_placement_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The assembly_group_component_shape_aspect_placement_link shall relate to only a component_shape_aspect in the related_shape_aspect.

WR3: The assembly_group_component_shape_aspect_placement_link shall relate to only a component_shape_aspect in the relating_shape_aspect.

WR4: The types of assembly_group_component_shape_aspect_placement_link shall be only assembly_group_component_shape_aspect_placement_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: Each assembly_group_component_shape_aspect_placement_link shall be referenced exactly once by a shape_aspect_relationship related_shape_aspect.

5.2.3.1.35 assembly_joint

An assembly_joint is a shape_aspect_relationship and a shape_aspect that is the result of a physical connection between two components in the assembly. The order shall be inferred from the use of relating and related attributes on shape_aspect_relationship. An assembly_joint implements the ARM concepts of:
  • Assembly_joint
  • Assembled_with_bonding
  • Assembled_with_fasteners

EXPRESS specification:

*)
ENTITY assembly_joint
  SUBTYPE OF (shape_aspect_relationship, shape_aspect);
WHERE
  WR1: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF.relating_shape_aspect)) AND
       (SELF.relating_shape_aspect\shape_aspect.description IN 
       ['assembly module component terminal', 
       'bare die component terminal',
       'interconnect component join terminal', 
       'interconnect module component terminal',  
       'package terminal occurrence', 
       'packaged component join terminal'])) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_MODULE_COMPONENT_SURFACE_FEATURE' IN
       TYPEOF (SELF.relating_shape_aspect)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL' IN
       TYPEOF (SELF.relating_shape_aspect)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_MOUNTING_FEATURE' IN
       TYPEOF (SELF.relating_shape_aspect));
  WR2: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF.related_shape_aspect)) AND
       (SELF.related_shape_aspect\shape_aspect.description IN 
       ['assembly module component terminal', 
       'bare die component terminal', 
       'interconnect component join terminal', 
       'interconnect module component terminal',  
       'package terminal occurrence', 
       'packaged component join terminal'])) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_MODULE_COMPONENT_SURFACE_FEATURE' IN
       TYPEOF (SELF.relating_shape_aspect)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL' IN
       TYPEOF (SELF.related_shape_aspect)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_MOUNTING_FEATURE' IN
       TYPEOF (SELF.relating_shape_aspect));
  WR3: (NOT (SELF\shape_aspect_relationship.name = 
       'assembled with bonding')) OR
       (SIZEOF (QUERY (ddu <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'default definition usage') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_BOND_DEFINITION' IN
       TYPEOF (ddu.relating_shape_aspect))) = 1);
  WR4: (NOT (SELF\shape_aspect_relationship.name = 
       'assembled with bonding')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'bond assembly position') AND
       (SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM' IN TYPEOF (it)) AND
       (it\representation_item.name = 'assembly position'))) = 1))) = 1)) <= 1);
  WR5: (NOT (SELF\shape_aspect_relationship.name = 
       'assembled with fasteners')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition));
  WR6: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition)) OR
       is_assembly_module_design(SELF.of_shape.definition); 
  WR7: (NOT (SELF\shape_aspect_relationship.name =
       'assembled with bonding')) OR
       (SIZEOF (QUERY (ddu <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'default definition usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_BOND_DEFINITION' IN
       TYPEOF (ddu.relating_shape_aspect)) AND
       (SIZEOF (QUERY (sar <* USEDIN (ddu.relating_shape_aspect,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name  = 'bonded feature 1' ))  = 1)
       AND (SIZEOF (QUERY (sar <* USEDIN (ddu.relating_shape_aspect,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name  = 'bonded feature 1' ))  = 1)
       )) = 1);
  WR8: acyclic_shape_aspect_relationship(SELF,
       [SELF\shape_aspect_relationship.related_shape_aspect],
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.'+
       'ASSEMBLY_JOINT');
END_ENTITY; -- assembly_joint
(*

Formal propositions:

WR1: The assembly_joint shall have a relating_shape_aspect that references either a component_terminal with a description of 'assembly module component terminal', 'bare die component terminal', 'interconnect component join terminal', 'interconnect module component terminal', 'package terminal occurrence', or 'packaged component join terminal', or a component_interface_terminal or a component_mounting_feature or an interconnect_module_component_surface_feature.

WR2: The assembly_joint shall have a related_shape_aspect that references either a component_terminal with a description of 'assembly module component terminal', 'bare die component terminal', 'interconnect component join terminal', 'interconnect module component terminal', 'package terminal occurrence', or 'packaged component join terminal', or a component_interface_terminal or a component_mounting_feature or an interconnect_module_component_surface_feature.

WR3: If the name of the shape_aspect_relationship of the assembly_joint is 'assembled with bonding', it shall be related to exactly one assembly_bond_definition as the 'default definition usage'.

WR4: If the name of the shape_aspect_relationship of the assembly_joint is 'assembled with bonding', it shall have at most one property_definition that is associated with exactly one representation with a name of 'bond assembly position' that contains exactly one mapped_item with the name 'assembly position'.

WR5: If the name of the shape_aspect_relationship of the assembly_joint is 'assembled with fasteners', it shall be an aspect of the shape of an assembly_group_component_definition.

WR6: The assembly_joint is shall be an aspect of the shape of a physical_unit that is an assembly module design or of an assembly_group_component_definition.

WR7: If the name of the shape_aspect_relationship of the assembly_joint is 'assembled with bonding', its bonded features shall be defined by the referenced features.

WR8: The members of assembly_joint shall form a directed acyclic graph with the relating_shape_aspect, related_shape_aspect attributes of assembly_joint.

5.2.3.1.36 assembly_module_interface_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An assembly_module_interface_terminal is an assembly_module_terminal that implement the ARM concept of Assembly_module_interface_terminal

EXPRESS specification:

*)
ENTITY assembly_module_interface_terminal
  SUBTYPE OF (assembly_module_terminal);
END_ENTITY; -- assembly_module_interface_terminal
(*

5.2.3.1.37 assembly_module_join_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An assembly_module_join_terminal is an assembly_module_terminal that implement the ARM concept of Assembly_module_join_terminal

EXPRESS specification:

*)
ENTITY assembly_module_join_terminal
  SUBTYPE OF (assembly_module_terminal);
END_ENTITY; -- assembly_module_join_terminal
(*

5.2.3.1.38 assembly_module_macro_component_join_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An assembly_module_macro_component_join_terminal is a shape_aspect that implements the ARM concept of Assembly_module_macro_component_join_terminal

EXPRESS specification:

*)
ENTITY assembly_module_macro_component_join_terminal
  SUBTYPE OF (component_terminal);
WHERE
  WR1: NOT (SELF\shape_aspect.description IN 
      ['bare die component terminal', 
       'component termination passage join terminal', 
       'conductive interconnect element terminal', 
       'interconnect component join terminal', 
       'interconnect module component terminal', 'land join terminal', 
       'minimally defined component terminal',
       'non functional land join terminal', 
       'packaged component join terminal', 
       'printed component join terminal', 'package terminal occurrence',
       'via terminal']);
END_ENTITY; -- assembly_module_macro_component_join_terminal
(*

Formal propositions:

WR1: The assembly_module_macro_component_join_terminal shall not have a description of 'bare die component terminal', 'component termination passage join terminal', 'conductive interconnect element terminal', 'interconnect component join terminal', 'interconnect module component terminal', 'land join terminal', 'minimally defined component terminal', 'non functional land join terminal', 'packaged component join terminal', 'printed component join terminal', 'package terminal occurrence', or 'via terminal'.

5.2.3.1.39 assembly_module_terminal

An assembly_module_terminal is a shape_aspect that implement the ARM concepts of:
  • Assembly_module_terminal
  • Part_terminal
  • Pca_terminal

EXPRESS specification:

*)
ENTITY assembly_module_terminal
  SUPERTYPE OF (ONEOF(
           assembly_module_interface_terminal, 
           assembly_module_join_terminal))
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: EXISTS(SELF.of_shape.definition\product_definition.name);
  WR2: NOT EXISTS(SELF.of_shape.definition\product_definition.name) OR
      (SELF.of_shape.definition\product_definition.name = 'assembly module');
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr.used_representation))) >= 1))) = 0;
  WR4: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_CONNECTED_TERMINALS_DEFINITION'
       IN TYPEOF (mct.relating_shape_aspect))) <= 1;
  WR5: (NOT (SELF\shape_aspect.description = 'pca terminal')) OR
       ((SIZEOF(TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_DEFINITION',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_ASSEMBLY_DEFINITION',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_ASSEMBLY_DEFINITION']) >=1)
       AND (SELF.of_shape.definition\product_definition.
       frame_of_reference.name = 'physical design usage'));
  WR6: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar.related_shape_aspect\shape_aspect.description = 'connection zone')) = 1;
  WR7: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar.related_shape_aspect\shape_aspect.description = 'interface terminal')) <= 1;
END_ENTITY; -- assembly_module_terminal
(*

Formal propositions:

WR1: The product_definition name shall exist.

WR2: The assembly_module_terminal shall be the shape_aspect of a product_definition of a product that has a name of 'assembly module'.

WR3: The assembly_module_terminal shall have at least one shape_representation.

WR4: The assembly_module_terminal shall be related to at most one part_connected_terminals_definition as a 'member connected terminal'.

WR5: If the assembly_module_terminal has a description of 'pca terminal', it shall be an aspect of the shape of an assembly_definition, externally_defined_assembly_definition, or library_defined_assembly_definition that has a frame_of_reference name 'physical design usage'.

WR6: The assembly_module_terminal shall be related to exactly one shape_aspect with a description of 'connection zone'.

WR7: The assembly_module_terminal shall be related to at most one shape_aspect with a description of 'interface terminal'.

Informal propositions:

IP1: The assembly_module_terminal shall be related to at most one assembly_module_usage_view_connector_relationship.

5.2.3.1.40 assembly_module_usage_view_connector_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A assembly_module_usage_view_connector_relationship is a type of mapped_item that implements the ARM concept of assembly_module_usage_view_connector_relationship.

EXPRESS specification:

*)
ENTITY assembly_module_usage_view_connector_relationship
  SUBTYPE OF (mapped_item);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_3D' IN TYPEOF (SELF\mapped_item.mapping_target);
  wr2: SELF\mapped_item.mapping_source.mapped_representation\representation.name =
       '3d bound volume shape';
  wr3:  SIZEOF (QUERY (pdr <* USEDIN 
       ( SELF\mapped_item.mapping_source.mapped_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_CONNECTOR',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_CONNECTOR',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_CONNECTOR'] * 
        TYPEOF (pdr.definition.definition) ) = 1) )) = 1;
  wr4:  SIZEOF (QUERY (r <* USEDIN ( SELF\representation_item,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') |
        SIZEOF (QUERY (pdr <* USEDIN (r,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN TYPEOF(pdr.definition.definition))
         AND
        (pdr.definition.definition.
          frame_of_reference\application_context_element.name = 
          'physical design usage')
          AND
          (pdr.definition.definition\product_definition.
          name = 'assembly module')
           )) = 1 )) = 1;
END_ENTITY; -- assembly_module_usage_view_connector_relationship
(*

Formal propositions:

WR1: The assembly_module_usage_view_connector_relationship shall have an axis2_placement_3d as a placement.

WR2: The assembly_module_usage_view_connector_relationship shall place a 3d representation.

WR3: The assembly_module_usage_view_connector_relationship shall place a 3d representation of a packaged_connector, externally_defined_packaged_connector, or a library_defined_packaged_connector.

WR4: The assembly_module_usage_view_connector_relationship shall place the 3d representation into a representation of a product_definition that is an 'assembly module'.

5.2.3.1.41 auxiliary_characteristic_dimension_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An auxiliary_characteristic_dimension_representation is a dimensional_characteristic_representation that implements the ARM concept of Dimensional_characteristic_representation where the ARM attribute "auxiliary_dimension_representation" has a value of TRUE.

EXPRESS specification:

*)
ENTITY auxiliary_characteristic_dimension_representation
 SUBTYPE OF (dimensional_characteristic_representation);
END_ENTITY; -- auxiliary_characteristic_dimension_representation
(*

5.2.3.1.42 bare_die

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die is a physical_unit that implements the ARM concept of Bare_die.

EXPRESS specification:

*)
ENTITY bare_die
 SUBTYPE OF (physical_unit);
WHERE
  WR1: SIZEOF (QUERY (ifdu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\property_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (ifdu.relating_product_definition)) AND
       (ifdu.relating_product_definition.frame_of_reference.name = 
       'functional design usage'))) = 1;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (dut <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'device unit technology') |
       dut.relating_property_definition\property_definition.name = 
       'unit technology')) = 1)) = 1;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE_TERMINAL' IN 
       TYPEOF (sa))) >= 2))) = 0;
END_ENTITY; -- bare_die
(*

Formal propositions:

WR1: The bare_die shall be related to exactly one functional_unit with a frame_of_reference name of 'functional design usage' as the 'implemented function'.

WR2: The bare_die shall have exactly one property_definition that is related to exactly one property_definition with a name of 'unit technology' as the 'device unit technology'.

WR3: The bare_die shall have at least two shape_aspects that are bare_die_terminals.

Informal propositions:

IP1: The bare_die shall have exactly one representation with the name of material property data that shall be related to cartesian_points with names of 'least material condition centroid location' and 'maximum material condition centroid location'.

5.2.3.1.43 bare_die_bottom_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die_bottom_surface is a shape_aspect that implements the ARM concept of Bare_die_bottom_surface.

EXPRESS specification:

*)
ENTITY bare_die_bottom_surface
 SUBTYPE OF (bare_die_surface);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_BARE_DIE']) = 1;
  WR2: SELF\shape_aspect.product_definitional;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\bare_die_bottom_surface ||
       SELF\part_mounting_feature ||
       SELF\bare_die_surface)) = 0;
END_ENTITY; -- bare_die_bottom_surface
(*

Formal propositions:

WR1: The bare_die_bottom_surface shall be the aspect of the shape of a bare_die, externally_defined_bare_die, or library_defined_bare_die.

WR2: The bare_die_bottom_surface shall be on the boundary of the product.

WR3: The bare_die_bottom_surface shall be no other subtype of shape_aspect.

5.2.3.1.44 bare_die_edge_segment_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die_edge_segment_surface is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Bare_die_edge_segment_surface.

EXPRESS specification:

*)
ENTITY bare_die_edge_segment_surface
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  wr1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  wr2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  wr3: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
  WR4: SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed surface') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE_EDGE_SURFACE' IN TYPEOF
       (ce.relating_shape_aspect) ))) = 1;
  WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\bare_die_edge_segment_surface)) = 0;
END_ENTITY; -- bare_die_edge_segment_surface
(*

Formal propositions:

WR1: The bare_die_edge_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship related attribute.

WR2: The bare_die_edge_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship relating attribute.

WR3: The edge_segment_vertex instances referenced shall not be the same instance of edge_segment_vertex.

WR4: The bare_die_edge_segment_surface shall be related to exactly one bare_die_edge_surface as the 'composed surface'.

WR5: The bare_die_edge_segment_surface shall not be in a complex instance other than with it's immediate supertypes.

5.2.3.1.45 bare_die_edge_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die_edge_surface is a shape_aspect that implements the ARM concept of Bare_die_edge_surface.

EXPRESS specification:

*)
ENTITY bare_die_edge_surface
 SUBTYPE OF (bare_die_surface);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_BARE_DIE']) = 1;
  WR2: SELF\shape_aspect.product_definitional;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\part_mounting_feature ||
       SELF\bare_die_edge_surface ||
       SELF\bare_die_surface)) = 0;
END_ENTITY; -- bare_die_edge_surface
(*

Formal propositions:

WR1: The bare_die_edge_surface shall be the aspect of the shape of a bare_die, externally_defined_bare_die, or library_defined_bare_die.

WR2: The bare_die_edge_surface shall be on the boundary of the product.

WR3: The bare_die_edge_surface shall be no other subtype of shape_aspect.

5.2.3.1.46 bare_die_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die_surface is a shape_aspect that implements the ARM concept of Bare_die_surface.

EXPRESS specification:

*)
ENTITY bare_die_surface
 ABSTRACT SUPERTYPE OF (ONEOF( bare_die_bottom_surface, 
                         bare_die_top_surface, 
                        bare_die_edge_surface))
 SUBTYPE OF (part_mounting_feature);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_BARE_DIE']) = 1;
  WR2: SELF\shape_aspect.product_definitional;
END_ENTITY; -- bare_die_surface
(*

Formal propositions:

WR1: The bare_die_surface shall be the aspect of the shape of a bare_die, externally_defined_bare_die, or library_defined_bare_die.

WR2: The bare_die_surface shall be on the boundary of the product.

5.2.3.1.47 bare_die_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die_terminal is a minimally_defined_bare_die_terminal that implements the ARM concept of Bare_die_terminal.

EXPRESS specification:

*)
ENTITY bare_die_terminal
  SUBTYPE OF (minimally_defined_bare_die_terminal);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE' IN 
       TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (eca <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'external connection area') |
       eca.related_shape_aspect\shape_aspect.description = 'connection zone')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1;
  WR4: SIZEOF (QUERY (eca <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'seating plane zone') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONNECTION_ZONE_INTERFACE_PLANE_RELATIONSHIP' IN 
       TYPEOF (eca.related_shape_aspect))) <= 1;
END_ENTITY; -- bare_die_terminal
(*

Formal propositions:

WR1: The bare_die_terminal shall be a terminal of a bare_die.

WR2: The bare_die_terminal shall relate to exactly one shape_aspect that has a description of 'connection zone' as the 'external connection area'.

WR3: The bare_die_terminal shall have exactly one material designation.

WR4: The bare_die_terminal shall have no more than one 'seating plane zone'.

5.2.3.1.48 bare_die_top_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bare_die_top_surface is a shape_aspect that implements the ARM concept of Bare_die_top_surface.

EXPRESS specification:

*)
ENTITY bare_die_top_surface
 SUBTYPE OF (bare_die_surface);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_BARE_DIE']) = 1;
  WR2: SELF\shape_aspect.product_definitional;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\part_mounting_feature ||
       SELF\bare_die_top_surface ||
       SELF\bare_die_surface)) = 0;
END_ENTITY; -- bare_die_top_surface
(*

Formal propositions:

WR1: The bare_die_top_surface shall be the aspect of the shape of a bare_die, externally_defined_bare_die, or library_defined_bare_die.

WR2: The bare_die_top_surface shall be on the boundary of the product.

WR3: The bare_die_top_surface shall be no other subtype of shape_aspect.

5.2.3.1.49 bond_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bond_category is a group and an external_definition that implements the ARM concept of External_definition in the role of bond category.

EXPRESS specification:

*)
ENTITY bond_category
  SUBTYPE OF (group, external_definition);
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1;
END_ENTITY; -- bond_category
(*

Formal propositions:

WR1: The bond_category shall be referenced by exactly one document.

5.2.3.1.50 bus_element_link

A bus_element_link is a product_definition and a product_definition_relationship that implements the ARM concept of Bus_element_link

EXPRESS specification:

*)
ENTITY bus_element_link
  SUBTYPE OF (product_definition,product_definition_relationship);
UNIQUE
  UR1: SELF\product_definition_relationship.related_product_definition,
       SELF\product_definition_relationship.relating_product_definition;
WHERE
  WR1: SELF\product_definition_relationship.related_product_definition :<>:
       SELF\product_definition_relationship.relating_product_definition;
  WR2: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BUS_STRUCTURAL_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.related_product_definition)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'NETWORK_NODE_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.related_product_definition));
  WR3: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BUS_STRUCTURAL_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.relating_product_definition)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'NETWORK_NODE_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.relating_product_definition));
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\product_definition ||
       SELF\product_definition_relationship ||
       SELF\bus_element_link)) = 0;
  WR5: NOT EXISTS(SELF\product_definition.name) OR 
        (SELF\product_definition.name = '');
  WR6: SELF\product_definition_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')) >= 1;
END_ENTITY; -- bus_element_link 
(* 

Formal propositions:

Formal propositions:

WR1: The combination of related, relating attributes inherited from product_definition_relationship be unique within a population of bus_element_link.

WR1: The related element shall not be the relating element.

WR2: The bus_element_link shall relate to only a bus_structural_definition or a network_node_definition in the related_product_definition.

WR3: The bus_element_link shall relate to only a bus_structural_definition or a network_node_definition in the relating_product_definition.

WR4: The types of bus_element_link shall be only bus_element_link, product_definition, and product_definition_relationship.

WR5: The name attribute of the product_definition supertype shall be an empty string.

WR6: The name attribute of the product_definition_relationship supertype shall be an empty string.

WR7: Each bus_element_link shall be referenced at least once by a product_definition_relationship related_product_definition.

5.2.3.1.51 bus_structural_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A bus_structural_definition is a product_definition that implements the ARM concept of Bus_structural_definition.

EXPRESS specification:

*)
ENTITY bus_structural_definition
 SUBTYPE OF (product_definition);
WHERE
  WR1: SIZEOF (QUERY (bce <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'bus composition') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BUS_ELEMENT_LINK' IN
       TYPEOF (bce.related_product_definition))) >= 1;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 
       'functional unit network terminal definition bus assignment')) 
       <= 1)) <= 1;
  WR3: consistent_bus_structural_definition(bag_to_set(QUERY( pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BUS_ELEMENT_LINK' IN TYPEOF(pdr.related_product_definition))));
END_ENTITY; -- bus_structural_definition
(*

Formal propositions:

WR1: The bus_structural_definition shall relate to at least one bus_element_link.

WR2: The bus_structural_definition shall have at most one property_definition that relates to another property_definition to specify the 'functional unit network terminal definition bus assignment'.

WR3: The bus_structural_definition shall be a connected structure and shall not have any vertex with a degree greater than 2. The number of vertices shall equal the number of links + 1.

5.2.3.1.52 cable_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A cable_component is a component_definition that implements the ARM concept of Cable_component

EXPRESS specification:

*)
ENTITY cable_component
  SUBTYPE OF (component_definition);
WHERE
  WR1: SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) = 1;
  WR2: SELF\product_definition.description :<>: 'laminate component';
END_ENTITY; -- cable_component
(*

Formal propositions:

WR1: The cable_component shall be related, as the 'instantiated part', to exactly one physical_unit that is in the 'physical design usage' product_definition_context.

WR2: The cable_component shall not have a description of 'laminate component'.

5.2.3.1.53 capacitance_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A capacitance_measure_with_unit is a measure_with_unit that implements the ARM concept of Capacitance_measure_with_unit.

EXPRESS specification:

*)
ENTITY capacitance_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\capacitance_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = farad;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- capacitance_measure_with_unit
(*

Formal propositions:

WR1: The capacitance_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The capacitance_measure_with_unit shall reference an si_unit with a name of farad.

WR3: The unit_component shall be an si_unit.

5.2.3.1.54 change

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A change is an action_assignment that points to a set of .

EXPRESS specification:

*)
ENTITY change
 SUBTYPE OF (action_assignment);
     items : SET [1:?] OF work_item;
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DIRECTED_ACTION' 
       IN TYPEOF (SELF.assigned_action);
  WR2: unique_version_change_order (SELF.assigned_action, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN');

END_ENTITY; -- change
(*

Formal propositions:

WR1: The change shall assign a directed_action.

WR2: A single change shall not change more than one version of a single product, but may change more than one product_definition_formation if each product_definition_formation references a different product.

5.2.3.1.55 change_from_design_object_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A change_from_design_object_assignment is an action_assignment that implements the ARM concepts of:
  • Change_design_object_management_relationship
  • Component_swap_specification
  • Gate_path_swap_specification
  • Terminal_swap_specification

EXPRESS specification:

*)
ENTITY change_from_design_object_assignment
   SUBTYPE OF (action_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(aa <* USEDIN(SELF\action_assignment.assigned_action,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ACTION_ASSIGNMENT.ASSIGNED_ACTION')
        |'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'CHANGE_TO_DESIGN_OBJECT_ASSIGNMENT' IN TYPEOF(aa))) >= 1;
    END_ENTITY; -- change_from_design_object_assignment
(*

Formal propositions:

WR1: SELF\action_assignment.assigned_action shall also be a SELF\action_assignment.assigned_action for a change_to_design_object_assignment.

Informal propositions:

IP1: The change_from_design_object_assignment shall have exactly one item that is a managed_design_object that is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design that is not an item of a action_assignment with the same assigned_action.

5.2.3.1.56 change_from_design_object_request_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A change_from_design_object_request_assignment is an action_request_assignment that implements the ARM concepts of:
  • Change_design_object_management_relationship
  • Change_request
  • Component_swap_specification
  • Gate_path_swap_specification
  • Terminal_swap_specification

EXPRESS specification:

*)
ENTITY change_from_design_object_request_assignment
   SUBTYPE OF (action_request_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(aa <*
        USEDIN(SELF\action_request_assignment.assigned_action_request,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ACTION_REQUEST_ASSIGNMENT.ASSIGNED_ACTION_REQUEST')
        |'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'CHANGE_TO_DESIGN_OBJECT_REQUEST_ASSIGNMENT' IN TYPEOF(aa))) >= 1;

END_ENTITY; -- change_from_design_object_request_assignment
(*

Formal propositions:

WR1: SELF\action_request_assignment.assigned_action_request shall also be a SELF\action_request_assignment.assigned_action_request for a change_to_design_object_request_assignment.

Informal propositions:

IP1: The change_from_design_object_request_assignment shall have exactly one item that is a managed_design_object that is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design that is not an item of a action_request_assignment with the same assigned_action_request.

5.2.3.1.57 change_request

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A change_request is an action_request_assignment that implements the ARM concept of Change_request.

EXPRESS specification:

*)
ENTITY change_request
  SUBTYPE OF (action_request_assignment);
  items : SET [1:?] OF change_request_item;
END_ENTITY; -- change_request
(*

5.2.3.1.58 change_to_design_object_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A change_to_design_object_assignment is an action_assignment that implements the ARM concepts of:
  • Change_design_object_management_relationship
  • Component_swap_specification
  • Gate_path_swap_specification
  • Terminal_swap_specification

EXPRESS specification:

*)
ENTITY change_to_design_object_assignment
   SUBTYPE OF (action_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(aa <* USEDIN(SELF\action_assignment.assigned_action,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ACTION_ASSIGNMENT.ASSIGNED_ACTION')
        |'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'CHANGE_FROM_DESIGN_OBJECT_ASSIGNMENT' IN TYPEOF(aa))) >= 1;
   WR2: SIZEOF(QUERY ( pdr <* SELF.items | 
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(pdr)) AND
        (pdr\product_definition_relationship.name = 'design object change'))) = 1;
    
END_ENTITY; -- change_to_design_object_assignment
(*

Formal propositions:

WR1: SELF\action_assignment.assigned_action shall also be a SELF\action_assignment.assigned_action for a change_from_design_object_assignment.

WR2: The change_to_design_object_assignment shall have exactly one item that is a product_definition_relationship with a name of 'design object change'.

Informal propositions:

IP1: The change_to_design_object_assignment shall have exactly one item that is a managed_design_object that is not a product_definition_relationship with a name of 'design object change' and is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design that is not an item of a action_assignment with the same assigned_action.

5.2.3.1.59 change_to_design_object_request_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A change_to_design_object_request_assignment is an action_request_assignment that implements the ARM concepts of:
  • Change_design_object_management_relationship
  • Component_swap_specification
  • Change_request
  • Gate_path_swap_specification
  • Terminal_swap_specification

EXPRESS specification:

*)
ENTITY change_to_design_object_request_assignment
   SUBTYPE OF (action_request_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(aa <* 
        USEDIN(SELF\action_request_assignment.assigned_action_request,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ACTION_REQUEST_ASSIGNMENT.ASSIGNED_ACTION_REQUEST')
        |'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'CHANGE_FROM_DESIGN_OBJECT_REQUEST_ASSIGNMENT' 
         IN TYPEOF(aa))) >= 1;
   WR2: SIZEOF(QUERY ( pdr <* SELF.items | 
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(pdr)) AND
        (pdr\product_definition_relationship.name = 'design object change'))) = 1;
END_ENTITY; -- change_to_design_object_request_assignment
(*

Formal propositions:

WR1: SELF\action_request_assignment.assigned_action_request shall also be a SELF\action_request_assignment.assigned_action_request for a change_from_design_object_request_assignment.

WR2: The change_to_design_object_request_assignment shall have exactly one item that is a product_definition_relationship with a name of 'design object change'.

Informal propositions:

IP1: The change_to_design_object_request_assignment shall have exactly one item that is a managed_design_object that is not a product_definition_relationship with a name of 'design object change' and is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design that is not an item of a action_request_assignment with the same assigned_action_request.

5.2.3.1.60 characteristic_type

A characteristic_type is a group that specifies a boolean property, a numeric property whose units are in accordance with ISO 10303-41, a compound characteristic, a logical property, a string property, or an externally defined property for a characteristic.

EXPRESS specification:

*)
ENTITY characteristic_type
  SUBTYPE OF (group);
WHERE
  WR1: SELF\group.name IN [
       'string property',
       'logical property',
       'boolean property',
       'numeric property',
       'externally defined property',
       'compound characteristic'
        ];
END_ENTITY; -- characteristic_type
(*

Formal propositions:

WR1: A characteristic_type shall have a name that is 'string property', 'logical property', 'boolean property', 'numeric property', 'externally defined property' or 'compound characteristic'.

5.2.3.1.61 characterized_product_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A characterized_product_category is a characterized_object and a product_category that implements the ARM concept of Ee_product_category.

EXPRESS specification:

*)
ENTITY characterized_product_category
  SUBTYPE OF (characterized_object,product_category);
WHERE
  WR1:  SIZEOF (QUERY (pd <* USEDIN (SELF,
   'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
   'PROPERTY_DEFINITION.DEFINITION') | 
   (pd\property_definition.description = 'product category values') AND
   (SIZEOF (QUERY (pdr <* USEDIN (pd,
   'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
   'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
   ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
   'PARAMETER_ASSIGNMENT_REPRESENTATION'
   IN TYPEOF (pdr.used_representation)))) >= 1 ))) <= 1;

  WR2:  SIZEOF (QUERY (pd <* USEDIN (SELF,
   'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
   'PROPERTY_DEFINITION.DEFINITION') | 
   ((pd\property_definition.description = 'product category parameters') AND
   (SIZEOF (QUERY (pdr <* USEDIN (pd,
   'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
   'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
   (SIZEOF (QUERY (ri <* pdr.used_representation.items
   | (NOT (SIZEOF (TYPEOF (ri) *
   ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MODEL_PARAMETER']) =1)) )) =0))) >= 1 )))) <= 1;

  WR3: SELF\characterized_object.name = SELF\product_category.name;

  WR4:  SIZEOF (USEDIN (SELF,
   'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
   'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1; 

END_ENTITY; -- characterized_product_category
(*

Formal propositions:

WR1: The characterized_product_category shall be referenced by no more than one property_definition that has a description of 'product category values' that shall reference one or more parameter_assignment_representation.

WR2: The characterized_product_category shall be referenced by no more than one property_definition that has a description of 'product category parameters' that shall reference one or more model_parameter.

WR3: The name attribute inherited from product_category shall be the same value as the name attribute inherited from characterized_object.

WR4: The characterized_product_category shall be referenced by exactly one applied_document_reference.

NOTE: The RULE characterized_product_category_unique_constraint also constrains this entity.

5.2.3.1.62 circular_runout_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A circular_runout_tolerance is a geometric_tolerance_with_specified_datum_system that implements the ARM concept of Circular_runout_tolerance.

EXPRESS specification:

*)
ENTITY circular_runout_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'circular runout';
  WR2: NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
           'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
  WR3: SIZEOF (QUERY (pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       (pdr\property_definition_relationship.name = 'referenced datum system definition')  AND  
       (pdr.related_property_definition\property_definition.description =
       'datum system property without material conditions'))) = 1;
END_ENTITY; -- circular_runout_tolerance
(*

Formal propositions:

WR1: The name for the circular_runout_tolerance shall be 'circular runout'.

WR2: The circular_runout_tolerance shall not be a modified_geometric_tolerance.

WR3: The circular_runout_tolerance shall relate to exactly one property_definition that has the description of 'datum system property without material conditions' to specify the 'referenced datum system definition'.

Informal propositions:

IP1: The toleranced_shape_aspect of the circular_runout_tolerance shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP2: The circular_runout_tolerance shall have at most two physical_unit_datum in its referenced datum_system.

IP3: The circular_runout_tolerance shall have at least one physical_unit_datum in its referenced datum_system that has description of 'axis'.

IP4: The tolerance_zone_boundary of the circular_runout_tolerance shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

5.2.3.1.63 component_definition

A component_definition is a product_definition that represents a product that is used in an assembly. The component_definition entity implements the ARM concepts of:
  • Array_placement_group
  • Assembly_component
  • Assembly_group_component
  • Assembly_module_component
  • Assembly_module_macro_component
  • Bare_die_component
  • Cable_component
  • Interconnect_module_component
  • Interconnect_module_macro_component
  • Interface_component
  • Interfaced_group_component
  • Mating_connector_component
  • Physical_component
  • Physical_laminate_component
  • Routed_interconnect_component
  • Routed_physical_component
  • Thermal_component

EXPRESS specification:

*)
ENTITY component_definition
  SUPERTYPE OF (ONEOF (printed_component, packaged_component, routed_physical_component)
                ANDOR (thermal_component) ANDOR (cable_component))
  SUBTYPE OF (product_definition);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = 'planar projected shape')) 
       <= 1))) = 0;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = '3d bound volume shape')) 
       <= 1))) = 0;
  WR3: (NOT (SELF\product_definition.description = 
                                         'bare die component')) OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_BARE_DIE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_BARE_DIE'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) = 1);
  WR4: NOT(is_assembly_module_occurrence(SELF))
       OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN
       TYPEOF (ip.relating_product_definition)) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage') AND
       (ip.relating_product_definition\product_definition.name = 
          'assembly module')
       )) = 1);
  WR5: NOT(is_assembly_module_occurrence(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN 
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'assembly module component terminal'))) 
       >= 2)) >= 1);
  WR6: NOT(is_interconnect_module_occurrence(SELF))
       OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN
       TYPEOF (ip.relating_product_definition)) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage') AND
        (SELF\product_definition.name = 'interconnect module')
       )) = 1);
  WR7: (NOT (SELF\product_definition.description = 'mating connector')) OR
       ((('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF)) AND
       (SIZEOF (QUERY (doc <* 
   SELF\product_definition_with_associated_documents.documentation_ids |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EE_SPECIFICATION' IN 
       TYPEOF (doc))) = 1)) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pt_occ <* QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       sa\shape_aspect.description = 'part template occurrence') |
       SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (pt_occ,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |  
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description = 
       'printed connector template'))) = 1)) = 1))) = 0) OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (ip.relating_product_definition\product_definition.description =
       'packaged connector'))) = 1));
  WR8: (NOT (SELF\product_definition.description = 'mating connector')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name  = 
       'mating connector placement')) = 1)) = 1);
 WR9: (NOT (SELF\product_definition.description = 'mating connector')) OR
       ((SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') | 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr))) = 0) AND
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') | 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN TYPEOF(pdr))) = 0));
 WR10: SIZEOF(QUERY(pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
        NOT(NOT(pdr\product_definition_relationship.name = 'instantiated part')
        OR 
        (SELF.formation :=: 
        pdr.relating_product_definition.formation))))
        = 0;
 WR11: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       (sr_pdr.used_representation\representation.name = 
        'part template non planar 2d shape')
       OR
       (sr_pdr.used_representation\representation.name = 'non planar 2d shape')
       OR
       (sr_pdr.used_representation\representation.name = 
        'open shell based surface'))) 
       <= 1))) = 0;
 WR12: NOT(SELF.frame_of_reference.name = 'layout occurrence') OR
       ((SIZEOF (QUERY (prpc <* USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_DEFINITION' IN TYPEOF(SELF)));
 WR13: NOT((SELF.frame_of_reference.name = 'layout occurrence') 
          AND
       NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_COMPONENT' IN TYPEOF(SELF))) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ((SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT'] *
       TYPEOF (sa)) >= 1)) 
        )) = 1))) = 0);

 WR14: NOT(is_assembly_module_macro_occurrence(SELF))
       OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN
       TYPEOF (ip.relating_product_definition)) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design') AND
       (ip.relating_product_definition\product_definition.name = 
           'assembly module')
       )) = 1);
 WR15: NOT(is_interconnect_module_macro_occurrence(SELF))
        OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN
       TYPEOF (ip.relating_product_definition)) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design') AND
       (ip.relating_product_definition\product_definition.name = 
             'interconnect module')
        )) = 1);
 WR16: SIZEOF(QUERY(pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
        ((pdr\product_definition_relationship.name = 'instantiated definition')
        AND
        (NOT(SELF.formation :=:
        pdr.relating_product_definition.formation)))))
        = 0;
 WR17: (NOT (SELF\product_definition.description =
                                         'routed interconnect component')) OR
       ((SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) = 1) AND
       (SELF.frame_of_reference.name = 'physical occurrence'));
END_ENTITY; -- component_definition
(*

Formal propositions:

WR1: The component_definition shall have at most one shape_representation with a name of 'planar projected shape'.

WR2: The component_definition shall have at most one shape_representation with a name of '3d bound volume shape'.

WR3: If the component_definition has a description of 'bare die component', the component_definition shall be related, as the 'instantiated part', to exactly one bare_die, externally_defined_bare_die, or library_defined_bare_die; that is in the 'physical design usage' product_definition_context.

WR4: If the component_definition is in the 'physical occurrence' product_definition_context and has a name of 'assembly module', the component_definition shall be related, as the 'instantiated part', to exactly one physical_unit that is in the 'physical design usage' product_definition_context and has a name of 'assembly module'.

WR5: If the component_definition has a frame_of_reference name of 'physical occurrence' and it is associated with a product that is categorized as an 'assembly module', it shall have at least two shape_aspects that are component_terminals with a description of 'assembly module component terminal'.

WR6: If the component_definition is in the 'physical occurrence' product_definition_context and has a name of 'interconnect module', the component_definition shall be related, as the 'instantiated part', to exactly one physical_unit that is in the 'physical design usage' product_definition_context and has a name that is 'interconnect module'.

WR7: If the component_definition has a description of 'mating connector', it shall be of type product_definition_with_associated_documents that contains exactly one ee_specification, or it shall have exactly one shape_aspect with a description of 'part template occurrence' and is related to exactly one part_template_definition with a description of 'printed connector template' as the 'instantiated template', or it shall be related to exactly one packaged_part, externally_defined_packaged_part, or library_defined_packaged_part with a description of 'packaged connector' as the 'instantiated part'.

WR8: If the component_definition has a description of 'mating connector', it shall have exactly one shape_representation with a name of 'mating connector placement'

WR9: If the component_definition has a description of 'mating connector', it shall not participate in a next_assembly_usage_occurance.

WR10: If the component_definition is the related_product_definition of a product_definition_relationship that has a name of 'instantiated part', it shall have the same formation as the relating_product_definition.

WR11: The component_definition shall have at most one shape_representation with a name of 'part template non planar 2d shape' or of 'open shell based surface' or of 'non planar 2d shape'.

WR12: If the component_definition has a frame_of_reference with a name of 'layout occurrence', the component_definition shall be a definition of a product that is categorized as a 'template model'.

WR13: If the component_definition has a frame_of_reference with a name of 'layout occurrence', and if the component_definition is not a printed_component, the component_definition shall have exactly one component_shape_aspect.

WR14: If the component_definition is in the 'macro occurrence' product_definition_context and has a name of 'assembly module', the component_definition shall be related, by the 'design definition' relationship, to exactly one physical_unit that is in the 'physical design ' product_definition_context and has a name of 'assembly module'.

WR15: If the component_definition is in the 'macro occurrence' product_definition_context and has a name of 'interconnect module', the component_definition shall be related, by the 'design definition' relationship, to exactly one physical_unit that is in the 'physical design ' product_definition_context and has a name of 'interconnect module'.

WR16: If the component_definition is the related_product_definition of a product_definition_relationship that has a name of 'instantiated definition', it shall have the same formation as the relating_product_definition.

WR17: If the component_definition has a description of 'routed interconnect component', it shall be related to a physical_unit as an 'instantiated part' and shall be in the 'physical occurrence' context.

Informal propositions:

IP1: The assembly referenced by the assembly composition relationship that references this component definition shall be the same assembly as that referenced by the shape that is referenced by the component position that references that assembly_composition_relationship.

IP2: If the component_definition has a description of 'routed interconnect component', it shall have exactly one property_definition that is associated to exactly one representation.

5.2.3.1.64 component_feature

A component_feature is a shape_aspect. A component_feature implements the ARM concept of Component_feature when no ARM subtype is implemented.

EXPRESS specification:

*)
ENTITY component_feature
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature')) <= 1;
END_ENTITY; -- component_feature
(*

Formal propositions:

WR1: The component_feature shall be an aspect of the shape of a component_definition.

WR2: The component_feature shall be related to at most one shape_aspect as an 'instantiated feature'.

5.2.3.1.65 component_feature_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A component_feature_relationship is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Component_feature_relationship

EXPRESS specification:

*)
ENTITY component_feature_relationship
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\component_feature_relationship)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
END_ENTITY; -- component_feature_relationship 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The types of component_feature_relationship shall be only component_feature_relationship, shape_aspect, and shape_aspect_relationship.

WR3: The name attribute of the shape_aspect supertype shall be an empty string.

WR4: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

5.2.3.1.66 component_functional_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A component_function_terminal is a shape_aspect that implements the ARM concept of Functional_unit_terminal.

EXPRESS specification:

*)
ENTITY component_functional_terminal
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_FUNCTIONAL_UNIT' IN
       TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION'
       IN TYPEOF (it.relating_shape_aspect))) = 1;
  WR3: SIZEOF (QUERY (futba <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'functional unit terminal bus assignment') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BUS_STRUCTURAL_DEFINITION' IN 
       TYPEOF (futba.relating_property_definition.definition))) <= 1;
  WR4: SIZEOF (QUERY (futna <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'functional unit terminal node assignment') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'NETWORK_NODE_DEFINITION' IN 
       TYPEOF (futna.relating_property_definition.definition))) <= 1;
END_ENTITY; -- component_functional_terminal
(*

Formal propositions:

WR1: The component_functional_terminal shall be an aspect of the shape of a component_functional_unit.

WR2: The component_functional_terminal shall be related to exactly one functional_unit_terminal_definition as the 'instantiated terminal'.

WR3: The component_functional_terminal shall be related to at most one property of a bus_structural_definition as the 'functional unit terminal bus assignment'.

WR4: The component_functional_terminal shall be related to at most one property of a network_node_definition as the 'functional unit terminal node assignment'.

5.2.3.1.67 component_functional_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A component_functional_unit is a product_definition that implements the ARM concept of Functional_unit.

EXPRESS specification:

*)
ENTITY component_functional_unit
  SUBTYPE OF (product_definition);
WHERE
  WR1: SELF.frame_of_reference.name = 'functional occurrence';
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_FUNCTIONAL_TERMINAL' IN
       TYPEOF (sa))) >= 1)) >= 1;
  WR3: SIZEOF (QUERY (ifu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated functional unit') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (ifu.relating_product_definition))) = 1;
  WR4: SIZEOF (QUERY (nc <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'network composition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (nc.relating_product_definition)) AND
       (nc.relating_product_definition.frame_of_reference.name =
       'functional network design'))) = 1;
END_ENTITY; -- component_functional_unit
(*

Formal propositions:

WR1: The component_functional_unit shall have the context element named 'functional occurrence'.

WR2: The component_functional_unit shall have at least one component_functional_terminal.

WR3: The component_functional_unit shall be related to exactly one functional_unit as the 'instantiated functional unit'.

WR4: The component_functional_unit shall be related to exactly one functional_unit that has a context element with a name of 'functional network design' as the 'network composition'.

5.2.3.1.68 component_interface_terminal

A component_interface_terminal is a shape_aspect that implements the ARM concepts of:
  • Component_interface_terminal
  • Interconnect_component_interface_terminal
  • Packaged_connector_component_interface_terminal

EXPRESS specification:

*)
ENTITY component_interface_terminal
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\shape_aspect.description IN [
       'interconnect component interface terminal',
       'packaged connector component interface terminal'];
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN 
       TYPEOF (SELF.of_shape.definition);
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature')) <= 1;
  WR4: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'design usage')) <= 1;
  WR5: (NOT (SELF\shape_aspect.description = 
       'packaged connector component interface terminal')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERFACE_COMPONENT_DEFINITION' IN 
       TYPEOF (SELF.of_shape.definition));
  WR6: (NOT (SELF\shape_aspect.description = 
       'packaged connector component interface terminal')) OR
       (SELF.of_shape.definition\product_definition.
        frame_of_reference.name = 
       'physical occurrence');
  WR7: (NOT (SELF\shape_aspect.description = 
       'interconnect component interface terminal')) OR
       ((SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone'))) = 1)
       AND 
       NOT(SELF.of_shape.definition\product_definition.description 
       IN ['assembly module component', 'bare die component',
       'interconnect module component', 'laminate component',
       'packaged component']));
  WR8: (NOT (SELF\shape_aspect.description = 
       'packaged connector component interface terminal')) OR
       (SELF.product_definitional);
  WR9: (NOT (SELF\shape_aspect.description = 
       'packaged connector component interface terminal')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_COMPONENT' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.description = 
       'packaged connector component') AND
       (SELF.of_shape.definition\product_definition.
       frame_of_reference.name = 
       'physical occurrence'));
 WR10: (NOT (SELF\shape_aspect.description = 
       'packaged connector component interface terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)) AND
       (i_f.relating_shape_aspect\shape_aspect.description =
       'interface terminal'))) = 1);
END_ENTITY; -- component_interface_terminal
(*

Formal propositions:

WR1: The component_interface_terminal shall have a description of 'interconnect component interface terminal' or 'packaged connector component interface terminal'.

WR2: The component_interface_terminal shall be an aspect of the shape of a component_definition.

WR3: The component_interface_terminal shall be related to at most one shape_aspect as the 'instantiated feature'.

WR4: The component_interface_terminal shall relate to at most one shape_aspect to specify the 'design usage'.

WR5: If the name of the component_interface_terminal is 'interconnect component interface terminal', it shall be an aspect of the shape of an interface_component_definition.

WR6: If the name of the component_interface_terminal is 'interconnect component interface terminal', it shall be an aspect of the shape of a product_definition with a frame_of_reference name of 'physical occurrence'.

WR7: If the component_interface_terminal has a description of 'interconnect component interface terminal', the component_interface_terminal shall relate to exactly one shape_aspect that has a description of 'connection zone' and that is associated with a product that is categorized as an 'interconnect module' and does not have a description of 'assembly module component', 'bare die component', 'interconnect module component', 'laminate component', or 'packaged component'.

WR8: If the name of the component_interface_terminal is 'packaged connector component interface terminal', it shall lie on the boundary of the shape of the component_definition.

WR9: If the component_interface_terminal has a description of 'packaged connector component interface terminal', it shall be an aspect of the shape of a packaged_component that has a description of 'packaged connector component' and a frame_of_reference name of 'physical occurrence'.

WR10: If the component_interface_terminal has a description of 'packaged connector component interface terminal', the component_interface_terminal shall be related to exactly one packaged_part_terminal with a description of 'interface terminal' as the 'instantiated feature'.

5.2.3.1.69 component_location

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A component_location is a representation that implements the ARM concepts of:
  • Component_2d_edge_location
  • Component_2d_location
  • Component_2d_stacked_location
  • Component_3d_location

EXPRESS specification:

*)
ENTITY component_location
  SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'placement fixed') AND 
       ((it\descriptive_representation_item.description = 'true') OR
       (it\descriptive_representation_item.description = 'false')))) = 1;
  WR2: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)))) = 1;
  WR3: (NOT 
       (SELF.context_of_items\geometric_representation_context.
       coordinate_space_dimension
       = 2)) OR (SIZEOF (QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CARTESIAN_TRANSFORMATION_OPERATOR_2D' IN TYPEOF (it))) = 1);
  WR4: (NOT 
       (SELF.context_of_items\geometric_representation_context.
       coordinate_space_dimension
        = 3)) OR (SIZEOF (QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_3D' IN TYPEOF (it))) = 1);
  WR5: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM'
       IN TYPEOF (it)) 
       )) = 1;
  WR6: NOT (SIZEOF (QUERY (it <* SELF.items |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'CARTESIAN_TRANSFORMATION_OPERATOR_2D' IN TYPEOF (it))) = 1)
        OR
        (SIZEOF (QUERY (cto2d <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'CARTESIAN_TRANSFORMATION_OPERATOR_2D'
        IN TYPEOF (cto2d)) AND
        (SIZEOF (QUERY (mi <* USEDIN (cto2d,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM.MAPPING_TARGET') | (
       (SIZEOF (QUERY (cl <* USEDIN (mi,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') |(cl = SELF))) = 1)))) >= 1)
        )) = 1);
  WR7: NOT (SIZEOF (QUERY (it <* SELF.items |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'AXIS2_PLACEMENT_3D' IN TYPEOF (it))) = 1)
      OR
       (SIZEOF (QUERY (cto2d <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'AXIS2_PLACEMENT_3D'
        IN TYPEOF (cto2d)) AND
        (SIZEOF (QUERY (mi <* USEDIN (cto2d,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM.MAPPING_TARGET') | (
       (SIZEOF (QUERY (cl <* USEDIN (mi,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') |(cl = SELF))) = 1)))) = 1)
        )) = 1);
  WR8:NOT((SELF.context_of_items\geometric_representation_context.coordinate_space_dimension
         = 2) AND 
          (SELF.context_of_items.context_type = 'component surface') AND
        (( SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
       (pdr.name = 'mounting surface assembly joint') AND
       (pdr.definition.definition.relating_shape_aspect\shape_aspect.description =
         'interconnect module component surface feature') AND
       (SIZEOF(QUERY ( sar <* USEDIN (pdr.definition.definition.relating_shape_aspect,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        ((sar.relating_shape_aspect\shape_aspect.description =
         'interconnect module primary surface') OR
        (sar.relating_shape_aspect\shape_aspect.description =
         'interconnect module edge surface') OR
        (sar.relating_shape_aspect\shape_aspect.description =
         'interconnect module edge segment surface')))) = 1)
       )
       )) = 1)))
       OR
       (SIZEOF(QUERY (cto2d <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'CARTESIAN_TRANSFORMATION_OPERATOR_2D' IN TYPEOF (cto2d)) AND
      (cto2d_determinant_test(cto2d,1.0,0.001 )))) = 1);
  WR9:NOT((SELF.context_of_items\geometric_representation_context.coordinate_space_dimension
         = 2) AND 
          (SELF.context_of_items.context_type = 'component surface') AND
         (( SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
       (pdr.name = 'mounting surface assembly joint') AND
       (pdr.definition.definition.relating_shape_aspect\shape_aspect.description =
         'interconnect module component surface feature') AND
       (SIZEOF(QUERY ( sar <* USEDIN (pdr.definition.definition.relating_shape_aspect,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        sar.relating_shape_aspect\shape_aspect.description =
         'interconnect module secondary surface')) = 1)
       ))) = 1)))
       OR
    (SIZEOF(QUERY( cto2d <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'CARTESIAN_TRANSFORMATION_OPERATOR_2D' IN TYPEOF (cto2d)) AND
      (cto2d_determinant_test(cto2d,-1.0,0.001 )))) = 1);
  WR10: (NOT(is_laminate_component_location(SELF))) OR
      (SIZEOF(QUERY( pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
      (pdr.definition.definition.relating_shape_aspect\shape_aspect.description =
        'interconnect module component surface feature'))) = 0);
  WR11: (NOT(is_laminate_component_location(SELF) AND
         (SELF.context_of_items\geometric_representation_context.coordinate_space_dimension
         = 2)))
         OR
         (SIZEOF(QUERY (cto2d <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'CARTESIAN_TRANSFORMATION_OPERATOR_2D' IN TYPEOF (cto2d)) AND
      (cto2d_determinant_test(cto2d,1.0,0.001 )))) = 1);
  WR12: SIZEOF(QUERY( pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SHAPE_ASPECT' IN TYPEOF (pdr.definition.definition)) AND
       (pdr.definition.definition\shape_aspect.description =
        'interconnect module component surface feature'))) = 0;
  WR13: (NOT((SELF.context_of_items\geometric_representation_context.
        coordinate_space_dimension = 2) AND
        (SELF.context_of_items.context_type = 'component stacked')))
        OR 
      (SIZEOF(QUERY( pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
      (pdr.definition.definition.relating_shape_aspect\shape_aspect.description =
        'interconnect module component surface feature'))) = 0);
 WR14: NOT((SELF.context_of_items\geometric_representation_context.coordinate_space_dimension
         = 2)
          AND
         (SELF.context_of_items.context_type = 'component edge'))
       OR
        ((NOT(is_laminate_component_location(SELF)))
          AND
       (( SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
       (pdr.name = 'reference terminal assembly joint') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_TERMINAL' IN 
                      TYPEOF (pdr.definition.definition.related_shape_aspect)) 
         AND
       (pdr.definition.definition.related_shape_aspect\shape_aspect.description IN
       ['packaged component join terminal',
       'package terminal occurrence'])
         AND
       (SIZEOF(QUERY ( sar <* USEDIN 
                          (pdr.definition.definition.related_shape_aspect,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        (sar\shape_aspect_relationship.name = 'instantiated feature')
           AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRIMARY_REFERENCE_TERMINAL' IN TYPEOF (sar.relating_shape_aspect))
         )) = 1)
         AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_DEFINITION' IN
         TYPEOF (pdr.definition.definition.related_shape_aspect.of_shape.definition))
         AND
       (component_definition_located_by_component_location(SELF) =
                 pdr.definition.definition.related_shape_aspect.of_shape.definition) 
       ))) = 1))
         AND
       (( SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
       (pdr.name = 'mounting surface assembly joint') AND
       (pdr.definition.definition.relating_shape_aspect\shape_aspect.description =
         'interconnect module component surface feature') AND
       (SIZEOF(QUERY ( sar <* USEDIN (pdr.definition.definition.relating_shape_aspect,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        (sar.relating_shape_aspect\shape_aspect.description =
         'interconnect module edge surface') OR
        (sar.relating_shape_aspect\shape_aspect.description =
         'interconnect module edge segment surface'))) = 1)
         AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_MOUNTING_FEATURE' IN 
                      TYPEOF (pdr.definition.definition.related_shape_aspect)) 
         AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_DEFINITION' IN
         TYPEOF (pdr.definition.definition.related_shape_aspect.of_shape.definition))
         AND
       (component_definition_located_by_component_location(SELF) =
                 pdr.definition.definition.related_shape_aspect.of_shape.definition) 
       ))) = 1))
      );
 WR15: NOT((SELF.context_of_items\geometric_representation_context.coordinate_space_dimension
         = 2)
          AND
         (SELF.context_of_items.context_type = 'component stacked'))
       OR
        ((NOT(is_laminate_component_location(SELF)))
          AND
       (( SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition))
         AND
       ('mounting joint' = pdr.name)
         AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_MOUNTING_FEATURE' IN
                      TYPEOF (pdr.definition.definition.related_shape_aspect))
         AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_DEFINITION' IN
         TYPEOF (pdr.definition.definition.related_shape_aspect.of_shape.definition))
         AND
       (component_definition_located_by_component_location(SELF) :=:
                 pdr.definition.definition.related_shape_aspect.of_shape.definition)    
         AND
       (component_definition_located_by_component_location(SELF) :<>: 
                 pdr.definition.definition.relating_shape_aspect.of_shape.definition)    
       )
      )) = 1))
        );
 WR16: (NOT(is_interconnect_module_component_location(SELF))) OR
      (SIZEOF(QUERY( pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (pdr.definition.definition)) AND
      (pdr.definition.definition.relating_shape_aspect\shape_aspect.description =
        'interconnect module component surface feature'))) = 0);
 WR17: NOT((SELF.context_of_items\geometric_representation_context.coordinate_space_dimension
         = 2)
          AND
         (SELF.context_of_items.context_type = 'component stacked'))
       OR
       (SIZEOF(QUERY (cto2d <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'CARTESIAN_TRANSFORMATION_OPERATOR_2D' IN TYPEOF (cto2d)) AND
      ((cto2d_determinant_test(cto2d,1.0,0.001 )) OR
      (cto2d_determinant_test(cto2d,-1.0,0.001 )))
      )) = 1);
 WR18 : SIZEOF (QUERY (it <* SELF\representation.items| NOT
     (SIZEOF(
    ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
     'CARTESIAN_TRANSFORMATION_OPERATOR_2D', 
     'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
     'MAPPED_ITEM', 
     'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
     'DESCRIPTIVE_REPRESENTATION_ITEM', 
     'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
     'AXIS2_PLACEMENT_3D'] 
     * TYPEOF(it)) = 1 ))) = 0;
 WR19: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_3D'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'origin') 
       )) = 0;
 WR20: SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM'
       IN TYPEOF (it))
       AND NOT
       (((it\representation_item.name = 'component assembly 2d position')
        OR
       (it\representation_item.name = 'component assembly 3d position'))
       AND
       (it.mapping_source.mapping_origin\representation_item.name = 'origin')
       AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_2D' IN TYPEOF (it.mapping_source.mapping_origin))
        OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_3D' IN TYPEOF (it.mapping_source.mapping_origin))))
       )) = 0;
 WR21: SIZEOF(QUERY(pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.'
       + 'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.'
       + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' IN 
            TYPEOF(pdr.definition.definition))
       )) = 1;
END_ENTITY; -- component_location
(*

Formal propositions:

WR1: The component_location shall contain exactly one descriptive_representation_item with a name 'placement fixed' and the description of that descriptive_representation_item shall be either 'true' or 'false'.

WR2: The component_location shall contain exactly one descriptive_representation_item.

WR3: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2, it shall contain exactly one cartesian_transformation_operator_2d.

WR4: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 3, it shall contain exactly one axis2_placement_3d.

WR5: The component_location shall contain exactly one mapped_item.

WR6: The component_location that contains a cto2d shall contain exactly one mapped_item that specifies the cto2d.

WR7: The component_location that contains an a2p3d shall contain exactly one mapped_item that specifies the a2p3d.

WR8: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and if the component_location references a primary surface, edge surface, or edge segment surface, the determinant of the cto2d shall be +1.0 within a delta of 0.001.

WR9: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and if the component_location references a secondary surface, the determinant of the cto2d shall be -1.0 within a delta of 0.001.

WR10: If the component_location is the location of the implementation of the ARM concept of Laminate_component, it shall not be associated with a component_shape_aspect where the description is 'interconnect module component surface feature'.

WR11: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and is the location of the implementation of the ARM concept of Laminate_component, the determinant of the cto2d shall be +1.0 within a delta of 0.001.

WR12: The component_location shall not directly reference any component_shape_aspect where the description is 'interconnect module component surface feature'.

WR13: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and a context_type of 'component stacked', it shall not reference a component_shape_aspect where the description is 'interconnect module component surface feature'.

WR14: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and a context_type of 'component edge', it shall be associated with exactly one assembly_joint where the assembly_joint shall specify with the related_shape_aspect a component_terminal that is defined by a primary_reference_terminal. The component_location shall be associated with a component_shape_aspect where the description is 'interconnect module component surface feature' that is defined by an edge or edge_segment of an interconnect module. The component_terminal specified by the related_shape_aspect of the assembly_joint shall be a component_terminal of the component_definition being located by this component_location.

WR15: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and a context_type of 'component stacked', it shall be associated with exactly one assembly_joint where the assembly_joint shall specify with the related_shape_aspect a component_mounting_feature. The component_mounting_feature referenced by the assembly_joint related_shape_aspect shall be a component_mounting_feature of the component_definition being located by this component_location. The relating_shape_aspect of the assembly_joint shall specify a component_feature of a component_definition that is not being located by this component_location.

NOTE: The base component of the stack is not considered to be stacked. The assembly_joint referenced to support stacking are directed for stack traversal.

EXAMPLE: In this example, three bare die are vertically mounted on top of a substrate. The substrate is not considered to be part of the stack. The first bare die is not considered to be 'stacked'. The component_location references the substrate. The second bare die is considered to be 'stacked'. The component_location references an assembly_joint. The related_shape_aspect of the assembly_joint references the second bare die, and the relating_shape_aspect of the assembly_joint references the first bare die. The third bare die is considered to be 'stacked'. The component_location references a different assembly_joint. The related_shape_aspect of the assembly_joint references the third bare die, and the relating_shape_aspect of the assembly_joint references the second bare die.

WR16: If the component_location is the location of the implementation of the ARM concept of Interconnect_module_component, it shall not be associated with a component_shape_aspect where the description is 'interconnect module component surface feature'.

WR17: If the component_location has a geometric_representation_context with a coordinate_space_dimension value of 2 and a context_type of 'component stacked', the determinant of the cto2d shall be +1.0 or -1.0, in either case within a delta of 0.001.

WR18: The items in a component_location shall be a mapped_item, a descriptive_representation_item, a cartesian_transformation_operator_2d, or an axis2_placement_3d.

WR19: The axis2_placement_3d shall not have a name of 'origin'.

NOTE: This does not prohibit placing the component at the origin. It prohibits an axis2_placement_3d that is in the role of 'origin' from serving as the location.

WR20: The representation_item used as a mapping_source shall be either an axis2_placement_2d or shall be an axis2_placement_3d and it shall have a name of 'origin'.

WR21: The component_location shall be used by exactly one next_assembly_usage_occurrence.

5.2.3.1.70 component_mating_constraint_condition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A component_mating_constraint_condition is a shape_aspect that implements the ARM concept of Component_mating_constraint_condition.

EXPRESS specification:

*)
ENTITY component_mating_constraint_condition
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
END_ENTITY; -- component_mating_constraint_condition
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within the context of the product_definition_shape referenced as of_shape inherited from the shape_aspect supertype.

WR1: The component_mating_constraint_condition shall relate to at least one and no more than three assembly_joint to specify the 'constraining_joint'.

WR2: The component_mating_constraint_condition shall be related to at least one and no more than five representation_items to describe the 'degree of freedom' constrained.

WR3: The component_mating_constraint_condition shall not be any other type of shape_aspect.

5.2.3.1.71 component_mounting_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A component_mounting_feature is a shape_aspect. A component_mounting_feature implements the ARM concept of Component_mounting_feature

EXPRESS specification:

*)
ENTITY component_mounting_feature
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition);
  WR2: (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROBE_ACCESS_AREA',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND'] * 
       TYPEOF (SELF)) = 0);
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = 
       'planar projected shape')) 
       <= 1))) = 0;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = '3d bound volume shape')) 
       <= 1))) = 0;
  WR5: (NOT (SELF\shape_aspect.description IN ['component feature'])) OR
       (SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'design usage')) <= 1);
  WR6: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature')) <= 1;
END_ENTITY; -- component_mounting_feature
(*

Formal propositions:

WR1: The component_mounting_feature shall be an aspect of the shape of a component_definition.

WR2: The component_mounting_feature shall not be any of the following: inter_stratum_feature, probe_access_area, land.

WR3: The component_mounting_feature shall have at most one shape_representation with a name of 'planar projected shape'.

WR4: The component_mounting_feature shall have at most one shape_representation with a name of '3d bound volume shape'.

WR5: If the component_mounting_feature has a description of 'component feature', it shall relate to at most one shape_aspect to specify the 'design usage'.

WR6: The component_mounting_feature shall be related to at most one shape_aspect as an 'instantiated feature'.

5.2.3.1.72 component_shape_aspect

A component_shape_aspect is a shape_aspect. A component_shape_aspect implements the ARM concepts of:
  • Conductive_interconnect_element
  • Conductive_interconnect_element_with_pre_defined_transitions
  • Conductive_interconnect_element_with_user_defined_single_transition
  • Join_two_physical_connectivity_definition_supporting_printed_component
  • Laminate_component
  • Laminate_text_component
  • Laminate_text_string_component
  • Primary_stratum_indicator_symbol
  • Special_symbol_laminate_component
  • Stratum_feature_template_component
  • Thermal_component

EXPRESS specification:

*)
ENTITY component_shape_aspect
  SUPERTYPE OF (ONEOF (land, connected_area_component, inter_stratum_feature)
                ANDOR (thermal_component_shape_aspect))
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition);
  WR2: (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FIDUCIAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONNECTED_AREA_COMPONENT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'THERMAL_COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_REMOVAL_COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTEGRAL_SHIELD',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROBE_ACCESS_AREA',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND'] * 
       TYPEOF (SELF)) >= 1) OR
       (SELF\shape_aspect.description IN [
       'part template occurrence', 
       'laminate component', 
       'laminate text component', 
       'laminate text string component', 
       'conductive interconnect element with pre defined transitions', 
       'join 2 physical connectivity definition supporting',
     'conductive interconnect element with user defined single transition',
      'special symbol laminate component', 
       'primary stratum indicator symbol', 
       'stratum feature template component']);
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = 'planar projected shape')) 
       <= 1))) = 0;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'
       IN TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = '3d bound volume shape')) 
       <= 1))) = 0;
  WR5: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description IN ['laminate text component', 
       'laminate text string component', 
       'special symbol laminate component', 
       'primary stratum indicator symbol',  
       'stratum feature template component']) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.description = 
                  'laminate component')
       ));
  WR6: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description = 
       'laminate text component') OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEXT_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)))) = 1));
  WR7: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description IN
       ['stratum feature template component']) OR
       (SIZEOF (QUERY (sfi <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'stratum feature implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (sfi.relating_shape_aspect)))) = 1));
  WR8: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description IN
       ['conductive interconnect element with pre defined transitions', 
       'join 2 physical connectivity definition supporting',
       'conductive interconnect element with ' +
       'user defined single transition']) OR
       (SIZEOF (QUERY (cc <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed conductor') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (cc.related_shape_aspect)))) = 1));
(*
  WR9: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description IN
       ['conductive interconnect element with pre defined transitions', 
       'join 2 physical connectivity definition supporting',
       'conductive interconnect element with user ' +
       'defined single transition']) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF)|
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'conductive interconnect element terminal')))) >= 2));
*)
 WR10: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description IN
       ['special symbol laminate component',
       'primary stratum indicator symbol']) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.related_shape_aspect\shape_aspect.description =
       'special symbol part template')))) = 1));
 WR11: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description = 
       'stratum feature template component') OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'stratum feature template')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)))) <= 1));
 WR12: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description IN
       ['laminate text component']) OR
       (SIZEOF (QUERY (sfi <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'stratum feature implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (sfi.relating_shape_aspect)))) >= 1));
 WR13: NOT ((SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FIDUCIAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONNECTED_AREA_COMPONENT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'THERMAL_COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_REMOVAL_COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTEGRAL_SHIELD',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROBE_ACCESS_AREA',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND'] *
       TYPEOF (SELF)) >= 1) OR
       (SELF\shape_aspect.description IN [
       'laminate component',
       'laminate text component',
       'laminate text string component',
       'conductive interconnect element with pre defined transitions', 
       'join 2 physical connectivity definition supporting',
     'conductive interconnect element with user defined single transition',
      'special symbol laminate component',
       'primary stratum indicator symbol',
       'stratum feature template component'])) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\
        product_definition.frame_of_reference\
        application_context_element.name = 'layout occurrence'));
 WR14: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template')) <= 1;
 WR15: NOT(EXISTS(SELF\shape_aspect.description)) OR 
       (NOT (SELF\shape_aspect.description =
       'join 2 physical connectivity definition supporting') OR
       (SIZEOF ( QUERY (propd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (ri <* QUERY (propdr <* USEDIN (propd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       propdr\property_definition_relationship.name = 'requirement implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP' IN
       TYPEOF (ri.relating_property_definition.definition)) AND
       (ri.relating_property_definition.definition\shape_aspect_relationship.name =
       'ordered physical connectivity definition') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION'
       IN TYPEOF (ri.relating_property_definition.definition.
       related_shape_aspect)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION' IN TYPEOF
       (ri.relating_property_definition.definition.
       relating_shape_aspect)))) = 1))) = 1));
END_ENTITY; -- component_shape_aspect
(*

Formal propositions:

WR1: The component_shape_aspect shall be an aspect of the shape of a component_definition.

WR2: The component_shape_aspect shall be an inter_stratum_feature, probe_access_area, or land, or fiducial, or assembly_group_component_shape_aspect, or material_removal_component_shape_aspect, or integral_shield, or thermal_component_shape_aspect or connected_area_component, or it shall have a description of 'laminate component', 'laminate text component', 'laminate text string component', 'part template occurrence', 'conductive interconnect element with pre defined transitions', 'join 2 physical connectivity definition supporting', 'conductive interconnect element with user defined single transition', 'special symbol laminate component', 'primary stratum indicator symbol', or 'stratum feature template component'.

WR3: The component_shape_aspect shall have at most one shape_representation with a name of 'planar projected shape'.

WR4: The component_shape_aspect shall have at most one shape_representation with a name of '3d bound volume shape'.

WR5: If the component_shape_aspect has a description of 'laminate text component', 'laminate text string component', 'special symbol laminate component', 'primary stratum indicator symbol', or 'stratum feature template component', it shall be an aspect of the shape of a component_definition that is the definition of a product that is categorized as an 'interconnect module'.

WR6: If the component_shape_aspect has a description of 'laminate text component', the component_shape_aspect shall be related to exactly one part_text_template_definition.

WR7: If the component_shape_aspect has a description of 'stratum feature template component', the component_shape_aspect shall be related to exactly one stratum_feature as the 'stratum feature implementation'.

WR8: If the component_shape_aspect has a description of either 'conductive interconnect element with pre defined transitions', 'join 2 physical connectivity definition supporting' or 'conductive interconnect element with user defined single transition', the component_shape_aspect shall relate to exactly one stratum_feature to specify the 'composed conductor'.

WR9: If the component_shape_aspect has a description of either 'conductive interconnect element with pre defined transitions', 'join 2 physical connectivity definition supporting' or 'conductive interconnect element with user defined single transition', the component_shape_aspect shall relate to at least two component_terminal that have a description of 'conductive interconnect element terminal' to specify the 'associated component'.

WR10: If the component_shape_aspect has a description of either 'special symbol laminate component' or 'primary stratum indicator symbol', the component_shape_aspect shall be related to exactly one part_template_definition with a description of 'special symbol part template' as an 'instantiated template'.

WR11: If the component_shape_aspect has a description of 'stratum feature template component', the component_shape_aspect shall be related, as an 'instantiated template', to not more than one part_template_definition that has a description of 'stratum feature template' or to not more than one land_physical_template.

WR12: If the component_shape_aspect has a description of 'laminate text component', the component_shape_aspect shall be related to at least one stratum_feature as the 'stratum feature implementation'.

WR13: If the component_shape_aspect is an inter_stratum_feature, probe_access_area, or land, or fiducial, or assembly_group_component_shape_aspect, or material_removal_component_shape_aspect, or integral_shield, or thermal_component_shape_aspect, or connected_area_component, or if it has a description of 'laminate component', 'laminate text component', 'laminate text string component', 'conductive interconnect element with pre defined transitions', 'join 2 physical connectivity definition supporting', 'conductive interconnect element with user defined single transition', 'special symbol laminate component', 'primary stratum indicator symbol', or 'stratum feature template component', it shall be a shape_aspect for a component_definition with a frame_of_reference of 'layout occurrence'.

WR14: The component_shape_aspect shall be related to at most one shape_aspect as an 'instantiated template'.

WR15: If the component_shape_aspect has a description of 'join 2 physical connectivity definition supporting', the component_shape_aspect shall have exactly one property_definition that is related, as the 'requirement implementation', to exactly one property_definition that is the property of a shape_aspect_relationship that relates one physical_connectivity_definition to another physical_connectivity_definition as an 'ordered physical connectivity definition'.

Informal propositions:

IP1: If the component_shape_aspect has a description of 'conductive interconnect element with pre defined transitions', there shall be at least one shape_aspect_relationship with name of 'connected points' that relates the component_shape_aspect (as relating_shape_aspect) to one layer_connection_point_link (as related_shape_aspect).

IP2: If the component_shape_aspect has a description of 'conductive interconnect element with pre defined transitions' or 'conductive interconnect element with user defined single transition', each shape_aspect_relationship that uses the component_shape_aspect as its relating_shape_aspect and has a name of 'connected points' shall have a unique description.

IP3: The aggregation of design views referenced by the path in the ARM of stratum_feature_implementation.resident_stratum.assembly.assembly shall be the same aggregation of design views as that reference by the path in the ARM of assembly.assembly when the component_shape_aspect is an implementation of the ARM concept of Stratum_feature_template_component

5.2.3.1.73 component_terminal

A component_terminal is a shape_aspect that implements the ARM concepts of:
  • Assembly_module_component_terminal
  • Assembly_module_macro_component_join_terminal
  • Bare_die_component_terminal
  • Component_terminal
  • Component_termination_passage_join_terminal
  • Conductive_interconnect_element_terminal
  • Interconnect_component_join_terminal
  • Interconnect_module_component_terminal
  • Interconnect_module_macro_component_join_terminal
  • Land_join_terminal
  • Minimally_defined_component_terminal
  • Non_functional_land_join_terminal
  • Package_terminal_occurrence
  • Packaged_component_join_terminal
  • Printed_component_join_terminal
  • Via_terminal

EXPRESS specification:

*)
ENTITY component_terminal
  SUPERTYPE OF (ONEOF(assembly_module_macro_component_join_terminal,
        interconnect_module_macro_component_join_terminal))
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: (SELF\shape_aspect.description IN 
      ['assembly module component terminal', 
       'bare die component terminal', 
       'component termination passage join terminal', 
       'conductive interconnect element terminal', 
       'interconnect component join terminal', 
       'interconnect module component terminal', 'land join terminal', 
       'minimally defined component terminal',
       'non functional land join terminal', 
       'packaged component join terminal', 
       'printed component join terminal', 'package terminal occurrence',
       'via terminal']) OR
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_MACRO_COMPONENT_JOIN_TERMINAL' IN
       TYPEOF  (SELF)) OR
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_MODULE_MACRO_COMPONENT_JOIN_TERMINAL' IN
       TYPEOF  (SELF));
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF  (SELF.of_shape.definition);
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature')) <= 1;
  WR4: SIZEOF (QUERY (at <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated terminals') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION' IN
       TYPEOF (at.relating_shape_aspect))) <= 1;
  WR5: SIZEOF (QUERY (cr <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connectivity requirement') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_NETWORK' IN
       TYPEOF (cr.relating_shape_aspect))) <= 1;
  WR6: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'design usage')) <= 1;
  WR7: (NOT (SELF\shape_aspect.description IN 
       ['assembly module component terminal', 
       'bare die component terminal', 'package terminal occurrence', 
       'packaged component join terminal', 
       'printed component join terminal'])) OR
       (SELF.product_definitional);
  WR8: (NOT (SELF\shape_aspect.description = 
       'assembly module component terminal')) OR
       ((SELF.of_shape.definition.frame_of_reference.name =
       'physical occurrence') AND
       (EXISTS(SELF.of_shape.definition\product_definition.name)) AND
       (NOT(EXISTS(SELF.of_shape.definition\product_definition.name)) OR
       (SELF.of_shape.definition\product_definition.name =
       'assembly module'))
       );
  WR9: (NOT (SELF\shape_aspect.description = 
       'assembly module component terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)))) = 1);
 WR10: (NOT (SELF\shape_aspect.description = 
       'bare die component terminal')) OR
       (SELF.of_shape.definition\product_definition.description = 
       'bare die component');
 WR11: (NOT (SELF\shape_aspect.description = 
       'bare die component terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)))) = 1);
(*
 WR12: (NOT (SELF\shape_aspect.description = 
       'component termination passage join terminal')) OR
       (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_PASSAGE' IN
       TYPEOF (associated_component(SELF))) AND
       (associated_component(SELF).description =
       'component termination passage'));
*)
 WR13: (NOT (SELF\shape_aspect.description = 
       'component termination passage join terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       i_f.relating_shape_aspect\shape_aspect.description =
       'component termination passage template join terminal')) = 1);
(*
  WR14: (NOT (SELF\shape_aspect.description = 
        'conductive interconnect element terminal')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (associated_component(SELF)) AND
       ((associated_component(SELF).description =
       'conductive interconnect element with pre defined transitions') OR
       (associated_component(SELF).description =
   'conductive interconnect element with user defined single transition')
       ));
*)
 WR15: (NOT (SELF\shape_aspect.description IN
       ['conductive interconnect element terminal',
       'interconnect component join terminal',
       'printed component join terminal'])) OR
       (SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar.related_shape_aspect\shape_aspect.description =
       'connection zone')) <= 1);
 WR16: (NOT (SELF\shape_aspect.description =
       'interconnect module component terminal')) OR
   ((SELF.of_shape.definition\product_definition.frame_of_reference.name =
       'physical occurrence') AND
       (EXISTS(SELF.of_shape.definition\product_definition.name)) AND
       (NOT(EXISTS(SELF.of_shape.definition\product_definition.name)) OR
       (SELF.of_shape.definition\product_definition.name =
       'interconnect module'))
       );

 WR17: (NOT (SELF\shape_aspect.description =
       'interconnect module component terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_MODULE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)
       )) = 1);
 WR18: (NOT (SELF\shape_aspect.description IN
       ['land join terminal', 'non functional land join terminal'])) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_TEMPLATE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)) AND
       (TRUE)))) = 1);
(*
 WR19: (NOT (SELF\shape_aspect.description = 'land join terminal')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN
       TYPEOF (associated_component(SELF)));
*)
 WR20: (NOT (SELF\shape_aspect.description = 
       'minimally defined terminal')) OR
       (SIZEOF (QUERY (pdr<* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'part terminal external reference')) = 1);
(*
 WR21: (NOT (SELF\shape_aspect.description = 
       'non functional land join terminal')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN
       TYPEOF (associated_component(SELF))) AND
       (associated_component(SELF).description IN
       ['non functional land',
       'via dependent non functional land',
       'via and contact size dependent non functional land',
       'component termination passage dependent non functional land',
       'contact size dependent non functional land',
       'component termination passage and contact size ' +
       'dependent non functional land',
       'unsupported passage dependent non functional land'])))) = 1);
*)
 WR22: (NOT (SELF\shape_aspect.description = 
       'package terminal occurrence')) OR
       (SIZEOF (QUERY (ud <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'usage definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_TERMINAL' IN
       TYPEOF (ud.relating_shape_aspect)))) = 1);
 WR23: (NOT (SELF\shape_aspect.description IN 
       ['package terminal occurrence',
       'packaged component join terminal'])) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_COMPONENT' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.
        frame_of_reference.name = 
       'physical occurrence'));
 WR24: (NOT (SELF\shape_aspect.description = 
       'packaged component join terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)) AND
       (i_f.relating_shape_aspect\shape_aspect.description =
       'join terminal'))) = 1);
 WR25: (NOT (SELF\shape_aspect.description = 
       'packaged component join terminal')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2)) <= 2)) <= 1)) <= 1); 
 WR26: (NOT (SELF\shape_aspect.description = 
       'packaged component join terminal')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (lmwu <* QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) |
       lmwu\representation_item.name = 'maximum wire length')) <= 1)) <= 1)) <= 1);
 WR27: (NOT (SELF\shape_aspect.description = 
       'packaged component join terminal')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (lmwu <* QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) |
       lmwu\representation_item.name = 'minimum wire length')) <= 1)) <= 1)) <= 1); 
 WR28: (NOT (SELF\shape_aspect.description = 
       'printed component join terminal')) OR
       ((SELF.of_shape.definition\product_definition.
       frame_of_reference.name =
       'layout occurrence') AND
       (SELF.of_shape.definition\product_definition.
       name = 'interconnect module')
       );
 WR29: (NOT (SELF\shape_aspect.description = 
       'printed component join terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)) AND
       (i_f.relating_shape_aspect\shape_aspect.description =
       'join terminal'))) = 1);
 WR30: (NOT (SELF\shape_aspect.description = 
       'printed component join terminal')) OR
       (SIZEOF (QUERY (i <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       pdr\shape_aspect_relationship.name = 'implementation') |
       ((SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT'] *
       TYPEOF (i.relating_shape_aspect)) >= 1) AND
       (i.relating_shape_aspect\shape_aspect.description = 
                        'stratum feature template component'))
       )) = 1);
(*
 WR31: (NOT (SELF\shape_aspect.description = 'via terminal')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_PASSAGE' IN
       TYPEOF (associated_component(SELF))) AND
       (associated_component(SELF).description IN
       ['buried via', 'interfacial connection',
       'bonded conductive base blind via',
       'non conductive base blind via',
       'plated conductive base blind via'])))) = 1);
*)
 WR32: (NOT (SELF\shape_aspect.description = 'via terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       i_f.relating_shape_aspect\shape_aspect.description =
       'via template terminal')) = 1);
 WR33: (NOT (SELF\shape_aspect.description =
       'interconnect component join terminal')) OR
       ((SELF.of_shape.definition\product_definition.
       frame_of_reference.name =
       'physical occurrence') AND
       NOT(SELF.of_shape.definition\product_definition.description 
       IN ['assembly module component', 'bare die component', 
       'interconnect module component', 'laminate component',
       'packaged component']));
 WR34: SIZEOF(QUERY(pd <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') | SIZEOF(QUERY(pdr <* USEDIN(pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
       SIZEOF(QUERY(dri <* pdr.used_representation.items |
       (dri\representation_item.name = 'global swappable') AND 
       (dri\descriptive_representation_item.description IN ['true', 'false']))) = 1)) = 1)) <= 1;
 WR35: SIZEOF(QUERY(pd <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') | SIZEOF(QUERY(pdr <* USEDIN(pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
       SIZEOF(QUERY(dri <* pdr.used_representation.items |
       (dri\representation_item.name = 'local swappable') AND 
       (dri\descriptive_representation_item.description IN ['true', 'false']))) = 1)) = 1)) <= 1;
 WR36: SIZEOF(QUERY(pd <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') | SIZEOF(QUERY(pdr <* USEDIN(pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') | 
       SIZEOF(QUERY(dri <* pdr.used_representation.items | dri\representation_item.name = 
       'swap code'
       )) = 1)) = 1)) <= 1;
END_ENTITY; -- component_terminal
(*

Formal propositions:

WR1: The component_terminal shall have a description of 'assembly module component terminal', 'bare die component terminal', 'component termination passage join terminal', 'conductive interconnect element terminal', 'interconnect component join terminal', 'interconnect module component terminal', 'land join terminal', 'minimally defined component terminal', 'non functional land join terminal', 'packaged component join terminal', 'printed component join terminal', 'package terminal occurrence', or 'via terminal' or shall be an assembly_module_macro_component_join_terminal or shall be an interconnect_module_macro_component_join_terminal.

WR2: The component_terminal shall be an aspect of the shape of a component_definition.

WR3: The component_terminal shall be related to at most one shape_aspect as the 'instantiated feature'.

WR4: The component_terminal shall be related to at most one physical_connectivity_definition as 'associated terminals'.

WR5: The component_terminal shall be related to at most one physical_network as the 'connectivity requirement'.

WR6: The component_terminal shall relate to at most one shape_aspect to specify the 'design usage'.

WR7: If the component_terminal has a description of 'assembly module component terminal', 'bare die component terminal', 'package terminal occurrence', 'packaged component join terminal', or 'printed component join terminal', it shall lie on the boundary of the shape.

WR8: If the component_terminal has a description of 'assembly module component terminal', it shall be an aspect of the shape of a component_definition that has a frame_of_reference name of 'physical occurrence' or it shall be an assembly_module_macro_component_join_terminal and it shall be an aspect of the shape of a component_definition that is associated with a product that is a 'assembly module'.

WR9: If the component_terminal has a description of 'assembly module component terminal', the component_terminal shall be related to exactly one assembly_module_terminal as an 'instantiated feature'.

WR10: If the component_terminal has a description of 'bare die component terminal', it shall be an aspect of the shape of a product_definition that has a description of 'bare die component'.

WR11: If the component_terminal has a description of 'bare die component terminal', the component_terminal shall be related to exactly one bare_die_terminal as the 'instantiated feature'.

WR12: If the component_terminal has a description of 'component termination passage join terminal', the component_terminal shall be related to exactly one plated_passage with a description of 'component termination passage' as the 'associated component'.

WR13: If the component_terminal has a description of 'component termination passage join terminal', the component_terminal shall be related to exactly one shape_aspect with a description of 'component termination passage template join terminal' as the 'instantiated feature'.

WR14: If the component_terminal has a description of 'conductive interconnect element terminal', the component_terminal shall be related to exactly one component_shape_aspect with a description of either 'conductive interconnect element with pre defined transitions' or 'conductive interconnect element with user defined single transition' as the 'associated component'.

WR15: If the component_terminal has a description of 'conductive interconnect element terminal', 'interconnect component join terminal' or 'printed component join terminal', the component_terminal shall relate to zero or one shape_aspect that has a name of 'connection zone'.

WR16: If the component_terminal has a description of 'interconnect module component terminal', it shall be an aspect of the shape of a component_definition that has a frame_of_reference name of 'physical occurrence' or it shall be an interconnect_module_macro_component_join_terminal and it shall be an aspect of the shape of a component_definition that is associated with a product that is a 'interconnect module'.

WR17: If the component_terminal has a description of 'interconnect module component terminal', the component_terminal shall be related to exactly one interconnect_module_terminal as the 'instantiated feature' where the interconnect_module_terminal is on a product_definition of a product that is an 'interconnect module'.

WR18: If the component_terminal has a description of either 'land join terminal' or 'non functional land join terminal', the component_terminal shall be related to exactly one land_template_terminal as the 'instantiated feature'.

WR19: If the component_terminal has a description of 'land join terminal', the component_terminal shall be related to exactly one land as the 'associated component'.

WR20: If the component_terminal has a description of 'minimally defined component terminal' the component_terminal shall be the definition of exactly one property_definition_representation with a used_representation.name of 'part terminal external reference'.

WR21: If the component_terminal has a description of 'non functional land join terminal', the component_terminal shall be related to exactly one land that has a description of 'non functional land', 'via dependent non functional land', 'via and contact size dependent non functional land', 'component termination passage dependent non functional land', 'contact size dependent non functional land', 'component termination passage and contact size dependent non functional land', or 'unsupported passage dependent non functional land' as the 'associated component'.

WR22: If the component_terminal has a description of 'package terminal occurrence', the component_terminal shall be related to exactly one package_terminal as the 'usage definition'.

WR23: If the component_terminal has a description of 'package terminal occurrence', or 'packaged component join terminal' it shall be an aspect of the shape of a packaged_component that has a frame_of_reference name of 'physical occurrence'.

WR24: If the component_terminal has a description of 'packaged component join terminal', the component_terminal shall be related to exactly one packaged_part_terminal with a description of 'join terminal' as the 'instantiated feature'.

WR25: If the component_terminal has a description of 'packaged component join terminal', it shall have at most one property_definition that has at most one representation that contains at most two length_measure_with_units.

WR26: If the component_terminal has a description of 'packaged component join terminal', it shall have at most one property_definition that has at most one representation that contains at most one length_measure_with_unit with a name of 'maximum wire length'.

WR27: If the component_terminal has a description of 'packaged component join terminal', it shall have at most one property_definition that has at most one representation that contains at most one length_measure_with_unit with a name of 'minimum wire length'.

WR28: If the component_terminal has a description of 'printed component join terminal', it shall be an aspect of the shape of a component_definition that has a frame_of_reference name of 'layout occurrence' and that is associated with a product that is an 'interconnect module'.

WR29: If the component_terminal has a description of 'printed component join terminal', the component_terminal shall be related to exactly one printed_part_template_terminal with a description of 'join terminal' as the 'instantiated feature'.

WR30: If the component_terminal has a description of 'printed component join terminal', the component_terminal shall be related, as an 'implementation', to exactly one component_shape_aspect with a description of stratum_feature_template_component.

WR31: If the component_terminal has a description of 'via terminal', the component_terminal shall be related to exactly one plated_passage that has a description of 'buried via', 'interfacial connection', 'bonded conductive base blind via', 'non conductive base blind via', or 'plated conductive base blind via' as the 'associated component'.

WR32: If the component_terminal has a description of 'via terminal', the component_terminal shall be related to exactly one shape_aspect with a description of 'via template terminal' as the 'instantiated feature'.

WR33: If the component_terminal has a description of 'interconnect component join terminal', it shall be an aspect of the shape of a component_definition that has a frame_of_reference name of 'physical occurrence' and that is associated with a product that does not have a description of 'assembly module component', 'bare die component', 'interconnect module component', 'laminate component', or 'packaged component'.

WR34: The component_terminal shall be the definition for at most one property_definition that is the definition of a property_definition_representation that has a used representation that has an item that is a descriptive_representation_item with a name of 'global swappable' and a description of 'true' or 'false'.

WR35: The component_terminal shall be the definition for at most one property_definition that is the definition of a property_definition_representation that has a used representation that has an item that is a descriptive_representation_item with a name of 'local swappable' and a description of 'true' or 'false'.

WR36: The component_terminal shall be the definition for at most one property_definition that is the definition of a property_definition_representation that has a used representation that has an item that is a descriptive_representation_item with a name of 'swap code'.

Informal propositions:

IP1: If the component_terminal has a description of either 'land join terminal' or 'non functional land join terminal', the component_terminal shall be associated with the stratum referenced by the stratum_surface.

5.2.3.1.74 composite_array_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A composite_array_shape_aspect is a composite_shape_aspect that implements the ARM concept of Part_array_feature .

EXPRESS specification:

*)
ENTITY composite_array_shape_aspect
  SUPERTYPE OF (ONEOF( linear_composite_array_shape_aspect,
                 rectangular_composite_array_shape_aspect))
  SUBTYPE OF (composite_shape_aspect);
END_ENTITY; -- composite_array_shape_aspect
(*

5.2.3.1.75 composite_array_shape_aspect_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An composite_array_shape_aspect_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Part_feature_placement_link

EXPRESS specification:

*)
ENTITY composite_array_shape_aspect_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\composite_array_shape_aspect_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) = 1;
END_ENTITY; -- composite_array_shape_aspect_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The composite_array_shape_aspect_link shall relate to a shape_aspect in the related_shape_aspect.

WR3: The composite_array_shape_aspect_link shall relate to a shape_aspect in the relating_shape_aspect.

WR4: The types of composite_array_shape_aspect_link shall be only composite_array_shape_aspect_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: Each composite_array_shape_aspect_link shall be referenced exactly once by a shape_aspect_relationship related_shape_aspect.

5.2.3.1.76 composite_group_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A composite_group_shape_aspect is a composite_shape_aspect that implements the ARM concept of Composite_group_shape_element.

EXPRESS specification:

*)
ENTITY composite_group_shape_aspect
  SUBTYPE OF (composite_shape_aspect);
END_ENTITY; -- composite_group_shape_aspect
(*

5.2.3.1.77 composite_signal_property_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A composite_signal_property_relationship is a property_definition_relationship that implements the ARM concept of Composite_signal_property_relationship

EXPRESS specification:

*)
ENTITY composite_signal_property_relationship
  SUBTYPE OF (property_definition, property_definition_relationship);
WHERE
  WR1: SELF\property_definition_relationship.related_property_definition.definition :<>:
       SELF\property_definition_relationship.relating_property_definition.definition;
  WR2: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\property_definition_relationship ||
       SELF\composite_signal_property_relationship || SELF\property_definition)) = 0;
  WR3: SELF\property_definition_relationship.related_property_definition.name =
       'signal property';
  WR4: SELF\property_definition_relationship.relating_property_definition.name =
       'composite signal property';
  WR5: SELF\property_definition.name = '';
  WR6: SELF\property_definition.description = '';
  WR7: SELF\property_definition_relationship.name = '';
  WR8: SELF\property_definition_relationship.description = '';
  WR9: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CHARACTERIZED_OBJECT' IN TYPEOF(SELF\property_definition.definition)) AND
       (SELF\property_definition.definition.description = 'aggregate operation');
 WR10: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNAL_DEFINITION' IN TYPEOF(SELF\property_definition.definition);
END_ENTITY; -- composite_signal_property_relationship
(*

Formal propositions:

WR1: The composite_signal_property_relationship shall not relate to the same property_definition definition through the related and relating attributes.

WR2: The composite_signal_property_relationship shall not be any other subtype of property_definition_relationship or property_definition.

WR3: The composite_signal_property_relationship shall reference only a 'signal property' through the related attribute.

WR4: The composite_signal_property_relationship shall reference only a 'composite signal property' through the relating attribute.

WR5: The composite_signal_property_relationship name inherited from property_definition shall be blank.

WR6: The composite_signal_property_relationship description inherited from property_definition shall be blank.

WR7: The composite_signal_property_relationship name inherited from property_definition_relationship shall be blank.

WR8: The composite_signal_property_relationship description inherited from property_definition_relationship shall be blank.

WR9: The composite_signal_property_relationship shall reference exactly one characterized_object that has a description of 'aggregate opertion'.

WR10: The composite_signal_property_relationship shall reference exactly one characterized_object that is also an external_definition.

5.2.3.1.78 composite_unit_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A composite_unit_shape_aspect is a composite_shape_aspect that implements the ARM concept of Composite_unit_shape_element.

EXPRESS specification:

*)
ENTITY composite_unit_shape_aspect
  SUBTYPE OF (composite_shape_aspect);
END_ENTITY; -- composite_unit_shape_aspect
(*

5.2.3.1.79 concentricity_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A concentricity_tolerance is a geometric_tolerance_with_specified_datum_system that implements the ARM concept of Concentricity_and_coaxiality_tolerance.

EXPRESS specification:

*)
ENTITY concentricity_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'concentricity';
END_ENTITY; -- concentricity_tolerance
(*

Formal propositions:

WR1: The name for the concentricity_tolerance shall be 'concentricity'.

Informal propositions:

IP1: The toleranced_shape_aspect of the concentricity_tolerance shall either be a centre_of_symmetry with a description of either 'axis' or 'point'; or a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry and have the same description, either 'axis' or 'point'.

IP2: The concentricity_tolerance shall have exactly one physical_unit_datum in its referenced datum_system.

IP3: If the toleranced_shape_aspect of the concentricity_tolerance is either a centre_of_symmetry with a description of 'point', or a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'point'; the physical_unit_datum of the datum_system shall have a description of 'point'.

IP4: If the toleranced_shape_aspect of the concentricity_tolerance is either a centre_of_symmetry with a description of 'axis', or a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'axis'; the physical_unit_datum of the datum_system shall have a description of 'axis'.

IP5: The tolerance_zone_boundary of the concentricity_tolerance shall have a description of 'circular or cylindrical or spherical'.

5.2.3.1.80 conductance_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A conductance_measure_with_unit is a measure_with_unit that implements the ARM concept of Conductance_measure_with_unit.

EXPRESS specification:

*)
ENTITY conductance_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\conductance_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = siemens;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- conductance_measure_with_unit
(*

Formal propositions:

WR1: The conductance_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The conductance_measure_with_unit shall reference an si_unit with the name of siemens.

WR3: The unit_component shall be an si_unit.

5.2.3.1.81 conductive_interconnect_element_terminal_link

A conductive_interconnect_element_terminal_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Conductive_interconnect_element_terminal_link.

EXPRESS specification:

*)
ENTITY conductive_interconnect_element_terminal_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\conductive_interconnect_element_terminal_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF\shape_aspect.of_shape.definition);
  WR8: SELF\shape_aspect_relationship.related_shape_aspect.description = 'conductive interconnect element terminal';
  WR9: SELF\shape_aspect_relationship.relating_shape_aspect.description = 'conductive interconnect element terminal';
  WR10: SELF\shape_aspect.of_shape.definition\product_definition.description = 'laminate component';
END_ENTITY; -- conductive_interconnect_element_terminal_link 
(* 

Formal propositions:

WR1: The related point shall not be the relating point.

WR2: The conductive_interconnect_element_terminal_link shall relate to only a conductive_interconnect_element_terminal in the related_shape_aspect.

WR3: The conductive_interconnect_element_terminal_link shall relate to only a conductive_interconnect_element_terminal in the relating_shape_aspect.

WR4: The types of conductive_interconnect_element_terminal_link shall be only conductive_interconnect_element_terminal_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: The shape_aspect supertype shall reference a component_definition

WR8: The related shape_aspect description shall be a 'conductive interconnect element terminal'.

WR9: The relating shape_aspect description shall be a 'conductive interconnect element terminal'.

WR10: The associated product_definition description shall be a 'laminate component'.

5.2.3.1.82 connected_area_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A connected_area_component is a component_shape_aspect that implements the ARM concept of Connected_area_component

EXPRESS specification:

*)
ENTITY connected_area_component
 SUBTYPE OF (component_shape_aspect);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN  
       TYPEOF (SELF.of_shape.definition)) AND 
       (SIZEOF (QUERY (prpc <* 
       USEDIN (SELF.of_shape.definition.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1);
  WR2: SIZEOF (QUERY (sfi <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'stratum feature implementation') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (sfi.relating_shape_aspect))) = 1;
 WR3: SIZEOF (QUERY (sfi <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated layer connection point') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYER_CONNECTION_POINT' IN
       TYPEOF (sfi.relating_shape_aspect))) >= 1;
 WR4: SELF\shape_aspect.description = 'stratum feature template component';
 WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\component_shape_aspect||
       SELF\connected_area_component)) = 0;
END_ENTITY; -- connected_area_component
(*

Formal propositions:

WR1: The connected_area_component shall be an aspect of the shape of a component_definition that is the definition of a product that is categorized as an 'template module'.

WR2: The connected_area_component shall be related to exactly one stratum_feature as a 'stratum feature implementation'.

WR3: The connected_area_component shall be related to at least one layer_connection_point as an 'associated layer connection point'.

WR4: The connected_area_component shall have a description of 'stratum feature template component'.

WR5: The connected_area_component shall not be a complex instance other than with its direct supertypes.

5.2.3.1.83 connection_zone_based_assembly_joint

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A connection_zone_based_assembly_joint is an assembly_joint that includes the identification of the connection zones that are to be mated in addition to the specific features that are to be mated. A connection_zone_based_assembly_joint implements the ARM concept of Connection_zone_based_assembly_joint.

EXPRESS specification:

*)
ENTITY connection_zone_based_assembly_joint
  SUBTYPE OF (assembly_joint);
WHERE
  WR1: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'zone 1')) = 1;
  WR2: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'zone 2')) = 1;
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar.relating_shape_aspect\shape_aspect.description = 'connection zone')) = 2;

END_ENTITY; -- connection_zone_based_assembly_joint
(*

Formal propositions:

WR1: The connection_zone_based_assembly_joint shall be related to exactly one shape_aspect as 'zone 1' by a shape_aspect_relationship.related_shape_aspect.

WR2: The connection_zone_based_assembly_joint shall be related to exactly one shape_aspect as 'zone 2' by a shape_aspect_relationship.relating_shape_aspect.

WR3: The connection_zone_based_assembly_joint shall be related to only shape_aspects with a description of 'connection_zone'.

5.2.3.1.84 connection_zone_based_fabrication_joint

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A connection_zone_based_fabrication_joint is an fabrication_joint that includes the identification of the connection zones that are to be mated in addition to the specific features that are to be mated. A connection_zone_based_fabrication_joint implements the ARM concept of Connection_zone_based_fabrication_joint.

EXPRESS specification:

*)
ENTITY connection_zone_based_fabrication_joint
  SUBTYPE OF (fabrication_joint);
WHERE
  WR1: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'zone 1')) = 1;
  WR2: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'zone 2')) = 1;
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar.relating_shape_aspect\shape_aspect.description = 'connection zone')) = 2;

END_ENTITY; -- connection_zone_based_fabrication_joint
(*

Formal propositions:

WR1: The connection_zone_based_fabrication_joint shall be related to exactly one shape_aspect as 'zone 1' by a shape_aspect_relationship.related_shape_aspect.

WR2: The connection_zone_based_fabrication_joint shall be related to exactly one shape_aspect as 'zone 2' by a shape_aspect_relationship.relating_shape_aspect.

WR3: The connection_zone_based_fabrication_joint shall be related to only shape_aspects with a description of 'connection_zone'.

5.2.3.1.85 connection_zone_interface_plane_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A connection_zone_interface_plane_relationship is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Connection_zone_interface_plane_relationship.

EXPRESS specification:

*)
ENTITY connection_zone_interface_plane_relationship
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.name;
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect_relationship ||
       SELF\connection_zone_interface_plane_relationship ||
       SELF\shape_aspect)) = 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE' IN 
       TYPEOF(SELF\shape_aspect_relationship.relating_shape_aspect);
  WR3: SELF\shape_aspect_relationship.relating_shape_aspect\shape_aspect.description = 
      'plane';
  WR4: SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.description = 
      'connection zone';
  WR5: SELF\shape_aspect_relationship.description IN ['area', 'edge']; 
  WR6: SELF\shape_aspect.of_shape = SELF\shape_aspect_relationship.related_shape_aspect.of_shape;
  WR7: SELF\shape_aspect.of_shape = SELF\shape_aspect_relationship.relating_shape_aspect.of_shape;
  WR8: SIZEOF (QUERY (dz <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'derived zone') |
       dz.related_shape_aspect\shape_aspect.description = 'connection zone')) = 1;
END_ENTITY; -- connection_zone_interface_plane_relationship
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique.

WR1: A connection_zone_interface_plane_relationship shall not be any other type of shape_aspect_relationship or any other type of shape_aspect.

WR2: A connection_zone_interface_plane_relationship shall relate to a seating_plane.

WR3: A connection_zone_interface_plane_relationship shall relate to a seating_plane, with a name of 'plane'.

WR4: A connection_zone_interface_plane_relationship shall relate to a shape_aspect with a description of 'connection zone'.

WR5: A connection_zone_interface_plane_relationship shall have a description of 'area' or 'edge'.

WR6: A connection_zone_interface_plane_relationship shall have the same of_shape through the shape_aspect supertype and through the related_shape_aspect in the shape_aspect_relationship supertype.

WR7: A connection_zone_interface_plane_relationship shall have the same of_shape through the shape_aspect supertype and through the relating_shape_aspect in the shape_aspect_relationship supertype.

WR8: A connection_zone_interface_plane_relationship shall be related to one shape_aspect with a description of 'connection zone' as the 'derived zone'.

5.2.3.1.86 connection_zone_map_identification

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A connection_zone_map_identification is a shape_aspect and a representation_relationship that implements the ARM concept of Connection_zone_map_identification

EXPRESS specification:

*)
ENTITY connection_zone_map_identification
  SUBTYPE OF (shape_aspect,representation_relationship);
WHERE
  WR1: SELF\representation_relationship.rep_2 :<>:
       SELF\representation_relationship.rep_1;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'USAGE_VIEW_CONNECTION_ZONE_TERMINAL_SHAPE_RELATIONSHIP' IN 
	TYPEOF(SELF\representation_relationship.rep_1);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'USAGE_VIEW_CONNECTION_ZONE_TERMINAL_SHAPE_RELATIONSHIP' IN 
	TYPEOF(SELF\representation_relationship.rep_2);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\representation_relationship ||
       SELF\connection_zone_map_identification)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\representation_relationship.name = '';
  WR7: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FOOTPRINT_DEFINITION' IN TYPEOF(SELF.of_shape.definition);
END_ENTITY; -- connection_zone_map_identification 
(* 

Formal propositions:

WR1: The related zone shall not be the relating zone.

WR2: The connection_zone_map_identification shall relate to only a usage_view_connection_zone_terminal_shape_relationship in the rep_1.

WR3: The connection_zone_map_identification shall relate to only a usage_view_connection_zone_terminal_shape_relationship in the rep_2.

WR4: The types of connection_zone_map_identification shall be only connection_zone_map_identification, shape_aspect, and representation_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the representation_relationship supertype shall be an empty string.

WR7: Each connection_zone_map_identification shall be a shape_aspect for a footprint_definition.

5.2.3.1.87 coordinated_representation_item

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A coordinated_representation_item is a representation and a representation_item that implements the ARM concepts of:
  • Plus_minus_tolerance_characteristic
  • Statistical_tolerance_characteristic
  • Symmetrical_tolerance_characteristic
  • Tolerance_characteristic

EXPRESS specification:

*)
ENTITY coordinated_representation_item
  SUBTYPE OF (representation, representation_item);
WHERE
  WR1: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       SIZEOF (USEDIN (pdr, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DATA_ENVIRONMENT.ELEMENTS')) <= 1)) <= 1;
  WR2: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1;
  WR3: (NOT (SELF\representation_item.name = 'tolerance')) OR
       (SIZEOF (QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN 
       TYPEOF (it))) >= 1); 
  WR4: (NOT (SELF\representation_item.name = 'plus minus tolerance')) OR
       (SIZEOF (QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN 
       TYPEOF (it))) = 3); 
  WR5: (NOT (SELF\representation_item.name = 'symmetrical tolerance')) OR
       (SIZEOF (QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN 
       TYPEOF (it))) = 2); 
  WR6: (NOT (SELF\representation_item.name = 'plus minus tolerance'))
       OR
       (
        (SIZEOF (QUERY (it <* SELF.items
         | ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
            'MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) 
           AND 
            (it\representation_item.name = 'basic value'))
        ) = 1)
       AND
        (SIZEOF (QUERY (it <* SELF.items
         | ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
            'MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) 
           AND 
            (it\representation_item.name = 'plus value'))
        ) = 1)
       AND
        (SIZEOF (QUERY (it <* SELF.items 
         | ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
            'MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) 
           AND 
            (it\representation_item.name = 'minus value'))
        ) = 1)
       );

  WR7: (NOT (SELF\representation_item.name = 'symmetrical tolerance')) OR
       ((SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN 
       TYPEOF (it)) AND (it\representation_item.name = 'basic value'))
                        ) = 1)
       AND
       (SIZEOF (QUERY (it <* SELF.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN 
       TYPEOF (it)) AND ( it\representation_item.name = 'deviation value'))
                        ) = 1)
       ); 
END_ENTITY; -- coordinated_representation_item
(*

Formal propositions:

WR1: The coordinated_representation_item shall represent at most one property that is an element of at most one data_environment.

WR2: The coordinated_representation_item shall be referenced by exactly one document.

WR3: If the coordinated_representation_item has a representation_item name of 'tolerance', it shall contain at least one measure_representation_item.

WR4: If the coordinated_representation_item has a representation_item name of 'plus minus tolerance', it shall contain exactly three measure_representation_items.

WR5: If the coordinated_representation_item has a representation_item name of 'symmetrical tolerance', it shall contain exactly two measure_representation_items.

WR6: If the coordinated_representation_item has a representation_item name of 'plus minus tolerance', the three contained measure_representation_items shall have their name attribute satisfied by 'basic value', 'plus value', and 'minus value'.

WR7: If the coordinated_representation_item has a representation_item name of 'symmetrical tolerance', the two contained measure_representation_items shall have their name attribute satisfied by 'basic value' and 'deviation value'.

Informal propositions:

IP1: If the coordinated_representation_item has a representation_item name of 'plus minus tolerance', each contained measure_representation_items shall have the same unit_components for the dimensions attribute.

IP2: If the coordinated_representation_item has a representation_item name of 'plus minus tolerance', the measure_representation_item with a name attribute of 'minus value' shall have a value_component less then that of the measure_representation_item with a name attribute of 'basic value' which shall have a value_component less then that of the measure_representation_item with a name attribute of 'plus_value'.

5.2.3.1.88 csg_2d_shape_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A csg_2d_shape_representation is a shape_representation that implements the ARM concept of Area_2d_shape_definition. A csg_2d_shape_representation is a two-dimensional shape_representation that represents the shape of a product using constructive solid geometry operations and techniques. The solid objects may be either 2D primitives, or half-space 2D solids.

EXPRESS specification:

*)
ENTITY csg_2d_shape_representation
  SUBTYPE OF (shape_representation);
   WHERE 
 WR1: SELF.context_of_items\
  geometric_representation_context.coordinate_space_dimension = 2;

 WR2 : SIZEOF (QUERY (it <* SELF.items| NOT
     (SIZEOF(['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.CSG_SOLID', 
     'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.MAPPED_ITEM', 
     'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.AXIS2_PLACEMENT_2D'] 
     * TYPEOF(it)) = 1 ))) = 0;

 WR3: SIZEOF(QUERY ( it <* SELF.items | 
    (SIZEOF(['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.CSG_SOLID']
	* TYPEOF(it)) = 1) 
	OR 
	(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.MAPPED_ITEM' 
	IN TYPEOF(it)) AND
	('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
	'CSG_2D_SHAPE_REPRESENTATION' 
	  IN TYPEOF(it\mapped_item.mapping_source.mapped_representation))) 
       )) >= 1;

 WR4: SIZEOF(QUERY ( it <* SELF.items | 
     (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.MAPPED_ITEM' 
     IN TYPEOF(it)) AND (NOT (( 
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
      'CSG_2D_SHAPE_REPRESENTATION') 
      IN TYPEOF(it\mapped_item.mapping_source.mapped_representation)))) )) = 0;
 WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_representation ||
      SELF\csg_2d_shape_representation || SELF\representation)) = 0;
END_ENTITY; -- csg_2d_shape_representation 
(*

Formal propositions:

WR1: The geometric_representation_context of the csg_2d_shape_representation shall have a coordinate_space_dimension equal to two.

WR2: The items in a csg_2d_shape_representation shall be a csg_solid, mapped_item, or an axis2_placement_2d.

WR3: At least one of the items in a csg_2d_shape_representation shall be a csg_solid, or a mapped_item with a mapped_representation of the mapping_source attribute of the type csg_2d_shape_representation.

WR4: If a mapped_item is in the items set then the mapped_representation of the mapping_source attribute shall be a csg_2d_shape_representation.

WR5: The csg_2d_shape_representation shall not be another type of shape_representation.

NOTE: Since WR1 requires a coordinate_space_dimension equal to two, the leaves of the tree_root_expression in csg_solid can be built by only half_space_2d or primitive_2d elements.

5.2.3.1.89 curve_dimension

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A curve_dimension is a dimensional_size that implements the ARM concept of Curve_dimension.

EXPRESS specification:

*)
ENTITY curve_dimension
  SUBTYPE OF (dimensional_size);
WHERE
  WR1: SELF\dimensional_size.name <> 'angular' ;
END_ENTITY; -- curve_dimension
(*

Formal propositions:

WR1: The name of the curve_dimension shall not be 'angular'.

5.2.3.1.90 cutout_edge_segment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A cutout_edge_segment is an inter_stratum_feature and a shape_aspect_relationship that implements the ARM concept of Cutout_edge_segment.

EXPRESS specification:

*)
ENTITY cutout_edge_segment
  SUPERTYPE OF (plated_cutout_edge_segment)
  SUBTYPE OF (inter_stratum_feature,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect.description IN [
       'plated cutout edge segment',
       'cutout edge segment'];
  WR2: SIZEOF (QUERY (cc <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed cutout') |(
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE' IN
       TYPEOF (cc.relating_shape_aspect)) AND 
	(cc.relating_shape_aspect\shape_aspect.description  IN ['cutout',
         'physical connectivity interrupting cutout', 'plated cutout']))
       )) = 1;
  WR3: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect));
  WR4: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect));
  WR5: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
END_ENTITY; -- cutout_edge_segment
(*

Formal propositions:

WR1: The cutout_edge_segment shall have a name of 'cutout edge segment' and a relating_shape_aspect_description of 'cutout', 'physical connectivity interrupting cutout', or 'plated cutout'. 'plated cutout edge segment'.

WR2: The cutout_edge_segment shall relate to an edge_segment_vertex in the relating role.

WR3: The cutout_edge_segment shall relate to an edge_segment_vertex in the related role.

WR4: The relating_shape_aspectand the related_shape_aspect shall not be the same instance of shatp_aspect.

Informal propositions:

IP1: The associated passage_technology shall have descriptive_representation_item with a description of 'true'.

5.2.3.1.91 data_set_representation_item

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A data_set_representation_item is a compound_representation_item that implements the ARM concept of Characteristic_data_set.

EXPRESS specification:

*)
ENTITY data_set_representation_item
  SUBTYPE OF (compound_representation_item);
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS')) > 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SET_REPRESENTATION_ITEM'
       IN TYPEOF(SELF\compound_representation_item.item_element);
END_ENTITY; -- data_set_representation_item
(*

Formal propositions:

WR1: The data_set_representation_item shall be referenced by exactly one applied_document_reference.

WR2: The item_element attribute shall be a list_representation_item.

5.2.3.1.92 datum_difference

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_difference is a subtype of shape_aspect and shape_aspect_relationship that implements the ARM concept of Datum_difference

EXPRESS specification:

*)
ENTITY datum_difference
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT_DATUM' IN TYPEOF
       (SELF\shape_aspect_relationship.relating_shape_aspect)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT_DATUM' IN TYPEOF
       (SELF\shape_aspect_relationship.related_shape_aspect));
  WR2: SELF\shape_aspect.name = SELF\shape_aspect_relationship.name;
  WR3: SELF\shape_aspect.description = SELF\shape_aspect_relationship.
       description;
  WR4: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
  WR5: SIZEOF (TYPEOF(SELF) - (TYPEOF(SELF\shape_aspect || 
       SELF\shape_aspect_relationship || SELF\datum_difference))) = 0;
END_ENTITY; -- datum_difference
(*

Formal propositions:

WR1: The datum_difference shall be applied to only physical_unit_datum.

WR2: The datum_difference name attribute inherited shall be identical in each supertypes.

WR3: The datum_difference description attribute inherited shall be identical in each supertypes.

WR4: The datum_difference shall be applied to only different physical_unit_datum.

WR5: The datum_difference shall not be in a complex instance of other types of shape_aspect or shape_aspect_relationship.

5.2.3.1.93 datum_difference_analytical_model_port_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_difference_analytical_model_port_assignment is a subtype of property_definition_representation that implements the ARM concept of Datum_difference_analytical_model_port_assignment

EXPRESS specification:

*)
ENTITY datum_difference_analytical_model_port_assignment
  SUBTYPE OF (property_definition_representation);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL_PORT' IN TYPEOF
       (SELF\property_definition_representation.used_representation)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DATUM_DIFFERENCE' IN TYPEOF
       (SELF\property_definition_representation.definition));
  WR2: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\property_definition_representation ||
       SELF\datum_difference_analytical_model_port_assignment)) = 0;
END_ENTITY; -- datum_difference_analytical_model_port_assignment
(*

Formal propositions:

WR1: The datum_difference_analytical_model_port_assignment shall be related to only datum_difference and analytical_model_port.

WR2: The datum_difference_analytical_model_port_assignment shall not be in a complex instance of other types of property_definition_representation.

5.2.3.1.94 datum_difference_based_characteristic

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_difference_based_characteristic is a representation_item that implements the ARM concept of Datum_difference_based_characteristic

EXPRESS specification:

*)
ENTITY datum_difference_based_characteristic
  SUBTYPE OF (representation_item);
WHERE
  WR1: SIZEOF(QUERY ( r <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'REPRESENTATION.ITEMS') | (SIZEOF(QUERY (prd2 <*
        QUERY ( prd <* USEDIN(r,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') | 
       ((('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' 
       + 'PROPERTY_DEFINITION_REPRESENTATION') IN TYPEOF(prd)) AND 
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PROPERTY_DEFINITION') IN TYPEOF(prd\
       property_definition_representation.definition))) ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DATUM_DIFFERENCE' IN
      TYPEOF(prd2\property_definition_representation.definition\
                               property_definition.definition))))
            = 1) )) 
               = 1;
END_ENTITY; -- datum_difference_based_characteristic
(*

Formal propositions:

WR1: The datum_difference_based_characteristic shall be related to exactly one datum_difference.

5.2.3.1.95 datum_difference_based_model_parameter

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_difference_based_model_parameter is a model_parameter that implements the ARM concept of Datum_difference_based_model_parameter.

EXPRESS specification:

*)
ENTITY datum_difference_based_model_parameter
  SUBTYPE OF (model_parameter);
WHERE
      wr1: SIZEOF(QUERY ( r <* USEDIN(SELF,
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
               'REPRESENTATION.ITEMS') | (SIZEOF(QUERY (prd2 <*
                QUERY ( prd <* USEDIN(r,
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
               'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') | 
               ((('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' 
               + 'PROPERTY_DEFINITION_REPRESENTATION') IN TYPEOF(prd)) AND 
               (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                'PROPERTY_DEFINITION') IN TYPEOF(prd\
               property_definition_representation.definition))) ) |
               ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                'DATUM_DIFFERENCE' IN
               TYPEOF(prd2\property_definition_representation.definition\
                                        property_definition.definition))))
                = 1) )) 
               = 1;
END_ENTITY; -- datum_difference_based_model_parameter
(*

Formal propositions:

WR1: The datum_difference_based_model_parameter shall be related to exactly one datum_difference.

5.2.3.1.96 datum_difference_functional_unit_usage_view_terminal_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_difference_functional_unit_usage_view_terminal_assignment is a shape_aspect_relationship that implements the ARM concept of Datum_difference_functional_unit_usage_view_terminal_assignment.

EXPRESS specification:

*)
ENTITY datum_difference_functional_unit_usage_view_terminal_assignment
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect_relationship ||
SELF\datum_difference_functional_unit_usage_view_terminal_assignment)) 
                                                              = 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION' IN TYPEOF 
        (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DATUM_DIFFERENCE' IN TYPEOF 
        (SELF\shape_aspect_relationship.relating_shape_aspect);
END_ENTITY; -- datum_difference_functional_unit_-
--             usage_view_terminal_assignment
(*

Formal propositions:

WR1: The datum_difference_functional_unit_usage_view_terminal_assignment shall not participate in a complex instance with other than the shape_aspect_relationship supertype.

WR2: The datum_difference_functional_unit_usage_view_terminal_assignment shall be related to exactly one functional_unit_terminal_definition.

WR3: The datum_difference_functional_unit_usage_view_terminal_assignment shall be related to exactly one datum_difference.

5.2.3.1.97 datum_reference_frame

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_reference_frame is a shape_aspect that implements the ARM concept of Datum_reference_frame.

EXPRESS specification:

*)
ENTITY datum_reference_frame
  SUBTYPE OF (shape_aspect);
WHERE
 WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
      SELF\datum_reference_frame)) = 0;
 WR2: SELF\shape_aspect.product_definitional = False;
 WR3: (SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference axis') | 
      (pud.related_shape_aspect\shape_aspect.description = 'axis') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PHYSICAL_UNIT_DATUM' IN TYPEOF (pud.related_shape_aspect)))) <= 3);
 WR4: (SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference plane') | 
      (pud.related_shape_aspect\shape_aspect.description = 'plane') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PHYSICAL_UNIT_DATUM' IN TYPEOF (pud.related_shape_aspect)))) <= 3);
 WR5: (SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference origin') | 
      (pud.related_shape_aspect\shape_aspect.description = 'point') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PHYSICAL_UNIT_DATUM' IN TYPEOF (pud.related_shape_aspect)))) <= 1);
 WR6: (SIZEOF (QUERY (ds <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'established datum reference frame') | 
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'DATUM_SYSTEM' IN TYPEOF (ds.related_shape_aspect))) >= 1);

 WR7: (SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference axis') | 
      (pud.related_shape_aspect\shape_aspect.description = 'axis') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PHYSICAL_UNIT_DATUM' IN TYPEOF (pud.related_shape_aspect))))
      + SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference plane') | 
      (pud.related_shape_aspect\shape_aspect.description = 'plane') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PHYSICAL_UNIT_DATUM' IN TYPEOF (pud.related_shape_aspect))))
      + SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference origin') | 
      (pud.related_shape_aspect\shape_aspect.description = 'point') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PHYSICAL_UNIT_DATUM' IN TYPEOF (pud.related_shape_aspect)))) >= 1);
 WR8: (SIZEOF (QUERY (pud <* QUERY ( sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 'reference origin') | 
      (pud.related_shape_aspect\shape_aspect.description <> 'point') OR 
      (NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'DERIVED_SHAPE_ASPECT' IN TYPEOF (pud.related_shape_aspect)))
       )) = 0);
END_ENTITY; -- datum_reference_frame
(*

Formal propositions:

WR1: The datum_reference_frame shall not be a complex instance, except with the supertype shape_aspect.

WR2: The datum_reference_frame shall not lie on the boundary of the shape of the product.

WR3: The datum_reference_frame shall relate to at most three physical_unit_datum that have a description of 'axis' to specify the 'reference axis'.

WR4: The datum_reference_frame shall relate to at most three physical_unit_datum that have a description of 'plane' to specify the 'reference plane'.

WR5: The datum_reference_frame shall relate to at most one physical_unit_datum that has a description of 'point' to specify the 'reference origin'.

WR6: The datum_reference_frame shall be related to at least one datum_system as the 'established datum reference frame'.

WR7: The datum_reference_frame shall relate to at least one physical_unit_datum that has a description of 'axis' or 'plane' or 'point' to specify the 'reference axis' or 'reference plane' or 'reference origin', respectively.

WR8: Each 'reference origin' related to the datum_reference_frame shall also be a derived_shape_aspect that has a description of 'point'.

Informal propositions:

IP1: Each reference_axis shall be specified to be either a constituent of, or normal to each of the reference_planes and this specification shall be consistent with the mutually perpendicular reference_planes.

5.2.3.1.98 datum_system

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_system is a shape_aspect that implements the ARM concept of Datum_system.

EXPRESS specification:

*)
ENTITY datum_system
  SUBTYPE OF (shape_aspect);
WHERE
 WR1: SELF\shape_aspect.product_definitional = False;
 WR2: (SIZEOF (QUERY (sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 
                  'established datum reference frame')) = 1);
 WR3: (SIZEOF (QUERY (sar <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
      sar\shape_aspect_relationship.name = 
                       'datum usage in datum system')) >= 1);
 WR4: (SIZEOF (QUERY (pd <* USEDIN(SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
      'PROPERTY_DEFINITION.DEFINITION') |
      (pd\property_definition.description = 
               'datum system property with material conditions')
      OR (pd\property_definition.description = 
      'datum system property without material conditions'))) = 1);
END_ENTITY; -- datum_system
(*

Formal propositions:

WR1: The datum_system shall not lie on the boundary of the shape of the product.

WR2: The datum_system shall relate to at exactly one shape_aspect to specify the 'established datum reference frame'.

WR3: The datum_system shall relate to at least one shape_aspect to specify the 'datum usage in datum system'.

WR4: The datum_system shall have exactly one property_definition that has the description of either 'datum system property with material conditions' or 'datum system property without material conditions'.

Informal propositions:

IP1: Any particular physical_unit_datum_feature shall be used no more than one time to establish the datum_system.

IP2: Any particular physical_unit_datum_target shall be used no more than one time to establish the datum_system.

5.2.3.1.99 datum_system_based_dimensional_location

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A datum_system_based_dimensional_location is a dimensional_location that implements the ARM concept of Dimension_location_with_specified_datum_system.

EXPRESS specification:

*)
ENTITY datum_system_based_dimensional_location
  SUBTYPE OF (dimensional_location);
END_ENTITY; -- datum_system_based_dimensional_location
(*

Informal propositions:

IP1: The datum_system_based_dimensional_location shall have exactly one property_definition with a description of 'dimensional location property', and that property_definition shall relate to a property_definition with a description of 'datum system property without material conditions' to specify the 'referenced datum system property'.

5.2.3.1.100 delete_design_object_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A delete_design_object_assignment is an action_assignment that implements the ARM concept of Delete_design_object_management_relationship.

EXPRESS specification:

*)
ENTITY delete_design_object_assignment
   SUBTYPE OF (action_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(it <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(it))
        AND (it\product_definition_relationship.name = 'design object deletion'))) = 1;
END_ENTITY; -- delete_design_object_assignment
(*

Formal propositions:

WR1: The delete_design_object_assignment shall have exactly one item that is a product_definition_relationship with a name of 'design object deletion'.

Informal propositions:

IP1: The delete_design_object_assignment shall have exactly one item that is a managed_design_object that is not a product_definition_relationship with a name of 'design object deletion' and that is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design.

5.2.3.1.101 delete_design_object_request_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A delete_design_object_request_assignment is an action_request_assignment that implements the ARM concepts of Change_request and Delete_design_object_management_relationship .

EXPRESS specification:

*)
ENTITY delete_design_object_request_assignment
   SUBTYPE OF (action_request_assignment);
     items : SET [1:?] OF managed_design_object;
WHERE
   WR1: SIZEOF(QUERY(it <* SELF.items |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(it))
        AND (it\product_definition_relationship.name = 'design object deletion'))) = 1;
END_ENTITY; -- delete_design_object_request_assignment
(*

Formal propositions:

WR1: The delete_design_object_request_assignment shall have exactly one item that is a product_definition_relationship with a name of 'design object deletion'.

Informal propositions:

IP1: The delete_design_object_request_assignment shall have exactly one item that is a managed_design_object that is not a product_definition_relationship with a name of 'design object deletion' and that is not referenced by another product_definition_relationship with a name of 'design object addition', 'design object change', or 'design object deletion' in the same design.

5.2.3.1.102 dependent_material_removal_feature_template

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A dependent_material_removal_feature_template is a part_template_definition that implements the ARM concept of Dependent_material_removal_feature_template

EXPRESS specification:

*)
ENTITY dependent_material_removal_feature_template
  SUBTYPE OF (part_template_definition);
WHERE
  WR1: SELF\shape_aspect.description = 'material removal feature template';
  WR2: SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (am.relating_shape_aspect)) AND
       (am.relating_shape_aspect.description IN
       ['default attachment size and component termination passage based',
       'default attachment size based',
       'default attachment size and via based',
       'default component termination passage based',
       'default via based',
       'default unsupported passage based']))
        )) = 1;
END_ENTITY; -- dependent_material_removal_feature_template
(*

Formal propositions:

WR1: The dependent_material_removal_feature_template shall have a description that is 'material removal feature template'.

WR2: The dependent_material_removal_feature_template shall be related to exactly one land_physical_template with a description of 'default attachment size and component termination passage based', or 'default attachment size based', or 'default attachment size and via based', or 'default component termination passage based', or 'default via based', or 'default unsupported passage based'.

5.2.3.1.103 design_layer_type_specific_padstack_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A design_layer_type_specific_padstack_definition is a product_definition that implements the ARM concepts of: Design_layer_type_specific_padstack_definition

EXPRESS specification:

*)
ENTITY design_layer_type_specific_padstack_definition 
 SUBTYPE OF (padstack_definition);
END_ENTITY; -- design_layer_type_specific_padstack_definition 
(*

5.2.3.1.104 design_make_from_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A design_make_from_relationship is a product_definition_relationship that implements the ARM concept of Engineering_make_from.

EXPRESS specification:

*)
ENTITY design_make_from_relationship
  SUBTYPE OF (product_definition_relationship);
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT'] *
       TYPEOF (SELF.relating_product_definition)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT'] *
       TYPEOF (SELF.related_product_definition)) = 1;
  WR3: SIZEOF( QUERY(pds <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_SHAPE' IN TYPEOF(pds)))) = 0;
END_ENTITY; -- design_make_from_relationship
(*

Formal propositions:

WR1: The design_make_from_relationship shall reference a physical_unit or a functional_unit as its relating_product_definition.

WR2: The design_make_from_relationship shall reference a physical_unit or a functional_unit as its related_product_definition.

WR3: The design_make_from_relationship shall not be the definition of a product_definition_shape.

5.2.3.1.105 design_object

A design_object is a characterized_object that implements the ARM concept of Layout_spacing_requirement_occurrence.

EXPRESS specification:

*)
ENTITY design_object
  SUBTYPE OF (characterized_object);
END_ENTITY; -- design_object
(*

5.2.3.1.106 device_terminal_map

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A device_terminal_map is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Device_terminal_map.

EXPRESS specification:

*)
ENTITY device_terminal_map
 SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.related_shape_aspect,
       SELF\shape_aspect_relationship.relating_shape_aspect;
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL'
       IN TYPEOF (SELF.relating_shape_aspect);
END_ENTITY; -- device_terminal_map
(*

Formal propositions:

Formal propositions:

WR1: The combination of related_shape_aspect and relating_shape_aspect of shape_aspect_relationship shall be unique within a population of device_terminal_map.

WR1: The relating_shape_aspect shall be a packaged_part_terminal.

5.2.3.1.107 dimensional_location_with_direction

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A dimensional_location_with_direction is a dimensional_location that implements the ARM concept of Dimension_location_with_direction_vector.

EXPRESS specification:

*)
ENTITY dimensional_location_with_direction
  SUBTYPE OF (dimensional_location);
WHERE
    wr1: SELF\shape_aspect_relationship.description = 'linear';
END_ENTITY; -- dimensional_location_with_direction
(*

Formal propositions:

WR1: The description of the dimensional_location_with_direction shall be 'linear'.

Informal propositions:

IP1: The dimensional_location_with_direction shall have exactly one property_definition with a description of 'dimensional location property', and that property_definition either shall be represented by a representation that contains a placement with a name of 'orientation' or shall relate to a property_definition with a description of 'datum based vector orientation' to specify the 'measurement orientation'.

IP2: If the dimensional_location_with_direction has a property_definition with a description of 'dimensional location property' and that property_definition relates to a property_definition with a description of 'datum based vector orientation' to specify the 'measurement orientation', the combination of the shape_aspect specified as the related_shape_aspect, the shape_aspect specified as the relating_shape_aspect, and the property_definition with a description of 'datum based vector orientation' shall be unique.

IP3: If the dimensional_location_with_direction has a property_definition with a description of 'dimensional location property' and that property_definition is represented by a representation that contains a placement with a name of 'orientation', the combination of the shape_aspect specified as the related_shape_aspect, the shape_aspect specified as the relating_shape_aspect, and the placement with a name of 'orientation' shall be unique.

5.2.3.1.108 dimensional_size_property

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A dimensional_size_property is a dimensional_size and a property_definition.

EXPRESS specification:

*)
ENTITY dimensional_size_property
  SUBTYPE OF (dimensional_size, property_definition);
END_ENTITY; -- dimensional_size_property
(*

5.2.3.1.109 directed_dimensional_location

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A directed_dimensional_location is a dimensional_location that implements the ARM concept of Dimensional_location where the ARM attribute "directed" of that concept has a value of TRUE.

EXPRESS specification:

*)
ENTITY directed_dimensional_location
  SUBTYPE OF (dimensional_location);
END_ENTITY; -- directed_dimensional_location
(*

5.2.3.1.110 discrete_shield

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A discrete_shield is a component_definition that implements the ARM concept of Shield when the shield is comprised of a component or components that are manufactured separately from the interconnect component.

EXPRESS specification:

*)
ENTITY discrete_shield
  SUBTYPE OF (component_definition);
WHERE
  WR1: SELF.frame_of_reference.name = 'physical occurrence';
  WR2: SIZEOF (QUERY (si <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'shielded item') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (si.relating_product_definition))) >= 1;
END_ENTITY; -- discrete_shield
(*

Formal propositions:

WR1: The discrete_shield shall have a frame_of_reference name of 'physical occurrence'.

WR2: The discrete_shield shall be related to at least one component_definition or at least one component_shape_aspect as the 'shielded item'.

5.2.3.1.111 document_identifier

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A document_identifier is a group that specifies an identifier qualified by a name for a document.

EXPRESS specification:

*)
ENTITY document_identifier
  SUBTYPE OF (group);
UNIQUE
  UR1: SELF\group.name, SELF\group.description;
WHERE
  WR1: SIZEOF (USEDIN(SELF,'')) = 1;
END_ENTITY; -- document_identifier
(*

Formal propositions:

Formal propositions:

WR1: The combination of name and description inherited from group shall be unique.

WR1: A document_identifier shall be referenced exactly once.

5.2.3.1.112 document_identifier_assignment

A document_identifier_assignment is a group_assignment that specifies one or more of document_identifier_assigned_item. If there are more than one, then the items are all revisions of the same drawing.

EXAMPLE: A schematic diagram may have a base identifier and each revision identification of that diagram differs from other revisions identification only in the document.description.

NOTE: Due to a constraint on document_identifier, no member of document_identifier may be referenced more than once, guaranteeing uniqueness of assigned_group.

EXPRESS specification:

*)
ENTITY document_identifier_assignment
 SUBTYPE OF (group_assignment);
   SELF\group_assignment.assigned_group : document_identifier;
     items : SET [1:?] OF document_identifier_assigned_item;
END_ENTITY; -- document_identifier_assignment
(*

5.2.3.1.113 dose_equivalent_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A dose_equivalent_measure_with_unit is a measure_with_unit that implements the ARM concept of Dose_equivalent_measure_with_unit.

EXPRESS specification:

*)
ENTITY dose_equivalent_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\dose_equivalent_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = sievert;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- dose_equivalent_measure_with_unit
(*

Formal propositions:

WR1: The dose_equivalent_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The dose_equivalent_measure_with_unit shall reference an si_unit with the name of sievert.

WR3: The unit_component shall be an si_unit.

5.2.3.1.114 edge_based_2d_wireframe_shape_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An edge_based_2d_wireframe_shape_representation is a shape_representation that implements the ARM concepts of Edge_based_2d_wireframe and Edge_based_wireframe.

EXPRESS specification:

*)
ENTITY edge_based_2d_wireframe_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1: SIZEOF (QUERY (it <* SELF\representation.items |
       NOT (SIZEOF (   
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_2D'] *
       TYPEOF (it)) = 1))) = 0;
  WR2: SIZEOF (QUERY (it <* SELF\representation.items |
       SIZEOF(['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM'] * 
       TYPEOF (it)) = 1)) >= 1;
  WR3: SIZEOF (QUERY (ebwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL' IN 
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (eb <* 
       ebwm\edge_based_wireframe_model.ebwm_boundary |
       NOT (SIZEOF (QUERY (edges <* eb.ces_edges |
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_CURVE'
       IN TYPEOF (edges)))) = 0))) = 0))) = 0;
  WR4: SIZEOF (QUERY (ebwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL' IN 
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (eb <* 
       ebwm\edge_based_wireframe_model.ebwm_boundary |
       NOT (SIZEOF (QUERY (pline_edges <* QUERY (edges <* eb.ces_edges |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'POLYLINE' IN
       TYPEOF (edges\edge_curve.edge_geometry)) |
       NOT (SIZEOF (pline_edges\edge_curve.edge_geometry\polyline.points) 
       > 2))) = 0))) = 0))) = 0;
  WR5: SIZEOF (QUERY (ebwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL' IN 
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (eb <* 
       ebwm\edge_based_wireframe_model.ebwm_boundary |
       NOT (SIZEOF (QUERY (edges <* eb.ces_edges |
       NOT (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_POINT' IN 
       TYPEOF (edges.edge_start)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_POINT' IN 
       TYPEOF (edges.edge_end))))) = 0))) = 0))) = 0;
  WR6: SIZEOF (QUERY (ebwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL' IN 
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (eb <*
       ebwm\edge_based_wireframe_model.ebwm_boundary |
       NOT (SIZEOF (QUERY (edges <* eb.ces_edges |
       NOT (valid_2d_wireframe_edge_curve
       (edges\edge_curve.edge_geometry,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN')))) 
       = 0))) = 0))) = 0;
  WR7: SIZEOF (QUERY (ebwm <* QUERY (it <* SELF\representation.items|
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL' IN 
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (eb <* 
       ebwm\edge_based_wireframe_model.ebwm_boundary |
       NOT (SIZEOF (QUERY (edges <* eb.ces_edges |
       NOT ((valid_wireframe_vertex_point
       (edges.edge_start\vertex_point.vertex_geometry)) AND
       (valid_wireframe_vertex_point
       (edges.edge_end\vertex_point.vertex_geometry))))) = 0))) = 0))) = 0;
  WR8: SIZEOF (QUERY (ebwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_WIREFRAME_MODEL' IN 
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (eb <* 
       ebwm\edge_based_wireframe_model.ebwm_boundary |
       NOT (SIZEOF (QUERY (con_edges <* QUERY (edges <* eb.ces_edges |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONIC'
       IN TYPEOF (edges\edge_curve.edge_geometry)) |
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_2D' IN
       TYPEOF (con_edges\edge_curve.edge_geometry\conic.position)))) 
       = 0))) = 0))) = 0;
  WR9: SIZEOF (QUERY (mi <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM' IN 
       TYPEOF (it)) |
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_BASED_2D_WIREFRAME_SHAPE_REPRESENTATION' IN
       TYPEOF (mi\mapped_item.mapping_source.mapped_representation)))) = 0;
  WR10: SELF\representation.
        context_of_items\geometric_representation_context.
        coordinate_space_dimension = 2;
END_ENTITY; -- edge_based_2d_wireframe_shape_representation
(*

Formal propositions:

WR1: The items in an edge_based_2d_wireframe_shape_representation shall be an edge_based_wireframe_model, a mapped_item, or an axis2_placement_2d.

WR2: At least one of the items in an edge_based_2d_wireframe_shape_representation shall be either an edge_based_wireframe_model or a mapped_item.

WR3: Every edge in an edge_based_wireframe_model shall be an edge_curve.

WR4: Every polyline that underlies an edge of an edge_based_wireframe_model shall be defined by more than two distinct points.

WR5: Every vertex defined for an edge_based_wireframe_model shall be a vertex_point.

WR6: The edge_geometry that underlies an edge for an edge_based_wireframe_model shall be a line, circle, ellipse, parabola, hyperbola, b_spline_curve, offset_curve_2d, polyline, or a curve_replica. For each curve that has a basis defined by another curve, the basis curve shall be one of these types also.

WR7: The vertex_geometry that underlies the edges for an edge_based_wireframe_model shall be a cartesian_point or point_replica and the point_replica shall replicate either another point_replica or a cartesian_point.

WR8: All conics shall be positioned by an axis2_placement_2d.

WR9: If there is a mapped_item in an edge_based_2d_wireframe_shape_representation, the source of the mapped_item shall be an edge_based_2d_wireframe_shape_representation.

WR10: The edge_based_2d_wireframe_shape_representation shall have a coordinate_space_dimension equal to two.

5.2.3.1.115 edge_segment_cross_section

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An edge_segment_cross_section is a volume_shape_intersection that implements the ARM concept of Edge_segment_cross_section.

EXPRESS specification:

*)
ENTITY edge_segment_cross_section
  SUBTYPE OF (volume_shape_intersection);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\shape_representation_relationship || 
       SELF\volume_shape_intersection || 
       SELF\edge_segment_cross_section))) = 0;
END_ENTITY; -- edge_segment_cross_section 
(* 

Formal propositions:

WR1: The edge_segment_cross_section shall not be a complex subtype of other than its direct supertypes.

5.2.3.1.116 edge_segment_vertex

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An edge_segment_vertex is a physical_unit_datum that implements the ARM concept of Edge_segment_vertex.

EXPRESS specification:

*)
ENTITY edge_segment_vertex
  SUBTYPE OF (physical_unit_datum);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\physical_unit_datum ||
       SELF\edge_segment_vertex)) = 0;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
        pd\property_definition.description = 'shape element characterization'
       )) = 1;
  WR3: SELF\shape_aspect.of_shape\property_definition.definition.
       frame_of_reference\application_context_element.name
       IN ['physical design occurrence', 'physical design usage'];
  WR4: SELF\shape_aspect.name = 'single datum';
END_ENTITY; -- edge_segment_vertex
(*

Formal propositions:

WR1: The edge_segment_vertex shall not participate in a complex instance of shape_aspect other than with the physical_unit_datum supertype.

WR2: The edge_segment_vertex shall be related to one representation with a name of 'shape element characterization'.

WR3: The edge_segment_vertex shall be in the 'physical design occurrence' or 'physical design usage' context.

WR4: The edge_segment_vertex shall be a single datum.

5.2.3.1.117 ee_specification

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An ee_specification is a document which implements the ARM concepts of:
  • Assembly_technology_specification
  • Design_specification
  • Ee_specification
  • Fabrication_technology_specification
  • Interface_specification
  • Language_reference_manual
  • Lead_form_specification
  • Material_specification
  • Process_specification
  • Surface_finish_specification
  • Test_specification

EXPRESS specification:

*)
ENTITY ee_specification 
 SUBTYPE OF (document);
WHERE
  WR1: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'document source')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'document source')) >= 1;
  WR2: SELF\document.kind\document_type.product_data_type IN 
       ['assembly technology specification',
       'design specification', 'fabrication technology specification',
       'interface specification', 'language reference manual',
       'lead form specification', 'material specification',
       'reference document', 'source code',
       'process specification', 'surface finish specification',
       'test specification'];
END_ENTITY; -- ee_specification
(*

Formal propositions:

WR1: The ee_specification shall have at least one organization or person_and_organization specified as its 'document source'.

WR2: The ee_specification shall be a assembly_technology_specification, design_specification, fabrication_technology_specification, interface_specification, language_reference_manual, lead_form_specification, material_specification, reference document, source code, process_specification, surface_finish_specification, or a test_specification.

5.2.3.1.118 electric_charge_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An electric_charge_measure_with_unit is a measure_with_unit that implements the ARM concept of Electric_charge_measure_with_unit.

EXPRESS specification:

*)
ENTITY electric_charge_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\electric_charge_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = coulomb;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- electric_charge_measure_with_unit
(*

Formal propositions:

WR1: The electric_charge_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The electric_charge_measure_with_unit shall reference an si_unit with the name of coulomb.

WR3: The unit_component shall be an si_unit.

5.2.3.1.119 electrical_isolation_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An electrical_isolation_component_shape_aspect is a filled_area_material_removal_component_shape_aspect that implements the ARM concept of Electrical_isolation_laminate_component.

EXPRESS specification:

*)
ENTITY electrical_isolation_component_shape_aspect
  SUBTYPE OF (filled_area_material_removal_component_shape_aspect);
END_ENTITY; -- electrical_isolation_component_shape_aspect
(*

5.2.3.1.120 electrical_isolation_removal_template_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An electrical_isolation_removal_template_definition is a part_template_definition that implements the ARM concept of Electrical_isolation_removal_template .

EXPRESS specification:

*)
ENTITY electrical_isolation_removal_template_definition
  SUBTYPE OF (part_template_definition);
(*
WHERE
  WR1: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEXT_LITERAL' IN
       TYPEOF (it))) = 1)) = 1))) = 0);
  WR2: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 
         'maximum font vertical extent'))) = 1
       )) = 1))) = 0);
  WR3: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 
         'maximum font horizontal extent'))) = 1
       )) = 1))) = 0);
*)
END_ENTITY; -- electrical_isolation_removal_template_definition
(*

5.2.3.1.121 electrical_network

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An electrical_network is a functional_unit that implements the ARM concept of Electrical_network_definition.

EXPRESS specification:

*)
ENTITY electrical_network
  SUBTYPE OF (functional_unit);
END_ENTITY; -- electrical_network
(*

5.2.3.1.122 electromotive_force_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An electromotive_force_measure_with_unit is a measure_with_unit that implements the ARM concept of Electromotive_force_measure_with_unit.

EXPRESS specification:

*)
ENTITY electromotive_force_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\electromotive_force_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = volt ;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- electromotive_force_measure_with_unit
(*

Formal propositions:

WR1: The electromotive_force_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The electromotive_force_measure_with_unit shall reference an si_unit with a name of volt.

WR3: The unit_component shall be an si_unit.

5.2.3.1.123 energy_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An energy_measure_with_unit is a measure_with_unit that implements the ARM concept of Energy_measure_with_unit.

EXPRESS specification:

*)
ENTITY energy_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\energy_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = joule;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- energy_measure_with_unit
(*

Formal propositions:

WR1: The energy_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The energy_measure_with_unit shall reference an si_unit with a name of joule.

WR3: The unit_component shall be an si_unit.

5.2.3.1.124 evaluated_characteristic

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An evaluated_characteristic is a representation and a representation_relationship that implements the ARM concept of Evaluated_characteristic.

EXPRESS specification:

*)
ENTITY evaluated_characteristic
  SUBTYPE OF (representation, representation_relationship);
UNIQUE
  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\representation_relationship_with_transformation || 
       SELF\evaluated_characteristic))) = 0;
  WR2: SELF\representation_relationship.rep_1 <> 
       SELF\representation_relationship.rep_2;
  WR3: SELF\representation_relationship.name = '';
  WR4: SELF\representation.name = '';
  WR5: SELF\representation_relationship.rep_1.name = 'planned characteristic';
END_ENTITY; -- evaluated_characteristic 
(* 

Formal propositions:

Formal propositions:

WR1: The combination of rep_1 and rep_2 shall be unique within a population of evaluated_characteristic.

WR1: The evaluated_characteristic shall only be a representation, representation_relationship, or representation_relationship_with_transformation in addition to itself.

WR2: The evaluated_characteristic rep_1 shall not be the rep_2.

WR3: The name attribute inherited from representation_relationship shall be an empty string.

WR4: The name attribute inherited from representation shall be an empty string.

WR5: The name attribute of representation_relationship.rep_1 shall be 'planned characteristic'.

5.2.3.1.125 evaluation_product_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An evaluation_product_definition is a product_definition that implements the ARM concept of: Evaluation_ee_product_definition

EXPRESS specification:

*)
ENTITY evaluation_product_definition
 SUBTYPE OF (product_definition);
END_ENTITY; -- evaluation_product_definition
(*

5.2.3.1.126 external_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An external_definition is a characterized_object and an externally_defined_representation_item and a descriptive_representation_item that implements the ARM concept of External_definition.

EXPRESS specification:

*)
ENTITY external_definition
  SUPERTYPE OF(ONEOF(bond_category))
  SUBTYPE OF (characterized_object, descriptive_representation_item,
              externally_defined_representation_item);
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1;
END_ENTITY; -- external_definition
(*

Formal propositions:

WR1: The external_definition shall be referenced by exactly one document.

5.2.3.1.127 externally_defined_assembly_definition

An externally_defined_assembly_definition is an externally_defined_physical_unit that implements the ARM concept of Pca_usage_view.

EXPRESS specification:

*)
ENTITY externally_defined_assembly_definition
 SUBTYPE OF (externally_defined_physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: NOT EXISTS(SELF\product_definition.name) OR
       (SELF\product_definition.name = 'assembly module');
  WR3: (NOT (SELF.frame_of_reference\application_context_element.name = 'physical design usage')) 
        OR (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'pca terminal'))) >= 2))) = 0);
END_ENTITY; -- externally_defined_assembly_definition
(*

Formal propositions:

WR1: The name shall exist.

WR2: The externally_defined_assembly_definition shall be a definition of a product that has a name of 'assembly module'.

WR3: If the externally_defined_assembly_definition has a frame_of_reference name of 'physical design usage', it shall have at least two shape_aspects that are assembly_module_terminals with a description of 'pca terminal'.

5.2.3.1.128 externally_defined_bare_die

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_bare_die is an externally_defined_physical_unit that implements the ARM concept of Bare_die.

EXPRESS specification:

*)
ENTITY externally_defined_bare_die
  SUBTYPE OF (externally_defined_physical_unit);
WHERE
  WR1: SIZEOF (QUERY (ifdu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (ifdu.relating_product_definition)) AND
       (ifdu.relating_product_definition.frame_of_reference.name = 
       'functional design usage'))) = 1;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (dut <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'device unit technology') |
       dut.relating_property_definition\property_definition.name = 
       'unit technology')) = 1)) = 1;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE_TERMINAL' IN 
       TYPEOF (sa))) >= 2))) = 0;
END_ENTITY; -- externally_defined_bare_die
(*

Formal propositions:

WR1: The externally_defined_bare_die shall be related to exactly one functional_unit with a frame_of_reference name of 'functional design usage' as the 'implemented function'.

WR2: The externally_defined_bare_die shall have exactly one property_definition that is related to exactly one property_definition with a name of 'unit technology' as the 'device unit technology'.

WR3: The externally_defined_bare_die shall have at least two shape_aspects that are bare_die_terminals.

5.2.3.1.129 externally_defined_functional_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_functional_unit is a functional_unit and an externally_defined_product_definition that implements the ARM concepts of:
  • Ee_product_definition
  • Externally_defined_ee_product_definition
  • Functional_unit_definition
  • Functional_unit_usage_view

EXPRESS specification:

*)
ENTITY externally_defined_functional_unit
  SUBTYPE OF (functional_unit, externally_defined_product_definition);
END_ENTITY; -- externally_defined_functional_unit
(*

5.2.3.1.130 externally_defined_interconnect_definition

An externally_defined_interconnect_definition is an externally_defined_physical_unit that implements the ARM concept of Pcb_usage_view.

EXPRESS specification:

*)
ENTITY externally_defined_interconnect_definition
 SUBTYPE OF (externally_defined_physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: NOT EXISTS(SELF\product_definition.name) OR
       (SELF\product_definition.name = 'interconnect module');
END_ENTITY; -- externally_defined_interconnect_definition
(*

Formal propositions:

WR1: The name shall exist.

WR2: The externally_defined_interconnect_definition shall be a definition with a name of 'interconnect module'.

5.2.3.1.131 externally_defined_package

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_package is an externally_defined_physical_unit that implements the ARM concepts of Altered_package and Package.

EXPRESS specification:

*)
ENTITY externally_defined_package
 SUBTYPE OF (externally_defined_physical_unit);
WHERE
  WR1: SELF.frame_of_reference.name = 'physical design usage';
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
                           'registered case style')) >= 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr)) |
       sr_pdr.used_representation\representation.name = 'seating plane')) = 1))) = 0;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY' IN 
       TYPEOF (sa))) <= 1))) = 0;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_TERMINAL' IN 
       TYPEOF (sa))) >= 1))) = 0;
  WR6: (NOT (SELF\product_definition.description = 'altered package')) OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       (pdr\product_definition_relationship.name = 'package preparation') AND
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE'] * 
       TYPEOF (pdr.relating_product_definition)) = 1))) = 1); 
END_ENTITY; -- externally_defined_package
(*

Formal propositions:

WR1: The externally_defined_package shall have a frame_of_reference name of 'physical design usage'.

WR2: The externally_defined_package shall have at least one representation with the name of 'registered case style'.

WR3: The externally_defined_package shall have exactly one shape_representation with the name of 'seating plane'.

WR4: The externally_defined_package shall have at most one package_body.

WR5: The externally_defined_package shall have at least one package_terminal.

WR6: If the externally_defined_package has a description of 'altered package', it shall be related to exactly one package, externally_defined_package, or library_defined_package as the 'package preparation'.

Informal propositions:

IP1: Each three-dimensional shape representation of the externally_defined_package shall have exactly one geometric_representation_item that is an axis2_placement_3d and that axis2_placement_3d shall define the location and orientation of the seating plane in that representation. The normal of the seating plane in that representation shall be congruent with and the same direction as the Z axis of the axis2_placement_3d. The plane of the seating plane in that representation shall be congruent with the plane established by the X and Y axes of the axis2_placement_3d.

5.2.3.1.132 externally_defined_packaged_connector

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_packaged_connector is an externally_defined_packaged_part that implements the ARM concept of Packaged_connector.

EXPRESS specification:

*)
ENTITY externally_defined_packaged_connector
 SUBTYPE OF (externally_defined_packaged_part);
END_ENTITY; -- externally_defined_packaged_connector
(*

Informal propositions:

IP1: There shall be at least one shape_aspect that is a packaged_connector_terminal_relationship for the externally_defined_packaged_connector.

5.2.3.1.133 externally_defined_packaged_part

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_packaged_part is an externally_defined_physical_unit that implements the ARM concepts of Altered_packaged_part and Packaged_part.

EXPRESS specification:

*)
ENTITY externally_defined_packaged_part
 SUPERTYPE OF (externally_defined_packaged_connector)
 SUBTYPE OF (externally_defined_physical_unit);
WHERE
  WR1: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN 
       TYPEOF (sa))) >= 2))) = 0);
  WR2: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1);
  WR3: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (ifu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN
       TYPEOF (ifu.relating_product_definition)) AND
       (ifu.relating_product_definition.frame_of_reference.name =
       'functional design usage'))) = 1);
  WR4: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (upkg <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'used package') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE' IN
       TYPEOF (upkg.related_product_definition))) = 1);
  WR5: (NOT (SELF\product_definition.description = 
       'altered packaged part')) OR
       (SIZEOF (QUERY (bpp <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'base packaged part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] * 
       TYPEOF (bpp.relating_product_definition)) = 1) AND
       (bpp.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) >= 1);
  WR6: (NOT (SELF\product_definition.description = 
       'altered packaged part')) OR
       (SIZEOF (QUERY (upkg <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'used package') |
       SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] * 
       TYPEOF (upkg.relating_product_definition)) = 1)) >= 1);
END_ENTITY; -- externally_defined_packaged_part
(*

Formal propositions:

WR1: If the externally_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall have at least one shape_aspect that is a packaged_part_terminal.

WR2: If the externally_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall have exactly one material_designation.

WR3: If the externally_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall be related to exactly one functional_unit with a frame_of_reference name of 'functional design usage' as the 'implemented function'.

WR4: If the externally_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall relate to exactly one package to specify the 'used package'.

WR5: If the externally_defined_packaged_part has a description of 'altered packaged part', it shall be related to at least one packaged_part, externally_defined_packaged_part, or library_defined_packaged_part with a frame_of_reference name of 'physical design usage' as the 'base packaged part'.

WR6: If the externally_defined_packaged_part has a description of 'altered packaged part', it shall be related to at least one package, externally_defined_package, or library_defined_package as the 'used package'.

5.2.3.1.134 externally_defined_physical_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_physical_unit is a physical_unit and an externally_defined_product_definition that implements the ARM concepts of:
  • Assembly_module_usage_view
  • Ee_product_definition
  • Externally_defined_ee_product_definition
  • Interconnect_module_usage_view
  • Physical_unit
  • Physical_unit_usage_view

EXPRESS specification:

*)
ENTITY externally_defined_physical_unit
 SUPERTYPE OF (ONEOF  (externally_defined_package, externally_defined_packaged_part,   
  externally_defined_bare_die, externally_defined_assembly_definition, 
  externally_defined_interconnect_definition))
 SUBTYPE OF (physical_unit, externally_defined_product_definition);
END_ENTITY; -- externally_defined_physical_unit
(*

5.2.3.1.135 externally_defined_product_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_product_definition is a product_definition and an externally_defined_item that implements the ARM concept of: Externally_defined_ee_product_definition

EXPRESS specification:

*)
ENTITY externally_defined_product_definition
 SUPERTYPE OF (library_defined_product_definition)
 SUBTYPE OF (product_definition, externally_defined_item);
END_ENTITY; -- externally_defined_product_definition
(*

5.2.3.1.136 externally_defined_representation_item

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An externally_defined_representation_item is an externally_defined_item and a representation_item that implements the ARM concept of External_definition.

EXPRESS specification:

*)
ENTITY externally_defined_representation_item
  SUBTYPE OF (externally_defined_item, representation_item);
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1;
END_ENTITY; -- externally_defined_representation_item
(*

Formal propositions:

WR1: The externally_defined_representation_item shall be referenced by exactly one applied_document_reference.

5.2.3.1.137 fabrication_joint

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A fabrication_joint is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Fabrication_joint.

EXPRESS specification:

*)
ENTITY fabrication_joint
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  WR1: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF.related_shape_aspect)) AND
       (SELF.related_shape_aspect\shape_aspect.description IN
       ['via terminal', 'printed component join terminal',
       'non functional land join terminal',
       'land join terminal', 'conductive interconnect element terminal',
       'component termination passage join terminal']));
  WR2: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF.relating_shape_aspect)) AND
       (SELF.relating_shape_aspect\shape_aspect.description IN
       ['via terminal', 'printed component join terminal',
       'non functional land join terminal',
       'land join terminal', 'conductive interconnect element terminal',
       'component termination passage join terminal']));
  WR3: SIZEOF (QUERY (ajm <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'auxiliary joint material') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN
       TYPEOF (ajm.related_shape_aspect)) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (ajm.related_shape_aspect)) AND
       (ajm.related_shape_aspect\shape_aspect.description =
       'stratum feature template component')))) <= 1;
  WR4: acyclic_shape_aspect_relationship(SELF,
       [SELF\shape_aspect_relationship.related_shape_aspect],
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.'+
       'FABRICATION_JOINT');
END_ENTITY; -- fabrication_joint
(*

Formal propositions:

WR1: The fabrication_joint relating_shape_aspect attribute shall relate to exactly one component_terminals that have a description of 'via terminal', 'printed component join terminal', 'non functional land join terminal', 'land join terminal', 'conductive interconnect element terminal', or 'component termination passage join terminal' to specify the 'fabrication features'.

WR2: The fabrication_joint related_shape_aspect attribute shall relate to exactly one component_terminals that have a description of 'via terminal', 'printed component join terminal', 'non functional land join terminal', 'land join terminal', 'conductive interconnect element terminal', or 'component termination passage join terminal' to specify the 'fabrication features'.

WR3: The fabrication_joint shall relate to either at most one land or to at most one component_shape_aspect that has a description of 'stratum feature template component', to specify the 'auxiliary joint material'.

WR4: The fabrication_joint shall not participate in a cyclic relationship.

5.2.3.1.138 feature_shape_occurrence_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A feature_shape_occurrence_relationship is a representation and a shape_representation_relationship that implements the ARM concept of Feature_shape_occurrence_relationship.

EXPRESS specification:

*)
ENTITY feature_shape_occurrence_relationship
  SUBTYPE OF (representation, shape_representation_relationship);
UNIQUE
  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
WHERE
  WR1: SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2;
  WR2: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\shape_representation_relationship || 
       SELF\feature_shape_occurrence_relationship))) = 0;
END_ENTITY; -- feature_shape_occurrence_relationship 
(* 

Formal propositions:

Formal propositions:

WR1: The combination of rep_1 and rep_2 shall be unique within a population of feature_shape_occurrence_relationship.

WR1: The feature_shape_occurrence_relationship rep_1 shall not be rep_2.

WR2: The feature_shape_occurrence_relationship shall not be a complex subtype of other than its direct supertypes.

5.2.3.1.139 fiducial

A fiducial is a component_shape_aspect that implements the ARM concept of Fiducial.

EXPRESS specification:

*)
ENTITY fiducial
  SUBTYPE OF (component_shape_aspect);
WHERE
  wr1: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'COMPONENT_DEFINITION') IN TYPEOF(SELF.of_shape.definition))
            AND (SELF.of_shape.definition\product_definition.description = 
                    'laminate component');
END_ENTITY; -- fiducial
(*

Formal propositions:

WR1: The fiducial shall be an aspect of a definition with a name of 'interconnect module'.

5.2.3.1.140 fiducial_part_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A fiducial_part_feature is a part_tooling_feature that implements the ARM concept of Fiducial_part_feature.

EXPRESS specification:

*)
ENTITY fiducial_part_feature
 SUBTYPE OF (part_tooling_feature);
END_ENTITY; -- fiducial_part_feature
(*

5.2.3.1.141 fiducial_stratum_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A fiducial_stratum_feature is a stratum_feature that implements the ARM concept of Fiducial_stratum_feature.

EXPRESS specification:

*)
ENTITY fiducial_stratum_feature
 SUBTYPE OF (stratum_feature);
END_ENTITY; -- fiducial_stratum_feature
(*

5.2.3.1.142 filled_area_material_removal_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A filled_area_material_removal_component_shape_aspect is a material_removal_component_shape_aspect that implements the ARM concept of Filled_area_material_removal_laminate_component.

EXPRESS specification:

*)
ENTITY filled_area_material_removal_component_shape_aspect
  SUBTYPE OF (material_removal_component_shape_aspect);
END_ENTITY; -- filled_area_material_removal_component_shape_aspect
(*

5.2.3.1.143 footprint_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An footprint_definition is a product_definition that implements the ARM concepts of: Footprint_definition

EXPRESS specification:

*)
ENTITY footprint_definition
 SUBTYPE OF (product_definition);
WHERE
  WR1: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
       SELF\product_definition_with_associated_documents.
        documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) + 
       SIZEOF (QUERY (ada <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'creation date')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR4: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR5: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\product_definition ||
       SELF\footprint_definition))) = 0;
  WR7: SELF.frame_of_reference.name IN ['layout design usage' ];
  WR8: SIZEOF (QUERY (prpc <* USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.' +
       'PRODUCTS') |
       prpc\product_category.name = 'template model')) = 1;
END_ENTITY; -- footprint_definition
(*

Formal propositions:

WR1: If the footprint_definition is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR2: The footprint_definition shall have exactly one creation date.

WR3: The footprint_definition shall have exactly one approval.

WR4: The footprint_definition shall have at least one organization or person_and_organization as the creator.

WR5: The footprint_definition shall have exactly one security_classification.

WR6: The footprint_definition shall not be any other type of product_definition.

WR7: The footprint_definition shall have a frame_of_reference with a name of 'layout design usage'.

WR8: The footprint_definition shall be associated with a product that is a template model.

5.2.3.1.144 footprint_occurrence

A footprint_occurrence is an assembly_group_component_shape_aspect that implements the ARM concept of Footprint_occurrence.

EXPRESS specification:

*)
ENTITY footprint_occurrence
  SUBTYPE OF (assembly_group_component_shape_aspect);
END_ENTITY; -- footprint_occurrence
(*

5.2.3.1.145 footprint_occurrence_shape_aspect_relationship

A footprint_occurrence_shape_aspect_relationship is a shape_aspect_relationship that implements the ARM concept of Footprint_occurrence_sub_assembly_relationship

EXPRESS specification:

*)
ENTITY footprint_occurrence_shape_aspect_relationship
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: SELF\shape_aspect_relationship.name = 'footprint occurrence sub assembly relationship';
END_ENTITY; -- footprint_occurrence_shape_aspect_relationship 
(* 

Formal propositions:

WR1: The related shape_aspect shall not be the relating shape_aspect.

WR2: The footprint_occurrence_shape_aspect_relationship name shall be 'footprint occurrence sub assembly relationship'.

5.2.3.1.146 force_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A force_measure_with_unit is a measure_with_unit that implements the ARM concept of Force_measure_with_unit.

EXPRESS specification:

*)
ENTITY force_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\force_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = newton;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- force_measure_with_unit
(*

Formal propositions:

WR1: The force_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The force_measure_with_unit shall reference an si_unit with a name of newton.

WR3: The unit_component shall be an si_unit.

5.2.3.1.147 frequency_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A frequency_measure_with_unit is a measure_with_unit that implements the ARM concept of Frequency_measure_with_unit.

EXPRESS specification:

*)
ENTITY frequency_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\frequency_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = hertz;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- frequency_measure_with_unit
(*

Formal propositions:

WR1: The frequency_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The frequency_measure_with_unit shall reference an si_unit with a name of hertz.

WR3: The unit_component shall be an si_unit.

5.2.3.1.148 frozen_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An frozen_assignment is an approval_assignment that specifies a set of frozen_assigned_item. An item that is 'approved' is frozen. An item that is 'not yet approved' is not frozen.

EXAMPLE: A component placement is considered frozen (i.e., the component cannot be moved) if its next_assembly_usage_occurrence is a member of the set of frozen_assigned_item and the approval_status is "approved".

EXPRESS specification:

*)
ENTITY frozen_assignment 
 SUBTYPE OF (approval_assignment); 
 items : SET [1:?] OF frozen_assigned_item; 
WHERE
 WR1: SELF\approval_assignment.assigned_approval.status.name in ['approved', 'not yet approved'];
END_ENTITY; -- frozen_assignment
(*

Formal propositions:

WR1: The approval status shall either be 'approved' or 'not yet approved'.

5.2.3.1.149 functional_specification

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An functional_specification is a representation that implements the ARM concept of Functional_specification.

EXPRESS specification:

*)
ENTITY functional_specification
  SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') |
       (rr\representation_relationship.name = 'functional characteristic category') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNAL_DEFINITION' IN
       TYPEOF (rr.rep_1.items[1])))) = 1;
  WR2: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |
       (rr\representation_relationship.name = 'characterizing signal' +
       'for functional specification')
       )) = 1;
  WR3: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |
       (rr\representation_relationship.name = 'reference signal for' +
        'functional specification') 
       )) = 1;
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\functional_specification)) = 0;
  WR5: SELF\representation.name = '';
  WR6: SIZEOF(QUERY( pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_FUNCTIONAL_UNIT' IN TYPEOF (pdr.definition.definition)) 
        )) = 0;
END_ENTITY; -- functional_specification
(*

Formal propositions:

WR1: The functional_specification shall be in exactly one 'functional characteristic category'.

WR2: The functional_specification shall reference exactly one 'characterizing signal for functional specification'.

WR3: The functional_specification shall reference exactly one 'reference signal for functional specification'.

WR4: The functional_specification shall be no other type of representation.

WR5: The functional_specification name shall be blank.

WR6: The functional_specification shall reference exactly one component_functional_unit.

5.2.3.1.150 functional_specification_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A functional_specification_definition is a functional_unit that implements the ARM concept of Functional_specification_definition.

EXPRESS specification:

*)
ENTITY functional_specification_definition
  SUBTYPE OF (functional_unit);
WHERE
  WR1: SELF.frame_of_reference\application_context_element.name =
             'functional network design';
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_SPECIFICATION' IN TYPEOF (pdr.used_representation))
       )) > 0))) > 0;
END_ENTITY; -- functional_specification_definition
(*

Formal propositions:

WR1: The functional_specification_definition context shall be 'functional network design'.

WR2: The functional_specification_definition shall be related to at least one functional_specification.

5.2.3.1.151 functional_terminal_group

A functional_terminal_group is a group that specifies a type for the terminals assigned to the group.

EXPRESS specification:

*)
ENTITY functional_terminal_group
 SUBTYPE OF (group);
UNIQUE
   UR1: SELF\group.name;
END_ENTITY; -- functional_terminal_group
(*

Formal propositions:

UR1: The name shall be unique.

5.2.3.1.152 functional_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A functional_unit is the characterization of the functionality of an occurrence of an electrical device or of an abstract component. A functional_unit implements the ARM concepts of:
  • Ee_product_definition
  • Electrical_network_definition
  • Functional_specification_definition
  • Functional_unit_definition
  • Functional_unit_network_definition
  • Functional_unit_usage_view
  • Thermal_network_definition

EXPRESS specification:

*)
ENTITY functional_unit
 SUPERTYPE OF ((electrical_network)
              ANDOR (thermal_network) 
	      ANDOR (functional_specification_definition))
 SUBTYPE OF (product_definition);
WHERE
  WR1: SELF.frame_of_reference.name IN ['functional design usage', 
       'functional network design'];
  WR2: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
   SELF\product_definition_with_associated_documents.documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR3: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) = 1; 
  WR4: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR5: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR6: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR7: (NOT (SELF.frame_of_reference.name = 
                                 'functional network design')) OR
       (SIZEOF (QUERY (du <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design usage') |
       du.relating_product_definition.frame_of_reference.name = 
       'functional design usage')) = 1);
  WR8: (NOT (SIZEOF([
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
            'THERMAL_NETWORK',
            'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
            'ELECTRICAL_NETWORK'] * TYPEOF(SELF)) = 1))
        OR (SELF.frame_of_reference.name = 'functional network design');
END_ENTITY; -- functional_unit
(*

Formal propositions:

WR1: The functional_unit shall have a frame_of_reference with a name of 'functional design usage' or 'functional network design'.

WR2: If the functional_unit is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR3: The functional_unit shall have exactly one creation date and time.

WR4: The functional_unit shall have exactly one approval.

WR5: The functional_unit shall have at least one organization or person_and_organization as the creator.

WR6: The functional_unit shall have exactly one security_classification.

WR7: If the functional_unit is a functional network design it shall be related to exactly one functional_unit that is a functional design usage as the design usage.

WR8: If the functional_unit is a thermal_network or an electrical_network the frame_of_reference attribute shall be satisfied by an entity with a name equal to 'functional network design'.

5.2.3.1.153 functional_unit_terminal_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A functional_unit_terminal_definition is a shape_aspect that implements the ARM concepts of Functional_unit_usage_view_terminal_definition and Scalar_terminal_definition.

EXPRESS specification:

*)
ENTITY functional_unit_terminal_definition
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN
       TYPEOF (SELF.of_shape.definition)) AND
   (SELF.of_shape.definition\product_definition.frame_of_reference.name =
       'functional design usage');
  WR2: SIZEOF (QUERY (pd2 <* QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION' IN
       TYPEOF (pd)) |
       SIZEOF (QUERY (funtdba <* QUERY (pdr <* USEDIN (pd2,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 
       'functional unit network terminal definition bus assignment') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BUS_STRUCTURAL_DEFINITION' IN 
       TYPEOF 
       (funtdba.relating_property_definition.definition))) <= 1)) <= 1;
  WR3: SIZEOF (QUERY (pd2 <* QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION' IN
       TYPEOF (pd)) |
       SIZEOF (QUERY (funtdna <* QUERY (pdr <* USEDIN (pd2,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 
       'functional unit network terminal definition node assignment') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'NETWORK_NODE_DEFINITION' IN 
       TYPEOF 
       (funtdna.relating_property_definition.definition))) <= 1)) <= 1;
END_ENTITY; -- functional_unit_terminal_definition
(*

Formal propositions:

WR1: The functional_unit_terminal_definition shall be an aspect of the shape of a functional_unit that has a context element with a name of 'functional design usage'.

WR2: The functional_unit_terminal_definition shall have no more than one property definition that is related to at most one property of a bus_structural_definition as the 'functional unit network terminal definition bus assignment'.

WR3: The functional_unit_terminal_definition shall have no more than one property definition that is related to at most one property of a network_node_definition as the 'functional unit network terminal definition node assignment'.

5.2.3.1.154 geometric_tolerance_group

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A geometric_tolerance_group is a property_definition that implements the ARM concepts of Separate_geometric_tolerance_requirement and Simultaneous_geometric_tolerance_requirement.

EXPRESS specification:

*)
ENTITY geometric_tolerance_group
  SUBTYPE OF (property_definition);
WHERE
    WR1: SELF\property_definition.description
         IN ['separate requirement', 'simultaneous requirement'];
    WR2: (NOT (SELF\property_definition.description = 
          'separate requirement'))
         OR (SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'GEOMETRIC_TOLERANCE_WITH_SPECIFIED_DATUM_SYSTEM' 
         IN TYPEOF(pdr.related_property_definition)) AND
         (pdr\property_definition_relationship.name = 'group geometric tolerance')
         )) >=1);
    WR3: (NOT (SELF\property_definition.description = 
        'simultaneous requirement')) 
         OR (SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'PHYSICAL_UNIT_GEOMETRIC_TOLERANCE' 
         IN TYPEOF(pdr.related_property_definition)) AND
         (pdr\property_definition_relationship.name = 'group geometric tolerance'))
         )) >=2);
    WR4: (NOT (SELF\property_definition.description = 
         'separate requirement')) 
         OR (SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'LINEAR_PROFILE_TOLERANCE' IN 
          TYPEOF(pdr.related_property_definition)) AND
         (pdr.related_property_definition\property_definition.name = 
         'linear profile refinement') AND
         (pdr\property_definition_relationship.name = 'group geometric tolerance') )
         )) =0);
    WR5: (NOT (SELF\property_definition.description = 
         'separate requirement')) 
         OR (SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'SURFACE_PROFILE_TOLERANCE' IN 
         TYPEOF(pdr.related_property_definition)) AND
         (pdr.related_property_definition\property_definition.name = 
         'surface profile refinement') AND
         (pdr\property_definition_relationship.name = 'group geometric tolerance') )
         )) =0);
    WR6: (NOT (SELF\property_definition.description = 
         'separate requirement')) 
         OR (SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'POSITION_TOLERANCE' IN 
         TYPEOF(pdr.related_property_definition)) AND
         (pdr.related_property_definition\property_definition.name = 
         'feature relating position') AND
         (pdr\property_definition_relationship.name = 'group geometric tolerance') )
         )) =0);
    WR7: (NOT (SELF\property_definition.description = 
         'separate requirement')) 
         OR (SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         (pdr\property_definition_relationship.name = 'group geometric tolerance') AND
      (SIZEOF(['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'LINEAR_PROFILE_TOLERANCE',
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'SURFACE_PROFILE_TOLERANCE',
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
     'POSITION_TOLERANCE'] * TYPEOF(pdr.related_property_definition)) > 0)
         )) =0);
END_ENTITY; -- geometric_tolerance_group
(*

Formal propositions:

WR1: The geometric_tolerance_group shall have a description of either 'separate requirement' or 'simultaneous requirement'.

WR2: If the geometric_tolerance_group has a description of 'separate requirement', the geometric_tolerance_group shall relate to at least one geometric_tolerance_with_specified_datum_system to specify the 'group geometric tolerance'.

WR3: If the geometric_tolerance_group has a description of 'simultaneous requirement', the geometric_tolerance_group shall relate to at least two physical_unit_geometric_tolerances to specify the 'group geometric tolerance'.

WR4: If the geometric_tolerance_group has a description of 'separate requirement', the geometric_tolerance_group shall relate to exactly zero linear_profile_tolerance with a name of 'linear profile refinement' to specify the 'group geometric tolerance'.

WR5: If the geometric_tolerance_group has a description of 'separate requirement', the geometric_tolerance_group shall relate to exactly zero surface_profile_tolerance with a name of 'surface profile refinement' to specify the 'group geometric tolerance'.

WR6: If the geometric_tolerance_group has a description of 'separate requirement', the geometric_tolerance_group shall relate to exactly zero position_tolerance with a name of 'feature relating position' to specify the 'group geometric tolerance'.

WR7: If the geometric_tolerance_group has a description of 'separate requirement', the geometric_tolerance_group shall relate to exactly zero physical_unit_geometric_tolerance, to specify the 'group geometric tolerance', that are not either linear_profile_tolerance, surface_profile_tolerance, or position_tolerance.

Informal propositions:

IP1: If the geometric_tolerance_group has a description of 'separate requirement' and the geometric_tolerance_group relates to at least two geometric_tolerance_with_specified_datum_systems to specify the 'group geometric tolerance', all of the geometric_tolerance_with_specified_datum_system shall relate to the same property_definition to specify the 'referenced datum system definition', and that property_definition shall have a description of either 'datum system property with material conditions' or 'datum system property without material conditions'.

IP2: If the geometric_tolerance_group has a description of 'simultaneous requirement' and the geometric_tolerance_group relates to at least two physical_unit_geometric_tolerances to specify the 'group geometric tolerance', all of the physical_unit_geometric_tolerance either shall not relate to a property_definition to specify the 'referenced datum system definition' or shall relate to the same property_definition to specify the 'referenced datum system definition', and that property_definition shall have a description of either 'datum system property with material conditions' or 'datum system property without material conditions'.

IP3: If the geometric_tolerance_group has a description of 'simultaneous requirement', the geometric_tolerance_group shall relate to exactly zero physical_unit_geometric_tolerance, to specify the 'group geometric tolerance', that are not either a linear_profile_tolerance with a description of 'linear profile refinement', a surface_profile_tolerance with a description of 'surface profile refinement', or a position_tolerance with a description of 'feature relating position'.

5.2.3.1.155 geometric_tolerance_with_specified_datum_system

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A geometric_tolerance_with_specified_datum_system is a physical_unit_geometric_tolerance that implements the ARM concepts of:
  • Boundary_based_position_tolerance
  • Composite_feature_locating_position_tolerance
  • Composite_linear_profile_locating_tolerance
  • Composite_surface_profile_locating_tolerance
  • Geometric_tolerance_with_referenced_datum_system
  • Position_tolerance_with_referenced_datum_system
  • Profile_of_any_line_tolerance_with_referenced_datum_system
  • Profile_of_any_surface_tolerance_with_referenced_datum_system

EXPRESS specification:

*)
ENTITY geometric_tolerance_with_specified_datum_system
  SUBTYPE OF (physical_unit_geometric_tolerance);
WHERE
   WR1: SIZEOF(['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'ANGULARITY_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'POSITION_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'CIRCULAR_RUNOUT_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'LINEAR_PROFILE_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'SURFACE_PROFILE_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'CONCENTRICITY_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'PARALLELISM_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'PERPENDICULARITY_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'SYMMETRY_TOLERANCE',
               'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'TOTAL_RUNOUT_TOLERANCE'] * TYPEOF(SELF)) = 1;

   WR2: SIZEOF (QUERY(pdr <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         ((pdr.related_property_definition\property_definition.description =
           'datum system property with material conditions')
          OR (pdr.related_property_definition\property_definition.description =
              'datum system property without material conditions'))
         AND (pdr\property_definition_relationship.name = 'referenced datum system definition')
         )) = 1;

   WR3: SIZEOF (QUERY(pdr <* USEDIN(SELF,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.'
           + 'GEOMETRIC_TOLERANCE_GROUP' IN 
             TYPEOF(pdr.related_property_definition))
          AND (pdr.related_property_definition\property_definition.description = 
              'separate requirement')
          AND (pdr\property_definition_relationship.name = 'group geometric tolerance')
         )) <= 1;
END_ENTITY; -- geometric_tolerance_with_specified_datum_system
(*

Formal propositions:

WR1: The geometric_tolerance_with_specified_datum_system shall be one of the following types: angularity_tolerance, position_tolerance, circular_runout_tolerance, linear_profile_tolerance, surface_profile_tolerance, concentricity_tolerance, parallelism_tolerance, perpendicularity_tolerance, symmetry_tolerance, or total_runout_tolerance.

WR2: The geometric_tolerance_with_specified_datum_system shall relate to exactly one property_definition that has the description of either 'datum system property with material conditions' or 'datum system property without material conditions' to specify the 'referenced datum system definition'.

WR3: The geometric_tolerance_with_specified_datum_system shall be related to at most one geometric_tolerance_group with a description of 'separate requirement' as the 'group geometric tolerance'.

5.2.3.1.156 group_product_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A group_product_definition is a component_definition that implements the ARM concept of Placement_group.

EXPRESS specification:

*)
ENTITY group_product_definition
  SUBTYPE OF (component_definition);
WHERE
  WR1: SELF.frame_of_reference.name = 'design requirement';
  WR2: (NOT (SELF\product_definition.description = 
                                      'placement group')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN
       TYPEOF (pd))) >= 1);
END_ENTITY; -- group_product_definition
(*

Formal propositions:

WR1: The group_product_definition shall have a frame_of_reference name of 'design requirement'.

WR2: If the group_product_definition has a description of 'placement group', it shall have at least one requirements_property.

5.2.3.1.157 group_shape_aspect

A group_shape_aspect is a shape_aspect that implements the ARM concepts of:
  • Interconnect_module_constraint_region
  • Placement_group
  • Termination_constraint

EXPRESS specification:

*)
ENTITY group_shape_aspect
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN
       TYPEOF (SELF\shape_aspect.of_shape.definition);
  WR2: NOT(SELF\shape_aspect.description IN 
       ['interconnect module constraint region']) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN
       TYPEOF (SELF\shape_aspect.of_shape.definition)) AND
       (EXISTS(SELF\shape_aspect.of_shape.definition\product_definition.name)) AND
       (NOT EXISTS(SELF\shape_aspect.of_shape.definition\product_definition.name) OR 
       (SELF\shape_aspect.of_shape.definition\product_definition.name = 'interconnect module')));
 WR3: ((NOT(SELF\shape_aspect.description IN 
       ['interconnect module constraint region'])) OR
               (SIZEOF( QUERY ( pd <* USEDIN(SELF,
            'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                         'PROPERTY_DEFINITION.DEFINITION')
                     | (SIZEOF( QUERY ( pdr <* USEDIN(pd,
           'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
    'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION')
                            | ((pdr\property_definition_relationship.name = 'constrained object')
     AND (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                    'INTERCONNECT_MODULE_DESIGN_OBJECT_CATEGORY') IN
                  TYPEOF(pdr.related_property_definition.definition)))
                        )) = 1)
                )) = 1));
 WR4: (NOT(SELF\shape_aspect.description IN 
       ['interconnect module constraint region'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'design specific purpose'))) = 1)) = 1))) = 0);
  WR5: (NOT(SELF\shape_aspect.description IN 
       ['interconnect module constraint region'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'keepout') AND
       (it\descriptive_representation_item.description IN ['true', 'false']))) = 1)) = 1))) = 0);
  WR6: (NOT(SELF\shape_aspect.description IN 
       ['interconnect module constraint region'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr.used_representation))) = 1)) = 1);
  WR7: (NOT(SELF\shape_aspect.description IN
       ['interconnect module constraint region'])) OR
               (SIZEOF( QUERY ( pd <* USEDIN(SELF,
            'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                         'PROPERTY_DEFINITION.DEFINITION')
                     | (SIZEOF( QUERY ( pdr <* USEDIN(pd,
           'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
    'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')
                            | ((pdr\property_definition_relationship.name = 'requirement')
     AND (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                    'REQUIREMENTS_PROPERTY') IN
                  TYPEOF(pdr.relating_property_definition)))
                        )) = 1)
                )) = 1);
  WR8: (NOT(SELF\shape_aspect.description = 
       'termination constraint')) OR
       (SIZEOF (QUERY (ctm <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'constrained termination member') |
       ctm.related_shape_aspect\shape_aspect.description = 
       'mating connector termination')) >= 2);
  WR9: EXISTS(SELF\shape_aspect.description);
  WR10: (NOT(SELF\shape_aspect.description IN
       ['placement group'])) OR
               (SIZEOF( QUERY ( pd <* USEDIN(SELF,
            'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                         'PROPERTY_DEFINITION.DEFINITION')
                     | (SIZEOF( QUERY ( pdr <* USEDIN(pd,
           'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
    'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')
                            | ((pdr\property_definition_relationship.name = 'requirement')
     AND (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                    'REQUIREMENTS_PROPERTY') IN
                  TYPEOF(pdr.relating_property_definition))
               AND
           (pdr.relating_property_definition\property_definition.name = 'requirement')))
                   ) = 1)
                )) = 1);
  WR11: (NOT(SELF\shape_aspect.description IN
       ['termination constraint'])) OR
               (SIZEOF( QUERY ( pd <* USEDIN(SELF,
            'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                         'PROPERTY_DEFINITION.DEFINITION')
                     | (SIZEOF( QUERY ( pdr <* USEDIN(pd,
           'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
    'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')
                            | ((pdr\property_definition_relationship.name = 'termination usage constraint')
     AND (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                    'REQUIREMENTS_PROPERTY') IN
                  TYPEOF(pdr.relating_property_definition))
                           AND
    (pdr.relating_property_definition\property_definition.name = 'termination usage constraint')))
                        ) = 1) 
                )) = 1);
END_ENTITY; -- group_shape_aspect
(*

Formal propositions:

WR1: The group_shape_aspect shall be an aspect of the shape of a product_definition.

WR2: If the group_shape_aspect has a description of 'interconnect module constraint region', it shall be an aspect of the shape of a 'interconnect module'.

WR3: If the group_shape_aspect has a description of 'interconnect module constraint region', it shall relate to exactly one interconnect_module_design_object_category to specify the 'constrained object'.

WR4: If the group_shape_aspect has a description of 'interconnect module constraint region', it shall have exactly one representation that contains exactly one descriptive_representation_item with a name of 'design specific purpose'.

WR5: If the group_shape_aspect has a description of 'interconnect module constraint region', it shall have exactly one representation that contains exactly one descriptive_representation_item with a name of 'keepout' and a description of either 'true' or 'false'.

WR6: If the group_shape_aspect has a description of 'interconnect module constraint region', it shall have exactly one property that has exactly one shape_representation.

WR7: If the group_shape_aspect has a description of 'interconnect module constraint region', or 'termination constraint', or 'placement group' it shall have exactly one requirements_property.

WR8: If the group_shape_aspect has a description of 'termination constraint', it shall relate to at least two shape_aspects with a description of 'mating connector termination' to specify a 'constrained termination member'.

WR9: The attribute description inherited from shape_aspect shall exist.

WR10: If the group_shape_aspect has a description of 'placement group' it shall have exactly one requirements_property.

WR11: If the group_shape_aspect has a description of 'termination constraint' it shall have exactly one requirements_property.

5.2.3.1.158 grouped_requirements_property

A grouped_requirements_property is a group and a requirements_property that implements the ARM concepts of Item_restricted_requirement_occurrence and Layout_spacing_requirement_occurrence.

EXPRESS specification:

*)
ENTITY grouped_requirements_property
  SUBTYPE OF (group, requirements_property);
WHERE
  WR1: (NOT (SELF\group.name = 
        'item restricted requirements property')) OR
       (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN
       TYPEOF (ga)) |
       SIZEOF (aga.items) = 1)) = 1);
  WR2: (NOT (SELF\group.name = 
        'layout spacing requirements property')) OR
       (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN
       TYPEOF (ga)) |
       (SIZEOF (aga.items) = 2) AND
       (SIZEOF (QUERY (rp <* QUERY (it <* aga.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_OBJECT' IN 
       TYPEOF (it)) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_OBJECT' IN 
       TYPEOF (rp)) AND
       (rp\characterized_object.name IN [
       'assembly module assembly component',
       'assembly module component terminal',
       'assembly module component',
       'assembly module macro component join terminal',
       'assembly module macro component',
       'assembly module',
       'bare die component terminal',
       'bare die component',
       'bonded conductive base blind via',
       'buried via',
       'cable component',
       'component feature',
       'component mounting feature',
       'component termination passage and contact size dependent land',
       'component termination passage and contact size dependent non functional land',
       'component termination passage dependent land',
       'component termination passage dependent non functional land',
       'component termination passage interface terminal',
       'component termination passage join terminal',
       'component termination passage',
       'conductive interconnect element terminal',
       'conductive interconnect element with pre defined transitions',
       'conductive interconnect element with user defined single transition',
       'connected area component',
       'contact size dependent land',
       'contact size dependent non functional land',
       'cutout edge segment',
       'cutout',
       'dielectric material passage',
       'electrical isolation laminate component',
       'embedded component terminal',
       'fiducial',
       'fill area',
       'filled area material removal laminate component',
       'inter stratum feature',
       'interconnect component interface terminal',
       'interconnect component join terminal',
       'interconnect module assembly component',
       'interconnect module component stratum based terminal',
       'interconnect module component surface feature',
       'interconnect module component terminal',
       'interconnect module component',
       'interconnect module edge segment',
       'interconnect module edge',
       'interconnect module macro component join terminal',
       'interconnect module macro component',
       'interface access material removal laminate component',
       'interface access stratum feature template component',
       'interface component',
       'interfacial connection',
       'internal probe access area',
       'join two physical connectivity definition supporting inter stratum feature',
       'join two physical connectivity definition supporting printed component',
       'laminate component',
       'laminate text component',
       'laminate text string component',
       'land interface terminal',
       'land join terminal',
       'land',
       'material removal laminate component',
       'minimally defined component terminal',
       'movable packaged component join terminal',
       'multi layer material removal laminate component',
       'multi layer stratum feature template component',
       'non conductive base blind via',
       'non functional land interface terminal',
       'non functional land join terminal',
       'non functional land',
       'packaged component join terminal',
       'packaged component',
       'packaged connector component interface terminal',
       'packaged connector component',
       'partially plated cutout',
       'partially plated interconnect module edge',
       'physical component',
       'physical connectivity interrupting cutout',
       'physical laminate component',
       'physical network supporting inter stratum feature',
       'plated conductive base blind via',
       'plated cutout edge segment',
       'plated cutout',
       'plated interconnect module edge segment',
       'plated interconnect module edge',
       'plated passage or unsupported passage',
       'plated passage',
       'primary stratum indicator symbol',
       'printed component join terminal',
       'printed connector component interface terminal',
       'probe access area',
       'routed interconnect component',
       'routed physical component',
       'special symbol laminate component',
       'stratum feature template component',
       'stratum feature',
       'thermal isolation laminate component',
       'unrouted conductive interconnect element',
       'unsupported passage dependent non functional land',
       'unsupported passage',
       'via and contact size dependent land',
       'via and contact size dependent non functional land',
       'via dependent land',
       'via dependent non functional land',
       'via terminal',
       'via']))) = 2))) = 1);
  WR3: (NOT (SELF\group.name = 
       'layout spacing requirements property')) OR
       (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN
       TYPEOF (ga)) |
       (SIZEOF (QUERY (rp <* QUERY (it <* aga.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_OBJECT' IN 
       TYPEOF (it)) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_OBJECT' IN 
       TYPEOF (rp)) AND
       (rp\characterized_object.description = 
       'dependent design object category'))) = 1))) = 1);
  WR4: (NOT (SELF\group.name = 
       'layout spacing requirements property')) OR
       (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN
       TYPEOF (ga)) |
       (SIZEOF (QUERY (rp <* QUERY (it <* aga.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_OBJECT' IN 
       TYPEOF (it)) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_OBJECT' IN 
       TYPEOF (rp)) AND
       (rp\characterized_object.description = 
       'reference design object category'))) = 1))) = 1);
END_ENTITY; -- grouped_requirements_property
(*

Formal propositions:

WR1: If the grouped_requirements_property has a group name of 'item restricted requirements property', it shall be assigned to exactly one item.

WR2: If the grouped_requirements_property has a group name of 'layout spacing requirements property', it shall be assigned to exactly two s with a name of 'assembly module assembly component', 'assembly module component terminal', 'assembly module component', 'assembly module macro component join terminal', 'assembly module macro component', 'assembly module', 'bare die component terminal', 'bare die component', 'bonded conductive base blind via', 'buried via', 'cable component', 'component feature', 'component mounting feature', 'component termination passage and contact size dependent land', 'component termination passage and contact size dependent non functional land', 'component termination passage dependent land', 'component termination passage dependent non functional land', 'component termination passage interface terminal', 'component termination passage join terminal', 'component termination passage', 'conductive interconnect element terminal', 'conductive interconnect element with pre defined transitions', 'conductive interconnect element with user defined single transition', 'connected area component', 'contact size dependent land', 'contact size dependent non functional land', 'cutout edge segment', 'cutout', 'dielectric material passage', 'electrical isolation laminate component', 'embedded component terminal', 'fiducial', 'fill area', 'filled area material removal laminate component', 'inter stratum feature', 'interconnect component interface terminal', 'interconnect component join terminal', 'interconnect module assembly component', 'interconnect module component stratum based terminal', 'interconnect module component surface feature', 'interconnect module component terminal', 'interconnect module component', 'interconnect module edge segment', 'interconnect module edge', 'interconnect module macro component join terminal', 'interconnect module macro component', 'interface access material removal laminate component', 'interface access stratum feature template component', 'interface component', 'interfacial connection', 'internal probe access area', 'join two physical connectivity definition supporting inter stratum feature', 'join two physical connectivity definition supporting printed component', 'laminate component', 'laminate text component', 'laminate text string component', 'land interface terminal', 'land join terminal', 'land', 'material removal laminate component', 'minimally defined component terminal', 'movable packaged component join terminal', 'multi layer material removal laminate component', 'multi layer stratum feature template component', 'non conductive base blind via', 'non functional land interface terminal', 'non functional land join terminal', 'non functional land', 'packaged component join terminal', 'packaged component', 'packaged connector component interface terminal', 'packaged connector component', 'partially plated cutout', 'partially plated interconnect module edge', 'physical component', 'physical connectivity interrupting cutout', 'physical laminate component', 'physical network supporting inter stratum feature', 'plated conductive base blind via', 'plated cutout edge segment', 'plated cutout', 'plated interconnect module edge segment', 'plated interconnect module edge', 'plated passage or unsupported passage', 'plated passage', 'primary stratum indicator symbol', 'printed component join terminal', 'printed connector component interface terminal', 'probe access area', 'routed interconnect component', 'routed physical component', 'special symbol laminate component', 'stratum feature template component', 'stratum feature', 'thermal isolation laminate component', 'unrouted conductive interconnect element', 'unsupported passage dependent non functional land', 'unsupported passage', 'via and contact size dependent land', 'via and contact size dependent non functional land', 'via dependent land', 'via dependent non functional land', 'via terminal' or 'via'.

WR3: If the grouped_requirements_property has a group name of 'layout spacing requirements property', it shall be assigned to exactly one design_object with a description of 'dependent design object category'.

WR4: If the grouped_requirements_property has a group name of 'layout spacing requirements property', it shall be assigned to exactly one design_object with a description of 'reference design object category'.

5.2.3.1.159 guided_wave_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A guided_wave_terminal is a package_terminal that implements the ARM concept of Guided_wave_terminal.

EXPRESS specification:

*)
ENTITY guided_wave_terminal
   SUBTYPE OF (package_terminal);
END_ENTITY; -- guided_wave_terminal
(*

5.2.3.1.160 illuminance_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An illuminance_measure_with_unit is a measure_with_unit that implements the ARM concept of Illuminance_measure_with_unit.

EXPRESS specification:

*)
ENTITY illuminance_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\illuminance_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = lux;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- illuminance_measure_with_unit
(*

Formal propositions:

WR1: The illuminance_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The illuminance_measure_with_unit shall reference an si_unit with a name of lux.

WR3: The unit_component shall be an si_unit.

5.2.3.1.161 inductance_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An inductance_measure_with_unit is a measure_with_unit that implements the ARM concept of Inductance_measure_with_unit.

EXPRESS specification:

*)
ENTITY inductance_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\inductance_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = henry;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- inductance_measure_with_unit
(*

Formal propositions:

WR1: The inductance_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The inductance_measure_with_unit shall reference an si_unit with a name of henry.

WR3: The unit_component shall be an si_unit.

5.2.3.1.162 integral_shield

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An integral_shield is a component_shape_aspect that implements the ARM concept of Shield.

EXPRESS specification:

*)
ENTITY integral_shield
  SUBTYPE OF (component_shape_aspect);
WHERE
  WR1: SIZEOF (QUERY(pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN TYPEOF(pdr.relating_property_definition))
       OR ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
    'COMPONENT_SHAPE_ASPECT' IN TYPEOF(pdr.relating_property_definition)))
       AND (pdr\property_definition_relationship.name = 'shielded item'))) >=1;
END_ENTITY; -- integral_shield
(*

Formal propositions:

WR1: The integral_shield shall be related to at least one component_definition or to at least one component_shape_aspect as the 'shielded item'.

5.2.3.1.163 inter_stratum_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An inter_stratum_feature is a component_shape_aspect that implements the ARM concepts of:
  • Cutout
  • Cutout_edge_segment
  • Dielectric_material_passage
  • Inter_stratum_feature
  • Interconnect_module_edge
  • Interconnect_module_edge_segment
  • Partially_plated_cutout
  • Partially_plated_interconnect_module_edge
  • Physical_connectivity_interrupting_cutout
  • Unsupported_passage

EXPRESS specification:

*)
ENTITY inter_stratum_feature
 SUBTYPE OF (component_shape_aspect);
WHERE
  WR1: SELF\shape_aspect.description IN ['bonded conductive base blind via', 
       'buried via', 'component termination passage', 
       'interfacial connection', 'non conductive base blind via', 
       'plated conductive base blind via', 'plated cutout', 
       'partially plated cutout', 
       'plated cutout edge segment', 
       'partially plated interconnect module edge', 
       'plated interconnect module edge segment', 
       'plated interconnect module edge', 'unsupported passage', 'cutout', 
       'physical connectivity interrupting cutout', 
       'dielectric material passage', 'cutout edge segment', 
       'interconnect module edge segment', 'interconnect module edge'];
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'feature of size') AND
       (it\descriptive_representation_item.description IN ['true', 'false']))) = 1)) = 1))) = 1;
  WR3: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description IN
       ['inter stratum feature template',
       'via template',
       'component termination passage template',
       'unsupported passage template']))) = 1;
  WR4: (NOT (SELF\shape_aspect.description = 'cutout edge segment')) OR
       (SIZEOF (QUERY (cc <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed cutout') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE' IN
       TYPEOF (cc.relating_shape_aspect)) AND
       ((cc.relating_shape_aspect\shape_aspect.description =
       'cutout') OR
       (cc.relating_shape_aspect\shape_aspect.description =
       'physical connectivity interrupting cutout') OR
       (cc.relating_shape_aspect\shape_aspect.description =
       'partially plated cutout')))) = 1);
  WR5: (NOT (SELF\shape_aspect.description = 'interconnect module edge segment')) OR
       (SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed edge') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE' IN
       TYPEOF (ce.relating_shape_aspect)) AND
       ((ce.relating_shape_aspect\shape_aspect.description =
       'interconnect module edge') OR
       (ce.relating_shape_aspect\shape_aspect.description =
       'interconnect module edge')
        ))) = 1);
  WR6: (NOT (SELF\shape_aspect.description = 'dielectric material passage')) OR
       (SIZEOF (QUERY (pp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'precedent passage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE' IN
       TYPEOF (pp.relating_shape_aspect)) AND
       ((pp.relating_shape_aspect\shape_aspect.description =
       'cutout') OR
       (pp.relating_shape_aspect\shape_aspect.description =
       'physical connectivity interrupting cutout') OR
       (pp.relating_shape_aspect\shape_aspect.description =
       'partially plated cutout')))) = 1);
  WR7: (NOT (SELF\shape_aspect.description = 'dielectric material passage')) OR
       ((SIZEOF (QUERY (rp <* QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN
       TYPEOF (pd)) |
       rp\property_definition.name = 'feature material')) <= 1) OR
       (SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) <= 1));
  WR8: (NOT (SELF\shape_aspect.description = 
       'physical connectivity interrupting cutout')) OR
       (SIZEOF (QUERY (ice <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'interrupted connectivity elements') |
       ice.relating_shape_aspect\shape_aspect.name =
       'conductive interconnect element')) >= 1);
  WR9: (NOT (SELF\shape_aspect.description = 'unsupported passage')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'unsupported passage template'))) = 1);
  WR10: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SIZEOF (QUERY (prpc <*
       USEDIN (SELF.of_shape.definition.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1);
 WR11: (NOT (SELF\shape_aspect.description = 'cutout edge segment')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE_EDGE_SEGMENT_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)))) = 1);
 WR12: (NOT (SELF\shape_aspect.description = 
       'plated cutout edge segment')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE_EDGE_SEGMENT_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)))) = 1);
 WR13: (NOT (SELF\shape_aspect.description = 
       'interconnect module edge segment')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE_EDGE_SEGMENT_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)))) = 1);
 WR14: (NOT (SELF\shape_aspect.description = 
       'plated interconnect module edge segment')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE_EDGE_SEGMENT_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)))) = 1);
END_ENTITY; -- inter_stratum_feature
(*

Formal propositions:

WR1: The inter_stratum_feature shall have a description of 'bonded conductive base blind via', 'buried via', 'component termination passage', 'interfacial connection', 'non conductive base blind via', 'plated conductive base blind via', 'partially plated cutout', 'plated cutout', 'plated cutout edge segment', 'plated interconnect module edge segment', 'partially plated interconnect module edge', 'plated interconnect module edge', 'unsupported passage', 'cutout', 'physical connectivity interrupting cutout', 'dielectric material passage', 'cutout edge segment', 'interconnect module edge segment', or 'interconnect module edge'.

WR2: The inter_stratum_feature shall have exactly one descriptive_representation_item with a name of 'feature of size' and a description of 'true' or 'false'.

WR3: The inter_stratum_feature shall be related, as an instantiated template, to exactly one part_template_definition that has a description of 'inter stratum feature template', 'via template', 'component termination passage template', or 'unsupported passage template'.

WR4: If the inter_stratum_feature has a description of 'cutout edge segment', the inter_stratum_feature shall be related to exactly one inter_stratum_feature with a description of either 'cutout' or 'physical connectivity interrupting cutout' or 'partially plated cutout' as the 'composed cutout'.

WR5: If the inter_stratum_feature has a description of 'interconnect module edge segment', the inter_stratum_feature shall be related to exactly one inter_stratum_feature with a description of 'interconnect module edge' or of 'partially plated interconnect module edge' as a 'composed edge'.

WR6: If the inter_stratum_feature has a description of 'dielectric material passage', the inter_stratum_feature shall be related to exactly one inter_stratum_feature with a description of either 'cutout' or 'physical connectivity interrupting cutout' or 'partially plated cutout' as the 'precedent passage'.

WR7: If the inter_stratum_feature has a description of 'dielectric material passage', it shall have at most one requirements_property with a name of 'feature material' or be the definition for at most one material_designation.

WR8: If the inter_stratum_feature has a description of 'physical connectivity interrupting cutout', the inter_stratum_feature shall be related to at least one shape_aspect with a name of 'conductive interconnect element' as 'interrupted connectivity elements'.

WR9: If the inter_stratum_feature has a description of 'unsupported passage', the inter_stratum_feature shall be related to exactly one part_template_definition with a description of 'unsupported passage template' as an 'instantiated template'.

WR10: The inter_stratum_feature shall be an aspect of the shape of a component_definition that is the definition of a product that is categorized as an 'interconnect module'.

WR11: If the inter_stratum_feature has a description of 'cutout edge segment ', the inter_stratum_feature shall be related, as an 'instantiated template', to exactly one inter_stratum_feature_edge_segment_template'.

WR12: If the inter_stratum_feature has a description of 'plated cutout edge segment ', the inter_stratum_feature shall be related, as an 'instantiated template', to exactly one 'inter_stratum_feature_edge_segment_template'.

WR13: If the inter_stratum_feature has a description of 'interconnect module edge segment ', the inter_stratum_feature shall be related, as an 'instantiated template', to exactly one inter_stratum_feature_edge_segment_template'.

WR14: If the inter_stratum_feature has a description of 'plated interconnect module edge segment ', the inter_stratum_feature shall be related, as an 'instantiated template', to exactly one 'inter_stratum_feature_edge_segment_template'.

5.2.3.1.164 inter_stratum_feature_edge_segment_template

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An inter_stratum_feature_edge_segment_template is an inter_stratum_feature and shape_aspect_relationship that implements the ARM concept of Interconnect_module_edge_segment.

EXPRESS specification:

*)
ENTITY inter_stratum_feature_edge_segment_template
  SUBTYPE OF (part_template_definition,shape_aspect_relationship);
WHERE
  wr1: (SIZEOF (QUERY (ce <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE_EDGE_TEMPLATE' IN
       TYPEOF (ce.relating_shape_aspect)) 
       )) = 1);
  wr2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  wr3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  wr4: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
  wr5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\part_template_definition ||
       SELF\shape_aspect_relationship ||
       SELF\inter_stratum_feature_edge_segment_template)) = 0;
END_ENTITY; -- inter_stratum_feature_edge_segment_template
(*

Formal propositions:

WR1: The inter_stratum_feature_edge_segment_template shall be related to exactly one inter_stratum_feature_edge_template.

WR2: The inter_stratum_feature_edge_segment_template shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship relating attribute.

WR3: The inter_stratum_feature_edge_segment_template shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship related attribute.

WR4: The two edge_segment_vertex instances referenced shall not be the same instance of edge_segment_vertex.

WR5: The inter_stratum_feature_edge_segment_template shall not participate in complex instances other than those of its immediate supertypes.

5.2.3.1.165 inter_stratum_feature_edge_template

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A inter_stratum_feature_edge_template is a part_template_definition that implements the ARM concept of inter_stratum_feature_edge_template.

EXPRESS specification:

*)
ENTITY inter_stratum_feature_edge_template
  SUBTYPE OF (part_template_definition);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\part_template_definition ||
       SELF\inter_stratum_feature_edge_template)) = 0;
  WR2: SELF\shape_aspect.description = 
       'inter stratum feature edge template';
END_ENTITY; -- inter_stratum_feature_edge_template
(*

Formal propositions:

WR1: The inter_stratum_feature_edge_template shall not participate in a complex instance of other than it's direct supertypes.

WR2: The inter_stratum_feature_edge_template shall have a description of 'inter stratum feature edge template'.

5.2.3.1.166 interconnect_definition

An interconnect_definition is a physical_unit that implements the ARM concepts of Pcb and Pcb_usage_view.

EXPRESS specification:

*)
ENTITY interconnect_definition
 SUBTYPE OF (physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: NOT EXISTS(SELF\product_definition.name) OR
       (SELF\product_definition.name = 'interconnect module');
  WR3: (NOT (SELF.frame_of_reference.name = 'physical design')) OR
       (SIZEOF (QUERY (du <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design usage') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_INTERCONNECT_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_INTERCONNECT_DEFINITION'] *
       TYPEOF (du.relating_product_definition)) = 1) AND
       (du.relating_product_definition.frame_of_reference.name = 
       'physical design usage') AND
       (du.relating_product_definition\product_definition.name = 
       'interconnect module')
)) = 1);
END_ENTITY; -- interconnect_definition
(*

Formal propositions:

WR1: The interconnect_definition shall have a name that is 'interconnect module'.

WR2: If the interconnect_definition is a physical design, it shall relate to exactly one interconnect_definition, externally_defined_interconnect_definition, or library_defined_interconnect_definition that is a physical design usage with a name of 'interconnect module' as the design usage.

5.2.3.1.167 interconnect_module_component_surface_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interconnect_module_component_surface_feature is a shape_aspect. An interconnect_module_component_surface_feature implements the ARM concept of: Interconnect_module_component_surface_feature

EXPRESS specification:

*)
ENTITY interconnect_module_component_surface_feature
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition);
  WR2: (SELF\shape_aspect.description IN [
       'interconnect module component surface feature']);
  WR3: SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       i_f.relating_shape_aspect\shape_aspect.description IN
       ['interconnect module secondary surface',
        'interconnect module primary surface',
        'interconnect module cavity surface',
        'interconnect module cutout surface',
        'interconnect module edge surface',
        'interconnect module edge segment surface'])) = 1;
END_ENTITY; -- interconnect_module_component_surface_feature
(*

Formal propositions:

WR1: The interconnect_module_component_surface_feature shall be an aspect of the shape of a component_definition.

WR2: The interconnect_module_component_surface_feature shall have a description of 'interconnect module component surface feature'.

WR3: The interconnect_module_component_surface_feature shall be related to exactly one shape_aspect with a description of 'interconnect module secondary surface', 'interconnect module primary surface', 'interconnect module edge surface', 'interconnect module cavity surface', 'interconnect module cavity surface', or 'interconnect module edge segment surface' as the 'instantiated feature'.

5.2.3.1.168 interconnect_module_design_object_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interconnect_module_design_object_category is a characterized_object that specifies a design object category for the implementation of the ARM concept of Interconnect_module_constraint_region.

EXPRESS specification:

*)
ENTITY interconnect_module_design_object_category
  SUBTYPE OF (characterized_object);
WHERE
  WR1: SELF\characterized_object.description IN 
       ['cutout category', 
       'fill area category', 
       'inter stratum feature category', 
       'stratum feature category', 
       'via category'];
END_ENTITY; -- interconnect_module_design_object_category
(*

Formal propositions:

WR1: The interconnect_module_design_object_category shall have a description of 'cutout category', 'fill area category', 'inter stratum feature category', 'stratum feature category', or 'via category'.

5.2.3.1.169 interconnect_module_cutout_segment_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A interconnect_module_cutout_segment_surface is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Interconnect_module_cutout_segment_surface.

EXPRESS specification:

*)
ENTITY interconnect_module_cutout_segment_surface
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  wr1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  wr2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  wr3: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
  WR4: SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed surface') |
       ('interconnect module cutout surface' = 
       ce.relating_shape_aspect\shape_aspect.description) )) = 1;
  WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\interconnect_module_cutout_segment_surface)) = 0;
END_ENTITY; -- interconnect_module_cutout_segment_surface
(*

Formal propositions:

WR1: The interconnect_module_cutout_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship related attribute.

WR2: The interconnect_module_cutout_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship relating attribute.

WR3: The edge_segment_vertex instances referenced shall not be the same instance of edge_segment_vertex.

WR4: The interconnect_module_cutout_segment_surface shall be related to exactly one shape_aspect with a description of 'interconnect module cutout surface' as the 'composed surface'.

WR5: The interconnect_module_cutout_segment_surface shall not be in a complex instance other than with it's immediate supertypes.

5.2.3.1.170 interconnect_module_edge_segment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A interconnect_module_edge_segment is an inter_stratum_feature and shape_aspect_relationship that implements the ARM concept of Interconnect_module_edge_segment.

EXPRESS specification:

*)
ENTITY interconnect_module_edge_segment
  SUBTYPE OF (inter_stratum_feature,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect.description IN [
       'plated interconnect module edge segment', 
       'interconnect module edge segment'];
  WR2: SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name =
       'inter stratum join'))) <= 1;
  WR3: (NOT (SELF\shape_aspect.description = 
       'plated interconnect module edge segment')) OR
       (SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed edge') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_INTER_STRATUM_FEATURE' IN
       TYPEOF (ce.relating_shape_aspect)) AND
       (ce.relating_shape_aspect\shape_aspect.description =
       'plated interconnect module edge'))) = 1);
  WR4: (NOT (SELF\shape_aspect.description = 'interconnect module edge segment')) OR
       (SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed edge') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE' IN
       TYPEOF (ce.relating_shape_aspect)) AND
       (ce.relating_shape_aspect\shape_aspect.description =
       'interconnect module edge'))) = 1);
  wr5: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  wr6: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  wr7: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
END_ENTITY; -- interconnect_module_edge_segment
(*

Formal propositions:

WR1: The interconnect_module_edge_segment shall have a description of either 'plated interconnect module edge segment', or 'interconnect module edge segment'.

WR2: The interconnect_module_edge_segment shall be related to at most one join_shape_aspect with a name of 'inter stratum join' as a 'join implementation'.

WR3: The interconnect_module_edge_segment shall be related to exactly one plated_inter_stratum_feature as the 'composed edge' if the description of the interconnect_module_edge_segment is 'plated interconnect module edge segment'.

WR4: The interconnect_module_edge_segment shall be related to exactly one inter_stratum_feature as the 'composed edge'.

WR5: The interconnect_module_edge_segment shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship relating attribute.

WR6: The interconnect_module_edge_segment shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship related attribute.

WR7: The edge_segment_vertex instances referenced shall not be the same instance of edge_segment_vertex.

5.2.3.1.171 interconnect_module_edge_segment_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A interconnect_module_edge_segment_surface is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Interconnect_module_edge_segment_surface.

EXPRESS specification:

*)
ENTITY interconnect_module_edge_segment_surface
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  wr1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  wr2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  wr3: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
  WR4: SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed surface') |
       ('interconnect module edge surface' = 
       ce.relating_shape_aspect\shape_aspect.description) )) = 1;
  WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\interconnect_module_edge_segment_surface)) = 0;
END_ENTITY; -- interconnect_module_edge_segment_surface
(*

Formal propositions:

WR1: The interconnect_module_edge_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship related attribute.

WR2: The interconnect_module_edge_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship relating attribute.

WR3: The edge_segment_vertex instances referenced shall not be the same instance of edge_segment_vertex.

WR4: The interconnect_module_edge_segment_surface shall be related to exactly one shape_aspect with a description of 'interconnect module edge surface' as the 'composed surface'.

WR5: The interconnect_module_edge_segment_surface shall not be in a complex instance other than with it's immediate supertypes.

5.2.3.1.172 interconnect_module_interface_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interconnect_module_interface_terminal is an interconnect_module_terminal that implement the ARM concept of Interconnect_module_interface_terminal

EXPRESS specification:

*)
ENTITY interconnect_module_interface_terminal
  SUBTYPE OF (interconnect_module_terminal);
END_ENTITY; -- interconnect_module_interface_terminal
(*

5.2.3.1.173 interconnect_module_join_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interconnect_module_join_terminal is an interconnect_module_terminal that implement the ARM concept of Interconnect_module_join_terminal

EXPRESS specification:

*)
ENTITY interconnect_module_join_terminal
  SUBTYPE OF (interconnect_module_terminal);
END_ENTITY; -- interconnect_module_join_terminal
(*

5.2.3.1.174 interconnect_module_macro_component_join_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interconnect_module_macro_component_join_terminal is a shape_aspect that implements the ARM concept of internal.ref Linkend="Interconnect_module_macro_component_join_terminal">

EXPRESS specification:

*)
ENTITY interconnect_module_macro_component_join_terminal
  SUBTYPE OF (component_terminal);
WHERE
  WR1: NOT (SELF\shape_aspect.description IN 
       ['assembly module component terminal', 
        'bare die component terminal', 
       'component termination passage join terminal', 
       'conductive interconnect element terminal', 
       'interconnect component join terminal', 
       'land join terminal', 
       'minimally defined component terminal',
       'non functional land join terminal', 
       'packaged component join terminal', 
       'printed component join terminal', 'package terminal occurrence',
       'via terminal']);
END_ENTITY; -- interconnect_module_macro_component_join_terminal
(*

Formal propositions:

WR1: The interconnect_module_macro_component_join_terminal shall not have a description of 'bare die component terminal', 'component termination passage join terminal', 'conductive interconnect element terminal', 'interconnect component join terminal', 'assembly module component terminal', 'land join terminal', 'minimally defined component terminal', 'non functional land join terminal', 'packaged component join terminal', 'printed component join terminal', 'package terminal occurrence', or 'via terminal'.

5.2.3.1.175 interconnect_module_stratum_based_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interconnect_module_stratum_based_terminal is an interconnect_module_terminal that implements the ARM concept of Interconnect_module_stratum_based_terminal.

EXPRESS specification:

*)
ENTITY interconnect_module_stratum_based_terminal
  SUBTYPE OF (interconnect_module_terminal);
END_ENTITY; -- interconnect_module_stratum_based_terminal
(*

5.2.3.1.176 interconnect_module_terminal

An interconnect_module_terminal is a shape_aspect that implements the ARM concepts of Interconnect_module_terminal and Part_terminal.

EXPRESS specification:

*)
ENTITY interconnect_module_terminal
  SUPERTYPE OF (ONEOF(interconnect_module_interface_terminal,
                      interconnect_module_join_terminal))
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: EXISTS(SELF.of_shape.definition\product_definition.name);
  WR2: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.
       frame_of_reference.name = 
       'physical design usage') AND
       (SELF.of_shape.definition\product_definition.name = 
       'interconnect module');
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr.used_representation))) >= 1)) >= 1; 
  WR4: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_CONNECTED_TERMINALS_DEFINITION'
       IN TYPEOF (mct.relating_shape_aspect))) <= 1;
  WR5: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar.related_shape_aspect\shape_aspect.description = 
       'connection zone')) <= 1;
END_ENTITY; -- interconnect_module_terminal
(*

Formal propositions:

WR1: The physical_unit name shall exist.

WR2: The interconnect_module_terminal shall be an aspect of the shape of a physical_unit that is an 'interconnect module' and that is a 'physical design usage'.

WR3: The interconnect_module_terminal shall have at least one property_definition that is represented by a shape_representation.

WR4: The interconnect_module_terminal shall be related to at most one part_connected_terminals_definition as a 'member connected terminal'.

WR5: The interconnect_module_terminal shall be related to no more than one shape_aspect with a description of 'connection zone'.

5.2.3.1.177 interface_access_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interface_access_component_shape_aspect is a component_shape_aspect that implements the ARM concept of Interface_access_laminate_component.

EXPRESS specification:

*)
ENTITY interface_access_component_shape_aspect
  SUBTYPE OF (component_shape_aspect);
END_ENTITY; -- interface_access_component_shape_aspect
(*

5.2.3.1.178 interface_access_material_removal_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interface_access_material_removal_component_shape_aspect is a material_removal_component_shape_aspect that implements the ARM concept of Interface_access_material_removal_laminate_component.

EXPRESS specification:

*)
ENTITY interface_access_material_removal_component_shape_aspect
  SUBTYPE OF (material_removal_component_shape_aspect);
END_ENTITY; -- interface_access_material_removal_component_shape_aspect
(*

5.2.3.1.179 interface_component_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interface_component_definition is a component_definition that implements the ARM concept of interface_component .

EXPRESS specification:

*)
ENTITY interface_component_definition
  SUBTYPE OF (component_definition);
WHERE
  WR1: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL' IN 
       TYPEOF (sa)) AND
       (sa\shape_aspect.description IN ['interconnect component interface terminal',
       'packaged connector component interface terminal']))) >= 1)) >= 1);
END_ENTITY; -- interface_component_definition
(*

Formal propositions:

WR1: The interface_component_definition shall have at least one shape_aspect that is a component_interface_terminal with a description of 'interconnect component interface terminal' or 'packaged connector component interface terminal'.

5.2.3.1.180 interface_mounted_join

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interface_mounted_join is a shape_aspect and a shape_aspect_relationship that relates a component_terminal to a component_interface_terminal. An interface_mounted_join implements the ARM concept of an Interface_mounted_join.

EXPRESS specification:

*)
ENTITY interface_mounted_join
 SUBTYPE OF (shape_aspect_relationship,shape_aspect);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL' IN
       TYPEOF (SELF.related_shape_aspect)) AND
       (SELF.related_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal');
  WR2: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (SELF.relating_shape_aspect)) AND
       ((SELF.relating_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal') OR
       (SELF.relating_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal') OR
       (SELF.relating_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal') OR
       (SELF.relating_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal') OR
       (SELF.relating_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal') OR
       (SELF.relating_shape_aspect\shape_aspect.description = 
       'packaged connector component interface terminal'));
END_ENTITY; -- interface_mounted_join
(*

Formal propositions:

WR1: The interface_mounted_join shall have a 'packaged connector component interface terminal' as the related_shape_aspect.

WR2: The interface_mounted_join shall have a component_terminal with the listed description as the relating_shape_aspect.

5.2.3.1.181 interfaced_group_component_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An interfaced_group_component_definition is a assembly_group_component_definition that implements the ARM concept of Interfaced_group_component .

EXPRESS specification:

*)
ENTITY interfaced_group_component_definition
  SUBTYPE OF (assembly_group_component_definition);
WHERE
  WR1: (SIZEOF (QUERY (gc <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'group component') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERFACE_COMPONENT_DEFINITION' IN 
       TYPEOF (gc.related_product_definition))))
       >= 1);
END_ENTITY; -- interfaced_group_component_definition
(*

Formal propositions:

WR1: The interfaced_group_component_definition shall relate to at least one interface_component_definition to specify a 'group component'.

5.2.3.1.182 join_shape_aspect

A join_shape_aspect is a shape_aspect that implements the ARM concepts of:
  • Inter_stratum_join_relationship
  • Intra_stratum_join_relationship
  • Join_relationship
  • Unrouted_join_relationship

EXPRESS specification:

*)
ENTITY join_shape_aspect
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: NOT(SELF\shape_aspect.name IN ['constrained intra layer join',
       'inter stratum join', 'intra stratum join']) OR 
       (SIZEOF (QUERY (cp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connected point') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYER_CONNECTION_POINT' IN
       TYPEOF (cp.related_shape_aspect))) >= 2);
  WR2: SIZEOF (QUERY (nt <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'network topology') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_NETWORK' IN
       TYPEOF (nt.relating_shape_aspect))) = 1;
  WR3: (NOT (SELF\shape_aspect.name = 'intra stratum join')) OR
       (SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (ji.related_shape_aspect)) AND
       (ji.related_shape_aspect\shape_aspect.description = 'conductor'))) <= 1);
  WR4: (NOT (SELF\shape_aspect.name = 'intra stratum join')) OR
       (SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (ji.related_shape_aspect)) AND
       (ji.related_shape_aspect\shape_aspect.description = 'connected filled area'))) 
       <= 1);
  WR5: (NOT (SELF\shape_aspect.name = 'inter stratum join')) OR
       (SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_CONCEPT_RELATIONSHIP' IN
       TYPEOF (ji.related_shape_aspect)) AND
       (ji.related_shape_aspect\shape_aspect.description = 
       'physical network supporting stratum feature conductive join')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_INTER_STRATUM_FEATURE' IN
       TYPEOF (ji.related_shape_aspect)))) <= 1);
  WR6: NOT(SELF\shape_aspect.name = 'unrouted join') OR
       (SIZEOF (QUERY (cp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'unrouted terminals') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (cp.related_shape_aspect))) >= 2);
END_ENTITY; -- join_shape_aspect
(*

Formal propositions:

WR1: The join_shape_aspect with a name of 'constrained intra layer join', 'inter stratum join', or 'intra stratum join' shall be used to relate at least two layer_connection_points to specify a 'connected point'.

WR2: The join_shape_aspect shall be related to exactly one physical_network as the 'network topology'.

WR3: If the join_shape_aspect has a name of 'intra stratum join', it shall relate to at most one stratum_feature with a description of 'conductor' as a 'join implementation'.

WR4: If the join_shape_aspect has a name of 'intra stratum join', it shall relate to at most one stratum_feature with a description of 'connected filled area' as a 'join implementation'.

WR5: If the join_shape_aspect has a name of 'inter stratum join', it shall relate to at most one stratum_concept_relationship with a description of 'physical network supporting stratum feature conductive join' or plated_inter_stratum_feature as a 'join implementation'.

WR6: The join_shape_aspect with a name of 'unrouted join', shall be used to relate at least two component_terminal to specify 'unrouted terminals'.

5.2.3.1.183 keepout_design_object_category

A keepout_design_object_category is a characterized_object that specifies a design object category for the implementation of the ARM concepts of Part_template_3d_keepout_shape , Part_template_planar_keepout_shape , Physical_unit_3d_keepout_shape , and Physical_unit_planar_keepout_shape .

EXPRESS specification:

*)
ENTITY keepout_design_object_category
  SUBTYPE OF (characterized_object);
WHERE
  WR1: SELF\characterized_object.description IN 
       ['assembly module assembly component category',
        'component feature category',
        'assembly ee material category',
        'interconnect ee material category',
        'interconnect module assembly component category',
        'via category',
        'inter stratum feature category',
        'cutout category',
        'fill area category',
        'laminate component category',
        'stratum feature category'];
END_ENTITY; -- keepout_design_object_category
(*

Formal propositions:

WR1: The keepout_design_object_category shall have a description of 'assembly module assembly component category', 'component feature category', 'assembly ee material category', 'interconnect ee material category', 'interconnect module assembly component category', 'via category', 'inter stratum feature category', 'cutout category', 'fill area category', 'laminate component category', or 'stratum feature category'.

5.2.3.1.184 laminate_component_interface_terminal

A laminate_component_interface_terminal is a shape_aspect. A laminate_component_interface_terminal implements the ARM concepts of:
  • Component_termination_passage_interface_terminal
  • Land_interface_terminal
  • Non_functional_land_interface_terminal
  • Printed_connector_component_interface_terminal

EXPRESS specification:

*)
ENTITY laminate_component_interface_terminal
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: (NOT (SELF\shape_aspect.description IN 
       ['component termination passage interface terminal', 
       'land interface terminal', 
       'printed connector component interface terminal',
       'non functional land interface terminal'])) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition));
  WR2: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature')) = 1;
(*
  WR3: (NOT (SELF\shape_aspect.description = 
       'component termination passage interface terminal')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_PASSAGE' IN
       TYPEOF (associated_component(SELF))) AND
       (associated_component(SELF).description =
       'component termination passage'));
*)
  WR4: (NOT (SELF\shape_aspect.description = 
       'component termination passage interface terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       i_f.relating_shape_aspect\shape_aspect.description =
       'component termination passage template interface terminal')) = 1);
 WR5: (NOT (SELF\shape_aspect.description IN
       ['land interface terminal',
       'non functional land interface terminal'])) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_TEMPLATE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)) AND
       (TRUE)))) = 1);
(*
 WR6: NOT(SELF\shape_aspect.description = 'land interface terminal') OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN
       TYPEOF (associated_component(SELF))) AND
(associated_component(SELF).description IN
       ['via and contact size dependent land',
       'contact size dependent land',
    'component termination passage and contact size dependent land']));
 WR7: NOT(SELF\shape_aspect.description =
       'non functional land interface terminal') OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN
       TYPEOF (associated_component(SELF))) AND
(associated_component(SELF).description IN
       ['via and contact size dependent non functional land',
       'contact size dependent non functional land',
    'component termination passage and contact size dependent non functional land']));
*)
 WR8: (NOT (SELF\shape_aspect.description = 
       'printed connector component interface terminal')) OR
       (SELF.product_definitional);
 WR9: (NOT (SELF\shape_aspect.description = 
       'printed connector component interface terminal')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_COMPONENT' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.description = 
       'printed connector component'));
 WR10: (NOT (SELF\shape_aspect.description = 
       'printed connector component interface terminal')) OR
       (SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated feature') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN
       TYPEOF (i_f.relating_shape_aspect)) AND
       (i_f.relating_shape_aspect\shape_aspect.description =
       'interface terminal'))) = 1);
 WR11: (NOT (SELF\shape_aspect.description =
       'printed connector component interface terminal')) OR
       (SIZEOF (QUERY (i <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       pdr\shape_aspect_relationship.name = 'implementation') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE'] *
       TYPEOF (i.relating_shape_aspect)) = 1)
       )) = 1);
 WR12: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\
        product_definition.frame_of_reference\
        application_context_element.name = 'layout occurrence');
END_ENTITY; -- laminate_component_interface_terminal
(*

Formal propositions:

WR1: The laminate_component_interface_terminal shall be an aspect of the shape of a component_definition.

WR2: The laminate_component_interface_terminal shall be related to exactly one shape_aspect as an 'instantiated feature'.

WR3: If the laminate_component_interface_terminal has a description of 'component termination passage interface terminal', the laminate_component_interface_terminal shall be related to exactly one plated_passage with a description of 'component termination passage' as the 'associated component'.

WR4: If the laminate_component_interface_terminal has a description of 'component termination passage interface terminal', the laminate_component_interface_terminal shall be related to exactly one shape_aspect with a description of 'component termination passage template interface terminal' as the 'instantiated feature'.

WR5: If the laminate_component_interface_terminal has a description of either 'land interface terminal' or 'non functional land interface terminal', the laminate_component_interface_terminal shall be related to exactly one land_template_terminal as the 'instantiated feature'.

WR6: If the laminate_component_interface_terminal has a description of 'land interface terminal', the laminate_component_interface_terminal shall be related to exactly one land with the appropriate description as the 'associated component'.

WR7: If the laminate_component_interface_terminal has a description of 'non functional land interface terminal', the laminate_component_interface_terminal shall be related to exactly one land with the appropriate description as the 'associated component'.

WR8: If the laminate_component_interface_terminal has a description of 'printed connector component interface terminal', it shall lie on the boundary of a product.

WR9: If the laminate_component_interface_terminal has a description of 'printed connector component interface terminal', it shall be an aspect of the shape of a printed_component that has a description of 'printed connector component'.

WR10: If the laminate_component_interface_terminal has a description of 'printed connector component interface terminal', the laminate_component_interface_terminal shall be related to exactly one printed_part_template_terminal with a description of 'interface terminal' as the 'instantiated feature'.

WR11: If the laminate_component_interface_terminal has a description of 'printed connector component interface terminal', the laminate_component_interface_terminal shall be related to exactly one stratum_feature as the 'implementation'.

WR12: The laminate_component_interface_terminal shall be a shape_aspect for a component_definition with a frame_of_reference of 'layout occurrence'.

5.2.3.1.185 laminate_group_component_make_from_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A laminate_group_component_make_from_relationship is a make_from_usage_option that implements the ARM concept of Laminate_group_component_make_from_relationship.

EXPRESS specification:

*)
ENTITY laminate_group_component_make_from_relationship
  SUBTYPE OF (make_from_usage_option);
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_DEFINITION'] *
       TYPEOF (SELF.relating_product_definition)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_GROUP_COMPONENT_DEFINITION'] *
       TYPEOF (SELF.related_product_definition)) = 1;
  WR3: SIZEOF( QUERY(pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
        (SIZEOF( QUERY(pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       ((pdr.name = 'stratum mapping') AND
       (pdr.related_property_definition\property_definition.
         definition\product_definition_relationship.name = 'stratum make from')
        AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'MAKE_FROM_USAGE_OPTION' IN 
         TYPEOF(pdr.related_property_definition\property_definition.definition)))
          )) > 0) 
        )) > 0;
END_ENTITY; -- laminate_group_component_make_from_relationship
(*

Formal propositions:

WR1: The laminate_group_component_make_from_relationship shall reference an assembly_group_component_definition as its relating_product_definition.

WR2: The laminate_group_component_make_from_relationship shall reference an assembly_group_component_definition as its related_product_definition.

WR3: The laminate_group_component_make_from_relationship shall reference at least one make_from_usage_option with a name of 'stratum make from' as the 'stratum mapping'.

5.2.3.1.186 land

A land is a component_shape_aspect that implements the ARM concepts of:
  • Component_termination_passage_and_contact_size_dependent_land
  • Component_termination_passage_and_contact_size_dependent_non_functional_land
  • Component_termination_passage_dependent_land
  • Contact_size_dependent_land
  • Contact_size_dependent_non_functional_land
  • Non_functional_land
  • Land
  • Unsupported_passage_dependent_non_functional_land
  • Via_and_contact_size_dependent_land
  • Via_and_contact_size_dependent_non_functional_land
  • Via_dependent_land
  • Via_dependent_non_functional_land

EXPRESS specification:

*)
ENTITY land
 SUBTYPE OF (component_shape_aspect);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN  
       TYPEOF (SELF.of_shape.definition)) AND 
       (SIZEOF (QUERY (prpc <* 
       USEDIN (SELF.of_shape.definition.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1);
  WR2: SIZEOF (QUERY (i_f <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (i_f.relating_shape_aspect))) = 1;
  WR3: SIZEOF (QUERY (aud <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'alternate usage definition') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (aud.relating_shape_aspect))) <= 1;
  WR4: SIZEOF (QUERY (sfi <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'stratum feature implementation') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (sfi.relating_shape_aspect))) = 1;
(*
  WR5: (NOT (SELF\shape_aspect.description IN
       ['via and contact size dependent land',
    'component termination passage and contact size dependent land'])) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF) |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'land interface terminal')))) >= 0);
  WR6: (NOT (SELF\shape_aspect.description IN
       ['functional land', 'via dependent land',
       'via and contact size dependent land',
       'component termination passage dependent land',
       'contact size dependent land',
   'component termination passage and contact size dependent land'])) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF) |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'land join terminal')))) >= 1);
  WR7: (NOT (SELF\shape_aspect.description IN
       ['via and contact size dependent non functional land',
       'component termination passage and contact size '])) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF) |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'non functional land interface terminal')))) = 1);
  WR8: (NOT (SELF\shape_aspect.description IN
       ['non functional land', 'via dependent non functional land',
       'via and contact size dependent non functional land',
       'component termination passage dependent non functional land',
       'contact size dependent non functional land',
       'component termination passage and contact size ' + 
       'dependent non functional land',
       'unsupported passage dependent non functional land'])) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF)|
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'non functional land join terminal')))) >= 1);
*)
  WR9: (NOT (SELF\shape_aspect.description IN
       ['component termination passage and contact size dependent land',
       'component termination passage and contact size dependent' + 
       'non functional land',
       'component termination passage dependent land',
       'component termination passage dependent non functional land'])) OR
       (SIZEOF (QUERY (rp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'reference passage') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_PASSAGE' IN
       TYPEOF (rp.relating_shape_aspect)) AND
       (rp.relating_shape_aspect\shape_aspect.description =
       'component termination passage')))) = 1);
 WR10: (NOT (SELF\shape_aspect.description IN
       ['via and contact size dependent land',
       'via and contact size dependent non functional land',
       'via dependent land', 'via dependent non functional land'])) OR
       (SIZEOF (QUERY (rv <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'reference via') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_PASSAGE' IN
       TYPEOF (rv.relating_shape_aspect)) AND
       (rv.relating_shape_aspect\shape_aspect.description IN
       ['buried via', 'interfacial connection', 
       'bonded conductive base blind via', 'non conductive base blind via',
       'plated conductive base blind via'])))) = 1);
 WR11: (NOT (SELF\shape_aspect.description = 
       'unsupported passage dependent non functional land')) OR
       (SIZEOF (QUERY (rp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'reference passage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE' IN
       TYPEOF (rp.relating_shape_aspect)) AND
       (rp.relating_shape_aspect\shape_aspect.description =
       'unsupported passage'))) = 1);
 WR12: (NOT (SELF\shape_aspect.description IN
       ['component termination passage dependent land',
       'component termination passage dependent non functional land'])) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'default component termination passage based')))) = 1);
 WR13: (NOT (SELF\shape_aspect.description IN
       ['component termination passage and contact size dependent land',
       'component termination passage and contact size dependent ' +
       'non functional land'])) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'default attachment size and component termination ' +
       'passage based')))) = 1);
 WR14: (NOT (SELF\shape_aspect.description IN
       ['contact size dependent land',
       'contact size dependent non functional land'])) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'default attachment size based')))) = 1);
 WR15: (NOT (SELF\shape_aspect.description IN
       ['via and contact size dependent land',
       'via and contact size dependent non functional land'])) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'default attachment size and via based')))) = 1);
 WR16: (NOT (SELF\shape_aspect.description IN
       ['via dependent land',
       'via dependent non functional land'])) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'default via based')))) = 1);
 WR17: (NOT (SELF\shape_aspect.description = 
       'unsupported passage dependent ' +
       'non functional land')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_PHYSICAL_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'default unsupported passage based'))) = 1);
END_ENTITY; -- land
(*

Formal propositions:

WR1: The land shall be an aspect of the shape of a component_definition that is the definition of a product that is categorized as an 'template module'.

WR2: The land shall be related to exactly one land_physical_template as the 'instantiated template'.

WR3: The land shall be related to at most one land_physical_template as the 'alternate usage definition'.

WR4: The land shall be related to exactly one stratum_feature as a 'stratum feature implementation'.

WR5: If the land has a description of 'via and contact size dependent land', or 'component termination passage and contact size dependent land', the land may relate to zero or more component_shape_aspect that has a description of 'land interface terminal' to specify the 'associated component'.

NOTE: A contact size dependent land may have more than one interface terminal.

WR6: If the land has a description of 'functional land', 'via dependent land', 'via and contact size dependent land', 'component termination passage dependent land', 'contact size dependent land', or 'component termination passage and contact size dependent land', the land shall relate to at least one component_terminal that has a description of 'land join terminal' to specify the 'associated component'.

WR7: If the land has a description of 'via and contact size dependent non functional land', 'component termination passage and contact size dependent non functional land', the land shall relate to exactly one component_shape_aspect that has a description of 'non functional land interface terminal' to specify the 'associated component'.

WR8: If the land has a description of 'non functional land', 'via dependent non functional land', 'via and contact size dependent non functional land', 'component termination passage dependent non functional land', 'contact size dependent non functional land', 'component termination passage and contact size dependent non functional land', or 'unsupported passage dependent non functional land', the land shall relate to at least one component_terminal that has a description of 'non functional land join terminal' to specify the 'associated component'.

WR9: If the land has a description of 'component termination passage and contact size dependent land', 'component termination passage and contact size dependent non functional land', 'component termination passage dependent land', or 'component termination passage dependent non functional land', the land shall be related to exactly one plated_passage with a description of 'component termination passage' as a 'reference passage'.

WR10: If the land has a description of 'via and contact size dependent land', 'via and contact size dependent non functional land', 'via dependent land', or 'via dependent non functional land', the land shall be related to exactly one plated_passage that has a description of 'buried via', 'interfacial connection', 'bonded conductive base blind via', 'non conductive base blind via', or 'plated conductive base blind via' as a 'reference via'.

WR11: If the land has a description of 'unsupported passage dependent non functional land', the land shall be related to exactly one inter_stratum_feature with a description of 'unsupported passage' as a 'reference passage'.

WR12: If the land has a description of either 'component termination passage dependent land' or 'component termination passage dependent non functional land', the land shall be related to exactly one land_physical_template with a description of 'default component termination passage based' as an 'instantiated template'.

WR13: If the land has a description of either 'component termination passage and contact size dependent land' or 'component termination passage and contact size dependent non functional land', the land shall be related to exactly one land_physical_template with a description of 'default attachment size and component termination passage based' as an 'instantiated template'.

WR14: If the land has a description of either 'contact size dependent land' or 'contact size dependent non functional land', the land shall be related to exactly one land_physical_template with a description of 'default attachment size based' as an 'instantiated template'.

WR15: If the land has a description of either 'via and contact size dependent land' or 'via and contact size dependent non functional land', the land shall be related to exactly one land_physical_template with a description of 'default attachment size and via based' as an 'instantiated template'.

WR16: If the land has a description of either 'via dependent land' or 'via dependent non functional land', the land shall be related to exactly one land_physical_template with a description of 'default via based' as an 'instantiated template'.

WR17: If the land has a description of 'unsupported passage dependent non functional land', the land shall be related to exactly one land_physical_template with a description of 'default unsupported passage based' as an 'instantiated template'.

5.2.3.1.187 land_physical_template

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A land_physical_template is a part_template_definition that implements the ARM concepts of:
  • Default_attachment_size_and_component_termination_passage_based_land_physical_template
  • Default_attachment_size_and_via_based_land_physical_template
  • Default_attachment_size_based_land_physical_template
  • Default_component_termination_passage_based_land_physical_template
  • Default_land_physical_template
  • Default_passage_based_land_physical_template
  • Default_via_based_land_physical_template
  • Land_physical_template

EXPRESS specification:

*)
ENTITY land_physical_template
  SUBTYPE OF (part_template_definition);
WHERE
  WR1: SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       SIZEOF (QUERY (duc <* USEDIN (ada.assigned_document,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DOCUMENT_USAGE_CONSTRAINT.SOURCE') |
    duc\document_usage_constraint.subject_element = 
                 'pre defined classification code')) = 1)) <= 1;
  WR2: SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated definition') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND_TEMPLATE_TERMINAL' IN
       TYPEOF (am.related_shape_aspect))) >= 1;
 WR3:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN ['default attachment size based',
       'default attachment size and component termination passage based', 
       'default attachment size and via based'])) OR
       (SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       ((sar\shape_aspect_relationship.name = 'minimum attachment region size') AND 
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone')))) <= 1));
 WR4:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN ['default attachment size based',
       'default attachment size and component termination passage based', 
       'default attachment size and via based'])) OR
       (SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       ((sar\shape_aspect_relationship.name = 'maximum attachment region size') AND 
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone')))) <= 1));
 WR5:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN 
       ['default component termination passage based',
   'default attachment size and component termination passage based'])) OR
       (SIZEOF (QUERY (tu <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'technology usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN
       TYPEOF (tu.related_shape_aspect)) AND
       (tu.related_shape_aspect\shape_aspect.description = 
       'default component termination passage definition'))) = 1));
 WR6:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN 
       ['default attachment size and component termination passage based',
       'default attachment size based', 
       'default attachment size and via based', 
       'default component termination passage based',
       'default via based',
       'default unsupported passage based'])) OR
       (SIZEOF (QUERY (ost <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'of stratum technology') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
       TYPEOF (ost.relating_shape_aspect.of_shape.definition)
       )) = 1));
 WR7:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN 
       ['default attachment size and component termination passage based', 
       'default attachment size and via based', 
       'default component termination passage based', 'default via based', 
       'default unsupported passage based'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2)) = 2)) = 1))) = 0));
 WR8:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN 
       ['default attachment size and component termination passage based', 
       'default attachment size and via based', 
       'default component termination passage based', 'default via based', 
       'default unsupported passage based'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND 
       (it\representation_item.name = 'minimum fabrication allowance'))) 
       = 1)) = 1))) = 0));
 WR9:  NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN 
       ['default attachment size and component termination passage based', 
       'default attachment size and via based', 
       'default component termination passage based', 'default via based', 
       'default unsupported passage based'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 'minimum annular ring'))) = 1
       )) = 1))) = 0));
 WR10: NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN 
       ['default attachment size and component termination passage based', 
       'default attachment size and via based', 
       'default component termination passage based', 'default via based', 
       'default unsupported passage based'])) OR
       (SIZEOF (QUERY (tu <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'technology usage') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN
       TYPEOF (tu.related_shape_aspect))) = 1));
 WR11: NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description IN ['default via based',
       'default attachment size and via based'])) OR
       (SIZEOF (QUERY (tu <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'technology usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN
       TYPEOF (tu.related_shape_aspect)) AND
       (tu.related_shape_aspect\shape_aspect.description = 'default via definition'))) 
       = 1));
 WR12: NOT(EXISTS(SELF\shape_aspect.description)) OR
       ((NOT (SELF\shape_aspect.description = 'default unsupported passage')) OR
       (SIZEOF (QUERY (tu <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'technology usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN
       TYPEOF (tu.related_shape_aspect)) AND
       (tu.related_shape_aspect\shape_aspect.description = 
       'default unsupported passage definition'))) = 1));
END_ENTITY; -- land_physical_template
(*

Formal propositions:

WR1: The land_physical_template shall have a reference of at most one document that is constrained by a 'pre defined classification code'.

WR2: The land_physical_template shall be used to relate at least one land_template_terminal to specify the 'access mechanism'.

WR3: If the land_physical_template has a description of 'default attachment size based', 'default attachment size and component termination passage based', or 'default attachment size and via based', it shall be to relate no more than one shape_aspect with a name of 'connection zone' as the 'minimum attachment region size'.

WR4: If the land_physical_template has a description of 'default attachment size based', 'default attachment size and component termination passage based', or 'default attachment size and via based', it shall be to relate no more than one shape_aspect with a name of 'connection zone' as the 'maximum attachment region size'.

WR5: If the land_physical_template has a description of 'default component termination passage based' or 'default attachment size and component termination passage based', it shall relate to a passage_technology with a description of 'default component termination passage definition' to specify the 'technology usage'.

WR6: If the land_physical_template has a description of 'default attachment size and component termination passage based', 'default attachment size based', 'default attachment size and via based', 'default component termination passage based', 'default via based', or 'default unsupported passage based', it shall relate to a stratum_technology as the 'of stratum technology'.

WR7: If the land_physical_template has a description of 'default attachment size and component termination passage based', 'default attachment size and via based', 'default component termination passage based', 'default via based', or 'default unsupported passage based', it shall have a representation that contains exactly two length_measure_with_units.

WR8: If the land_physical_template has a description of 'default attachment size and component termination passage based', 'default attachment size and via based', 'default component termination passage based', 'default via based', or 'default unsupported passage based', it shall have a representation that contains exactly one length_measure_with_unit with a name of 'minimum fabrication allowance'.

WR9: If the land_physical_template has a description of 'default attachment size and component termination passage based', 'default attachment size and via based', 'default component termination passage based', 'default via based', or 'default unsupported passage based', it shall have a representation that contains exactly one length_measure_with_unit with a name of 'minimum annular ring'.

WR10: If the land_physical_template has a description of 'default attachment size and component termination passage based', 'default attachment size and via based', 'default component termination passage based', 'default via based', or 'default unsupported passage based', it shall relate a passage_technology to specify the 'technology usage'.

WR11: If the land_physical_template has a description of 'default via based' or 'default attachment size and via based', it shall relate to a passage_technology with a description of 'default via definition' to specify the 'technology usage'.

WR12: If the land_physical_template has a description of 'default unsupported passage', it shall relate to a passage_technology with a description of 'default unsupported passage definition' to specify the 'technology usage'.

5.2.3.1.188 land_template_terminal

A land_template_terminal is a shape_aspect that implements the ARM concepts of:
  • Land_template_interface_terminal
  • Land_template_join_terminal
  • Land_template_terminal

EXPRESS specification:

*)
ENTITY land_template_terminal
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\shape_aspect.description IN ['interface terminal', 'join terminal'];
  WR2: SIZEOF (QUERY (tcz <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'terminal connection zone') AND
       (sar\shape_aspect_relationship.description IN ['edge curve', 'edge point', 
       'surface area', 'surface point'])) |
       tcz.related_shape_aspect\shape_aspect.description = 'connection zone')) >= 0;
END_ENTITY; -- land_template_terminal
(*

Formal propositions:

WR1: The land_template_terminal shall have a description of either 'interface terminal' or 'land terminal'.

WR2: The land_template_terminal shall relate to zero or more shape_aspect with a name of 'connection zone' to specify the 'terminal connection zone' which may be described as a 'edge curve', 'edge point', 'surface_area', or 'surface point'.

5.2.3.1.189 layer

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A layer is a shape_aspect that implements the ARM concept of Layer.

EXPRESS specification:

*)
ENTITY layer
 SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name;
WHERE
  WR1: SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       SIZEOF (QUERY (duc <* USEDIN (ada.assigned_document,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DOCUMENT_USAGE_CONSTRAINT.SOURCE') |
       duc\document_usage_constraint.subject_element = 'layer definition')) = 1)) <= 1;       
  WR2: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP'
       IN TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition_relationship.name = 
                                    'inter stratum extent');
END_ENTITY; -- layer
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within a population of layer.

WR1: The layer shall be referenced by at most one document that has a usage constraint which specifies the 'layer definition'.

WR2: The layer shall be an aspect of the shape of a product_definition_relationship with a name of 'inter stratum extent'.

Informal propositions:

IP1: The same geometric representation shall be attached to each of the stratum specified by the layer.

IP2: The name shall be unique.

5.2.3.1.190 layer_connection_point

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A layer_connection_point is a shape_aspect that implements the ARM concepts of:
  • Dependently_located_layer_connection_point
  • Explicitly_located_layer_connection_point
  • Layer_connection_point

EXPRESS specification:

*)
ENTITY layer_connection_point
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
WHERE
  WR1: SELF\shape_aspect.of_shape.definition\product_definition.
       name = 'design layer';
  WR2: SIZEOF (QUERY (cp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connected point') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (cp.relating_shape_aspect)) AND 
       (cp.relating_shape_aspect.name = 'inter stratum join')))) <= 1;
  WR3: SIZEOF (QUERY (cp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connected point') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (cp.relating_shape_aspect)) AND 
       (cp.relating_shape_aspect.name = 'intra stratum join')))) = 1;
  WR4: NOT(
       SIZEOF (QUERY (cp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connected point') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (cp.relating_shape_aspect)) AND 
       (cp.relating_shape_aspect.name = 'inter stratum join')))) = 1)
       OR
       (SIZEOF (QUERY (cp <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connected point') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (cp.relating_shape_aspect)) AND 
       (cp.relating_shape_aspect.name = 'intra stratum join')))) = 1);
  WR5: (NOT (SELF\shape_aspect.description = 'dependently located')) OR
       (SIZEOF (QUERY (ado <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated design object') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTER_STRATUM_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_MODULE_TERMINAL'] *
       TYPEOF (ado.relating_shape_aspect)) = 1) OR
       ((SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL'] *
       TYPEOF (ado.relating_shape_aspect)) = 1) AND
       (ado.relating_shape_aspect.description IN ['printed component join terminal',
        'embedded component terminal']))
       )) = 1);
  WR6: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) AND
       (pdr.used_representation\representation.name = 'connection point location 2d') AND
       (SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CARTESIAN_POINT' IN
       TYPEOF (it)) AND (it\geometric_representation_item.dim = 2 )
       )) = 1))) <= 1))) = 0);
  WR7: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) AND
       (pdr.used_representation\representation.name = 'connection point location 3d') AND
       (SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CARTESIAN_POINT' IN
       TYPEOF (it)) AND (it\geometric_representation_item.dim = 3 )
       )) = 1))) <= 1))) = 0);
  WR8: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) AND
       ((pdr.used_representation\representation.name = 'connection point location 2d')
       OR
       (pdr.used_representation\representation.name = 'connection point location 3d'))
       )) >= 1))) = 0);
  WR9: (NOT (SELF\shape_aspect.description = 'dependently located')) OR
       (SIZEOF (QUERY (ado <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'reference zone') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT'] *
       TYPEOF (ado.relating_shape_aspect)) = 1) OR
       ((SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT'] *
       TYPEOF (ado.relating_shape_aspect)) = 1) AND
       (ado.relating_shape_aspect.description IN ['connection zone']))
       )) <= 1);
END_ENTITY; -- layer_connection_point
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within the stratum that is the product_definition for this layer_connection_point.

WR1: The layer_connection_point shall be an aspect of the shape of a product_definition with a name of 'design layer'.

WR2: The layer_connection_point shall be related to no more than one join_shape_aspect with a name of 'inter stratum join' as a 'connected point'.

WR3: The layer_connection_point shall be related to one join_shape_aspect with a name of 'intra stratum join' as a 'connected point'.

WR4: If the layer_connection_point is related to a join_shape_aspect with a name of 'inter stratum join' as a 'connected point', the layer_connection_point shall be related to a join_shape_aspect with a name of 'intra stratum join' as a 'connected point'.

WR5: If the layer_connection_point has a description of 'dependently located', it shall be related to exactly one inter_stratum_feature or interconnect_module_terminal or component_terminal that has a description of 'embedded component terminal' or 'printed component join terminal' as the 'associated design object'.

WR6: The layer_connection_point shall have no more than one shape_representation as the 'connection point location 2d' that contains exactly one cartesian_point with a dimensionality of 2.

WR7: The layer_connection_point shall have no more than one shape_representation as the 'connection point location 3d' that contains exactly one cartesian_point with a dimensionality of 3.

WR8: The layer_connection_point shall have no less than one shape_representation as either the 'connection point location 2d' or the 'connection point location 3d'.

WR9: If the layer_connection_point has a description of 'dependently located', it shall be related to no more than one shape_aspect that has a description of 'connection zone' as the 'reference zone'.

Informal propositions:

IP1: Each layer_connection_point shall be within the resolved areal extent of not more than one stratum_feature.

IP2: Each layer_connection_point shall be specified by not more than one physical_network.

5.2.3.1.191 layer_connection_point_link

A layer_connection_point_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Layer_connection_point_link

EXPRESS specification:

*)
ENTITY layer_connection_point_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYER_CONNECTION_POINT' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYER_CONNECTION_POINT' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\layer_connection_point_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SIZEOF(QUERY( cp <* USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
              cp\shape_aspect_relationship.name = 'connected points')) = 1;
END_ENTITY; -- layer_connection_point_link 
(* 

Formal propositions:

WR1: The related point shall not be the relating point.

WR2: The layer_connection_point_link shall relate to only a layer_connection_point in the related_shape_aspect.

WR3: The layer_connection_point_link shall relate to only a layer_connection_point in the relating_shape_aspect.

WR4: The types of layer_connection_point_link shall be only layer_connection_point_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: Each layer_connection_point_link shall be referenced exactly once by a shape_aspect_relationship with a name of 'connected points' by the related_shape_aspect attribute.

5.2.3.1.192 layout_macro_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A layout_macro_component is a printed_component that implements the ARM concept of Layout_macro_component .

EXPRESS specification:

*)
ENTITY layout_macro_component
  SUBTYPE OF (printed_component);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pt_occ <* QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       sa\shape_aspect.description = 'layout macro component shape aspect') |
       SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (pt_occ,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYOUT_MACRO_FLOOR_PLAN_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect))
       )) = 1)) = 1))) = 0;
  WR2: SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design definition') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYOUT_MACRO_DEFINITION'] *
       TYPEOF (ip.relating_product_definition)) = 1)
       )) = 1;
  WR3: SELF\product_definition.description <> 'printed connector component';
END_ENTITY; -- layout_macro_component
(*

Formal propositions:

WR1: The layout_macro_component shall have exactly one shape_aspect with a name of 'layout macro component shape aspect' that is related to a layout_macro_floor_plan_template_definition.

WR2: The layout_macro_component shall be associated to exactly one layout_macro_definition as a 'design definition'.

WR3: The layout_macro_component shall not have a description of 'printed connector component'.

5.2.3.1.193 layout_macro_definition

An layout_macro_definition is an interconnect_definition that implements the ARM concept of Layout_macro_definition.

EXPRESS specification:

*)
ENTITY layout_macro_definition
 SUBTYPE OF (interconnect_definition);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: SIZEOF (QUERY (du <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design usage') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_INTERCONNECT_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_INTERCONNECT_DEFINITION'] *
       TYPEOF (du.relating_product_definition)) = 1) AND
       (du.relating_product_definition.frame_of_reference.name = 
       'physical design usage') AND
       (du.relating_product_definition\product_definition.name = 'interconnect module')
       )) = 0;
 WR3: SELF.frame_of_reference\application_context_element.name = 'physical design';
 WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pt_occ <* QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       sa\shape_aspect.description = 'layout macro definition shape aspect') |
       SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (pt_occ,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'floor layout view') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYOUT_MACRO_FLOOR_PLAN_TEMPLATE' IN
       TYPEOF (it.relating_shape_aspect))
       )) = 1)) = 1))) = 0;
END_ENTITY; -- layout_macro_definition
(*

Formal propositions:

WR1: The name shall exist.

WR2: The layout_macro_definition shall relate to exactly zero interconnect_definition, externally_defined_interconnect_definition, or library_defined_interconnect_definition that is a physical design usage with a name of 'interconnect module' as the design usage.

WR3: The layout_macro_definition shall be a physical design.

WR4: The layout_macro_definition shall be related to exactly one layout_macro_floor_plan_template.

5.2.3.1.194 layout_macro_definition_terminal_to_usage_terminal_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A layout_macro_definition_terminal_to_usage_terminal_assignment is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Layout_macro_definition_terminal_to_usage_terminal_assignment.

EXPRESS specification:

*)
ENTITY layout_macro_definition_terminal_to_usage_terminal_assignment
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.name;
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect_relationship ||
       SELF\layout_macro_definition_terminal_to_usage_terminal_assignment ||
       SELF\shape_aspect)) = 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN 
       TYPEOF(SELF\shape_aspect_relationship.relating_shape_aspect);
  WR3: SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.description
       IN ['component termination passage join terminal',
           'conductive interconnect element terminal',
           'land join terminal',
           'non functional land join terminal',
           'printed component join terminal',
           'via terminal'];
  WR4: SIZEOF(USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT')) <= 1;

END_ENTITY; -- layout_macro_definition_terminal_to_usage_terminal_assignment
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique.

WR1: A layout_macro_definition_terminal_to_usage_terminal_assignment shall not be any other type of shape_aspect_relationship or any other type of shape_aspect.

WR2: A layout_macro_definition_terminal_to_usage_terminal_assignment shall relate to a shape_aspect with a description of 'printed part template terminal'.

WR3: A layout_macro_definition_terminal_to_usage_terminal_assignment shall relate to a shape_aspect with a description listed.

WR4: A layout_macro_definition_terminal_to_usage_terminal_assignment shall be referenced no more than once.

5.2.3.1.195 layout_macro_floor_plan_template

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A layout_macro_floor_plan_template is a part_template_plan_template that implements the ARM concepts of Layout_macro_floor_plan_template.

EXPRESS specification:

*)
ENTITY layout_macro_floor_plan_template
  SUBTYPE OF (part_template_definition);
WHERE
  WR1: NOT(SELF\shape_aspect.description IN
      ['component termination passage template',
       'component termination passage template',
       'default trace template',
       'inter stratum feature template',
       'printed connector template',
       'printed part cross section template',
       'printed part template',
       'trace template',
       'unsupported passage template',
       'via template',
       'non conductive cross section template']);
  WR2: SIZEOF(QUERY( sar <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       ((sar\shape_aspect_relationship.name = 'access maps') AND
      ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYOUT_MACRO_DEFINITION_TERMINAL_TO_USAGE_TERMINAL_ASSIGNMENT' IN
       TYPEOF (sar.relating_shape_aspect)))
       )) >=1;
END_ENTITY; -- layout_macro_floor_plan_template
(*

Formal propositions:

WR1: The layout_macro_floor_plan_template description shall not be any of: 'component termination passage template' 'component termination passage template', 'default trace template', 'inter stratum feature template', 'printed connector template', 'printed part cross section template', 'printed part template', 'trace template', 'unsupported passage template', 'via template', 'non conductive cross section template'.

WR2: The layout_macro_floor_plan_template shall be related to at least one layout_macro_definition_terminal_to_usage_terminal_assignment.

5.2.3.1.196 length_trimmed_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A length_trimmed_terminal is an altered_package_terminal that implements the ARM concept of Length_trimmed_terminal.

EXPRESS specification:

*)
ENTITY length_trimmed_terminal
   SUBTYPE OF (altered_package_terminal);
WHERE
 WR1: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2)) = 2)) = 1))) = 0);
 WR2:  (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
                   'maximum trimmed length'))) = 1)) = 1))) = 0);
 WR3:  (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND 
        (it\representation_item.name = 
                  'minimum trimmed length'))) = 1
       )) = 1))) = 0);

END_ENTITY;
(*

Formal propositions:

WR1: The length_trimmed_terminal shall have a representation that contains exactly two length_measure_with_units.

WR2: The length_trimmed_terminal shall have a representation that contains exactly one length_measure_with_unit with a name of 'maximum trimmed length'.

WR3: The length_trimmed_terminal shall have a representation that contains exactly one length_measure_with_unit with a name of 'minimum trimmed length'.

5.2.3.1.197 library_defined_assembly_definition

A library_defined_assembly_definition is a library_defined_physical_unit that implements the ARM concept of Pca_usage_view in conjunction with Library_item.

EXPRESS specification:

*)
ENTITY library_defined_assembly_definition
 SUBTYPE OF (library_defined_physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: SELF\product_definition.name = 'assembly module';
  WR3: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'pca terminal'))) >= 2))) = 0);
END_ENTITY; -- library_defined_assembly_definition
(*

Formal propositions:

WR1: The name shall exist.

WR2: The library_defined_assembly_definition shall be a definition of a product that has a name of 'assembly module'.

WR3: If the library_defined_assembly_definition has a frame_of_reference name of 'physical design usage', it shall have at least two shape_aspects that are assembly_module_terminals with a description of 'pca terminal'.

5.2.3.1.198 library_defined_bare_die

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A library_defined_bare_die is a library_defined_physical_unit that implements the ARM concept of Bare_die in conjunction with Library_item.

EXPRESS specification:

*)
ENTITY library_defined_bare_die
 SUBTYPE OF (library_defined_physical_unit);
WHERE
  WR1: SIZEOF (QUERY (ifdu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (ifdu.relating_product_definition)) AND
       (ifdu.relating_product_definition.frame_of_reference.name = 
       'functional design usage'))) = 1;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (dut <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'device unit technology') |
       dut.relating_property_definition\property_definition.name = 
       'unit technology')) = 1)) = 1;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE_TERMINAL' IN 
       TYPEOF (sa))) >= 2))) = 0;
END_ENTITY; -- library_defined_bare_die
(*

Formal propositions:

WR1: The library_defined_bare_die shall be related to exactly one functional_unit with a frame_of_reference name of 'functional design usage' as the 'implemented function'.

WR2: The library_defined_bare_die shall have exactly one property_definition that is related to exactly one property_definition with a name of 'unit technology' as the 'device unit technology'.

WR3: The library_defined_bare_die shall have at least two shape_aspects that are bare_die_terminals.

5.2.3.1.199 library_defined_functional_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A library_defined_functional_unit is an externally_defined_functional_unit that implements the ARM concepts of:
  • Ee_product_definition
  • Functional_unit_definition
  • Functional_unit_usage_view
  • Library_ee_product_definition

EXPRESS specification:

*)
ENTITY library_defined_functional_unit
 SUBTYPE OF (externally_defined_functional_unit);
DERIVE
  library : external_source := SELF\externally_defined_item.source;
END_ENTITY; -- library_defined_functional_unit
(*

5.2.3.1.200 library_defined_interconnect_definition

A library_defined_interconnect_definition is a library_defined_physical_unit that implements the ARM concept of Pcb_usage_view in conjunction with Library_item.

EXPRESS specification:

*)
ENTITY library_defined_interconnect_definition
 SUBTYPE OF (library_defined_physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: SELF\product_definition.name = 'interconnect module';
END_ENTITY; -- library_defined_interconnect_definition
(*

Formal propositions:

WR1: The name shall exist.

WR2: The library_defined_interconnect_definition shall be a definition with a name of 'interconnect module'.

5.2.3.1.201 library_defined_package

A library_defined_package is a library_defined_physical_unit that implements the ARM concepts of Altered_package and Package in conjunction with Library_item.

EXPRESS specification:

*)
ENTITY library_defined_package
 SUBTYPE OF (library_defined_physical_unit);
WHERE
  WR1: SELF.frame_of_reference.name = 'physical design usage';
  WR2: SIZEOF(USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION')) > 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY(sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE' IN
       TYPEOF (sa))) = 1))) = 1;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY' IN 
       TYPEOF (sa))) = 1))) <= 1;
  WR5: NOT(EXISTS(SELF\product_definition.description) AND
        (SELF\product_definition.description = 'altered package')) OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       (pdr\product_definition_relationship.name = 'package preparation') AND
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE'] * 
       TYPEOF (pdr.relating_product_definition)) = 1))) = 1); 
END_ENTITY; -- library_defined_package
(*

Formal propositions:

WR1: The library_defined_package shall have a frame_of_reference name of 'physical design usage'.

WR2: The library_defined_package shall have at least one property_definition.

WR3: The library_defined_package shall have one seating_plane.

WR4: The library_defined_package shall have at most one package_body.

WR5: If the library_defined_package has a description of 'altered package', it shall be related to exactly one package, externally_defined_package, or library_defined_package as the 'package preparation'.

Informal propositions:

IP1: Each three-dimensional shape representation of the library_defined_package shall have exactly one geometric_representation_item that is an axis2_placement_3d and that axis2_placement_3d shall define the location and orientation of the seating plane in that representation. The normal of the seating plane in that representation shall be congruent with and the same direction as the Z axis of the axis2_placement_3d. The plane of the seating plane in that representation shall be congruent with the plane established by the X and Y axes of the axis2_placement_3d.

5.2.3.1.202 library_defined_packaged_connector

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A library_defined_packaged_connector is a library_defined_packaged_part that implements the ARM concept of Packaged_connector in conjunction with Library_item.

EXPRESS specification:

*)
ENTITY library_defined_packaged_connector
 SUBTYPE OF (library_defined_packaged_part);
END_ENTITY; -- library_defined_packaged_connector
(*

Informal propositions:

IP1: There shall be at least one shape_aspect that is a packaged_connector_terminal_relationship for the library_defined_packaged_part.

5.2.3.1.203 library_defined_packaged_part

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A library_defined_packaged_part is a library_defined_physical_unit that implements the ARM concepts of Altered_packaged_part and Packaged_part in conjunction with Library_item.

EXPRESS specification:

*)
ENTITY library_defined_packaged_part
 SUBTYPE OF (library_defined_physical_unit);
WHERE
  WR1: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN 
       TYPEOF (sa))) >= 2))) = 0);
  WR2: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1);
  WR3: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (ifu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN
       TYPEOF (ifu.relating_product_definition)) AND
       (ifu.relating_product_definition.frame_of_reference.name =
       'functional design usage'))) = 1);
  WR4: (NOT (SELF.frame_of_reference.name = 'physical design usage')) OR
       (SIZEOF (QUERY (upkg <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'used package') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE' IN
       TYPEOF (upkg.related_product_definition))) = 1);
  WR5: (NOT (SELF\product_definition.description = 'altered packaged part')) OR
       (SIZEOF (QUERY (bpp <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'base packaged part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] * 
       TYPEOF (bpp.relating_product_definition)) = 1) AND
       (bpp.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) >= 1);
  WR6: (NOT (SELF\product_definition.description = 'altered packaged part')) OR
       (SIZEOF (QUERY (upkg <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'used package') |
       SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] * 
       TYPEOF (upkg.relating_product_definition)) = 1)) >= 1);
END_ENTITY; -- library_defined_packaged_part
(*

Formal propositions:

WR1: If the library_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall have at least one shape_aspect that is a packaged_part_terminal.

WR2: If the library_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall have exactly one material_designation.

WR3: If the library_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall be related to exactly one functional_unit with a frame_of_reference name of 'functional design usage' as the 'implemented function'.

WR4: If the library_defined_packaged_part has a frame_of_reference name of 'physical design usage', it shall relate to exactly one package to specify the 'used package'.

WR5: If the library_defined_packaged_part has a description of 'altered packaged part', it shall be related to at least one packaged_part, externally_defined_packaged_part, or library_defined_packaged_part with a frame_of_reference name of 'physical design usage' as the 'base packaged part'.

WR6: If the library_defined_packaged_part has a description of 'altered packaged part', it shall be related to at least one package, externally_defined_package, or library_defined_package as the 'used package'.

5.2.3.1.204 library_defined_physical_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A library_defined_physical_unit is an externally_defined_physical_unit that implements the ARM concepts of:
  • Assembly_module_usage_view
  • Ee_product_definition
  • Interconnect_module_usage_view
  • Library_ee_product_definition
  • Physical_unit
  • Physical_unit_usage_view

EXPRESS specification:

*)
ENTITY library_defined_physical_unit
 SUPERTYPE OF (ONEOF (library_defined_package,
                      library_defined_assembly_definition,
                      library_defined_interconnect_definition,
                      library_defined_packaged_part, 
                      library_defined_bare_die))
 SUBTYPE OF (externally_defined_physical_unit);
DERIVE
  library : external_source := SELF\externally_defined_item.source;
END_ENTITY; -- library_defined_physical_unit
(*

5.2.3.1.205 library_defined_product_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A library_defined_product_definition is an externally_defined_product_definition that implements the ARM concept of: Library_defined_ee_product_definition

EXPRESS specification:

*)
ENTITY library_defined_product_definition
 SUBTYPE OF (externally_defined_product_definition);
DERIVE
  library : external_source := SELF\externally_defined_item.source;
END_ENTITY; -- library_defined_product_definition
(*

5.2.3.1.206 linear_array_component_definition_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A linear_array_component_definition_link is a product_definition and a product_definition_relationship that implements the ARM concept of Linear_array_placement_group_link

EXPRESS specification:

*)
ENTITY linear_array_component_definition_link
  SUBTYPE OF (product_definition,product_definition_relationship);
WHERE
  WR1: SELF\product_definition_relationship.related_product_definition :<>:
       SELF\product_definition_relationship.relating_product_definition;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_ARRAY_PLACEMENT_GROUP_COMPONENT_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.related_product_definition);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_ARRAY_PLACEMENT_GROUP_COMPONENT_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.relating_product_definition);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\product_definition ||
       SELF\product_definition_relationship ||
       SELF\linear_array_component_definition_link)) = 0;
  WR5: SELF\product_definition.name = '';
  WR6: SELF\product_definition_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')) = 1;
END_ENTITY; -- linear_array_component_definition_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The linear_array_component_definition_link shall relate to only a linear_array_placement_group_component_definition in the related_product_definition.

WR3: The linear_array_component_definition_link shall relate to only a linear_array_placement_group_component_definition in the relating_product_definition.

WR4: The types of linear_array_component_definition_link shall be only linear_array_component_definition_link, product_definition, and product_definition_relationship.

WR5: The name attribute of the product_definition supertype shall be an empty string.

WR6: The name attribute of the product_definition_relationship supertype shall be an empty string.

WR7: Each linear_array_component_definition_link shall be referenced exactly once by a product_definition_relationship related_product_definition.

5.2.3.1.207 linear_array_component_shape_aspect_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A linear_array_component_shape_aspect_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Linear_array_placement_group_link

EXPRESS specification:

*)
ENTITY linear_array_component_shape_aspect_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_ARRAY_PLACEMENT_GROUP_COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_ARRAY_PLACEMENT_GROUP_COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\linear_array_component_shape_aspect_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) = 1;
END_ENTITY; -- linear_array_component_shape_aspect_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The linear_array_component_shape_aspect_link shall relate to only a linear_array_placement_group_component_shape_aspect in the related_shape_aspect.

WR3: The linear_array_component_shape_aspect_link shall relate to only a linear_array_placement_group_component_shape_aspect in the relating_shape_aspect.

WR4: The types of linear_array_component_shape_aspect_link shall be only linear_array_component_shape_aspect_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: Each linear_array_component_shape_aspect_link shall be referenced exactly once by a shape_aspect_relationship related_shape_aspect.

5.2.3.1.208 linear_array_placement_group_component_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An linear_array_placement_group_component_definition is a array_placement_group_component_definition that implements the ARM concept of Linear_array_placement_group .

EXPRESS specification:

*)
ENTITY linear_array_placement_group_component_definition
  SUBTYPE OF (array_placement_group_component_definition);
END_ENTITY; -- linear_array_placement_group_component_definition
(*

5.2.3.1.209 linear_array_placement_group_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An linear_array_placement_group_component_shape_aspect is a array_placement_group_component_shape_aspect that implements the ARM concepts of Linear_array_placement_group .

EXPRESS specification:

*)
ENTITY linear_array_placement_group_component_shape_aspect
  SUBTYPE OF (array_placement_group_component_shape_aspect);
END_ENTITY; -- linear_array_placement_group_component_shape_aspect
(*

5.2.3.1.210 linear_composite_array_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A linear_composite_array_shape_aspect is a composite_shape_aspect that implements the ARM concept of Part_linear_array_feature .

EXPRESS specification:

*)
ENTITY linear_composite_array_shape_aspect
  SUBTYPE OF (composite_array_shape_aspect);
END_ENTITY; -- linear_composite_array_shape_aspect
(*

5.2.3.1.211 linear_composite_array_shape_aspect_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A linear_composite_array_shape_aspect_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Part_linear_array_feature_link

EXPRESS specification:

*)
ENTITY linear_composite_array_shape_aspect_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_COMPOSITE_ARRAY_SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_COMPOSITE_ARRAY_SHAPE_ASPECT' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\linear_composite_array_shape_aspect_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT')) = 1;
END_ENTITY; -- linear_composite_array_shape_aspect_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The linear_composite_array_shape_aspect_link shall relate to only a linear_composite_array_shape_aspect_shape_aspect in the related_shape_aspect.

WR3: The linear_composite_array_shape_aspect_link shall relate to only a linear_composite_array_shape_aspect_shape_aspect in the relating_shape_aspect.

WR4: The types of linear_composite_array_shape_aspect_link shall be only linear_composite_array_shape_aspect_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: Each linear_composite_array_shape_aspect_link shall be referenced exactly once by a shape_aspect_relationship related_shape_aspect.

5.2.3.1.212 linear_profile_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A linear_profile_tolerance is a physical_unit_geometric_tolerance that implements the ARM concept of:
  • Composite_linear_profile_locating_tolerance
  • Composite_linear_profile_refinement_tolerance
  • Profile_of_any_line_tolerance
  • Profile_of_any_line_tolerance_with_referenced_datum_system
  • Profile_of_any_line_tolerance_without_referenced_datum_system

EXPRESS specification:

*)
ENTITY linear_profile_tolerance
  SUBTYPE OF (physical_unit_geometric_tolerance);
WHERE
  WR1: ( NOT( SELF\geometric_tolerance.name = 
        'linear profile refinement')) OR
       ( SIZEOF (QUERY( gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_PROFILE_TOLERANCE' IN 
        TYPEOF(gtr.relating_geometric_tolerance))
       AND (gtr\geometric_tolerance_relationship.name = 'linear profile refining control')
       AND ((gtr.relating_geometric_tolerance\geometric_tolerance.name = 
       'linear profile locating')
       OR (gtr.relating_geometric_tolerance\geometric_tolerance.name = 
       'linear profile refinement')))
       )) = 1);
  WR2: ( NOT(SELF\geometric_tolerance.name = 'linear profile locating')) OR
       ( SIZEOF( QUERY( gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_PROFILE_TOLERANCE' IN 
       TYPEOF(gtr.relating_geometric_tolerance))
       AND (gtr.relating_geometric_tolerance\geometric_tolerance.name = 
       'linear profile refinement'))
       AND (gtr\geometric_tolerance_relationship.name = 'linear profile refining control'))) = 1);
  WR3: ( NOT( ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_WITH_SPECIFIED_DATUM_SYSTEM' IN TYPEOF(SELF))
       AND ( SELF\geometric_tolerance.name = 
       'linear profile refinement'))) OR
       ( SIZEOF( QUERY( gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_PROFILE_TOLERANCE' IN 
       TYPEOF(gtr.relating_geometric_tolerance))
       AND (gtr.relating_geometric_tolerance\geometric_tolerance.name = 
      'linear profile refinement')
       AND (gtr\geometric_tolerance_relationship.name = 'linear profile refining control')
       )) = 0);
  WR4: ( NOT( SELF\geometric_tolerance.name = 
       'linear profile refinement')) OR
       ( SIZEOF (QUERY( gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LINEAR_PROFILE_TOLERANCE' IN 
       TYPEOF(gtr.relating_geometric_tolerance))
       AND (gtr.related_geometric_tolerance\geometric_tolerance.name = 
       'linear profile refinement')
       AND (gtr\geometric_tolerance_relationship.name = 'linear profile refining control'))
       )) <= 1);
  WR5: NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
END_ENTITY; -- linear_profile_tolerance
(*

Formal propositions:

WR1: If the linear_profile_tolerance has a name of 'linear profile refinement', it shall be related as the 'linear profile refining control' to exactly one linear_profile_tolerance with a name of either 'linear profile locating' or 'linear profile refinement'.

WR2: If the linear_profile_tolerance has a name of 'linear profile locating', it shall relate to exactly one linear_profile_tolerance with a name of 'linear profile refinement' to specify the 'linear profile refining control'.

WR3: If the linear_profile_tolerance is not a geometric_tolerance_with_specified_datum_system and has a name of 'linear profile refinement', it shall relate to exactly zero linear_profile_tolerance with a name of 'linear profile refinement' to specify the 'linear profile refining control'.

WR4: If the linear_profile_tolerance has a name of 'linear profile refinement', it shall relate to at most one linear_profile_tolerance with a name of 'linear profile refinement' to specify the 'linear profile refining control'.

WR5: The linear_profile_tolerance shall not be a modified_geometric_tolerance.

Informal propositions:

IP1: If linear_profile_tolerance is a geometric_tolerance_with_specified_datum_system it shall have a name of either 'linear profile', 'linear profile refinement', or 'linear profile locating'; otherwise, it shall have the name of either 'linear profile' or 'linear profile refinement.

IP2: If the linear_profile_tolerance has a name of 'linear profile refinement', it shall be related as the 'linear profile refining control' to exactly one linear_profile_tolerance with a name of either 'linear profile locating' or 'linear profile refinement'. Both of these linear_profile_tolerances shall specify the same shape_aspect as the toleranced_shape_aspect.

IP3: If the linear_profile_tolerance has a name of 'linear profile refinement' and it is related as the 'linear profile refining control' to exactly one linear_profile_tolerance with a name of 'linear profile refinement', it shall either not reference a datum_system or it shall have less physical_unit_datum in its referenced datum_system than the datum_system referenced by the linear_profile_tolerance to which it is related as the 'linear profile refining control'.

IP4: If the linear_profile_tolerance has a name of 'linear profile refinement' and it is related as the 'linear profile refining control' to exactly one linear_profile_tolerance with a name of 'linear profile locating', it shall either not reference a datum_system or it shall have less than or an equal number of physical_unit_datum in its referenced datum_system than the datum_system referenced by the linear_profile_tolerance to which it is related as the 'linear profile refining control'.

IP5: If the linear_profile_tolerance has a name of 'linear profile refinement' and it is a geometric_tolerance_with_specified_datum_system, the physical_unit_datum of its referenced datum_system shall be physical_unit_datum of the datum_system of the linear_profile_tolerance to which it is related as the 'linear profile refining control' and shall be assigned the same precedence.

IP6: If the linear_profile_tolerance has a name of 'linear profile refinement' and it is a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property without material conditions' to specify its 'referenced datum system definition', the linear_profile_tolerance to which it is related as the 'linear profile refining control' shall also be a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property without material conditions' to specify its 'referenced datum system definition'.

IP7: If the linear_profile_tolerance has a name of 'linear profile refinement' and it is a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property with material conditions' to specify its 'referenced datum system definition', the linear_profile_tolerance to which it is related as the 'linear profile refining control' shall also be a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property with material conditions' to specify its 'referenced datum system definition', and each of these property_definition shall relate to property_definition with a description of 'datum feature material condition property' to specify their 'applied material condition property'. These property_definition shall be applied to physical_unit_datum_features in the context of the datum_systems referenced by each of the linear_profile_tolerance. The name of the property_definition applied to each of the physical_unit_datum_feature in the context of the datum_system referenced by this linear_profile_tolerance shall be the same as the name of the property_definition applied to the same physical_unit_datum_feature in the context of the datum_system referenced by the linear_profile_tolerance to which this linear_profile_tolerance is related as the 'linear profile refining control'.

IP8: If the linear_profile_tolerance has a name of 'linear profile refinement', it shall specify a measure_with_unit as its magnitude that is less than the measure_with_unit specified as the magnitude of the linear_profile_tolerance to which it is related as the 'linear profile refining control'.

IP9: If the linear_profile_tolerance has a name of 'linear profile refinement', there shall exist a property_definition that has a description of 'true profile' that is related as the 'basic profile' to a property_definition of the tolerance_zone_boundary of this linear_profile_tolerance and to a property_definition of the tolerance_zone_boundary of the linear_profile_tolerance that this linear_profile_tolerance is related to as the 'linear profile refining control', and these property_definition shall have the description of 'boundary zone definition with specified size' and a name of either 'profile boundary' or 'profile boundary with offsets'.

IP10: If the linear_profile_tolerance has a name of 'linear profile refinement' and its tolerance_zone has a property_definition that has a description of 'tolerance zone orientation' that relates to a property_definition with a description of 'viewing plane based orientation' to specify the 'zone orientation', it shall be related to a linear_profile_tolerance as the 'linear profile refining control' the tolerance_zone of which has a property_definition that has a description of 'tolerance zone orientation' that relates to the same property_definition with a description of 'viewing plane based orientation' to specify its 'zone orientation'.

IP11: The toleranced_shape_aspect of the linear_profile_tolerance shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP12: The tolerance_zone_boundary of the linear_profile_tolerance shall have a property_definition with a description of 'boundary zone definition with specified size' and a name of either 'profile boundary' or 'profile boundary with offsets'.

IP13: If the linear_profile_tolerance is not a geometric_tolerance_with_specified_datum_system, its tolerance_zone shall have a property_definition that has a description of 'tolerance zone orientation' that relates to a property_definition with a description of 'viewing plane based orientation' to specify the 'zone orientation'.

5.2.3.1.213 luminous_flux_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An luminous_flux_measure_with_unit is a measure_with_unit that implements the ARM concept of Luminous_flux_measure_with_unit.

EXPRESS specification:

*)
ENTITY luminous_flux_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\luminous_flux_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = lumen;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- luminous_flux_measure_with_unit
(*

Formal propositions:

WR1: The luminous_flux_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The luminous_flux_measure_with_unit shall reference an si_unit with a name of lumen.

WR3: The unit_component shall be an si_unit.

5.2.3.1.214 magnetic_flux_density_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A magnetic_flux_density_measure_with_unit is a measure_with_unit that implements the ARM concept of Magnetic_flux_density_measure_with_unit.

EXPRESS specification:

*)
ENTITY magnetic_flux_density_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\magnetic_flux_density_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = tesla;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- magnetic_flux_density_measure_with_unit
(*

Formal propositions:

WR1: The magnetic_flux_density_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The magnetic_flux_density_measure_with_unit shall reference an si_unit with a name of tesla.

WR3: The unit_component shall be an si_unit.

5.2.3.1.215 magnetic_flux_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A magnetic_flux_measure_with_unit is a measure_with_unit that implements the ARM concept of Magnetic_flux_measure_with_unit.

EXPRESS specification:

*)
ENTITY magnetic_flux_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\magnetic_flux_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = weber;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- magnetic_flux_measure_with_unit
(*

Formal propositions:

WR1: The magnetic_flux_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The magnetic_flux_measure_with_unit shall reference an si_unit with a name of weber.

WR3: The unit_component shall be an si_unit.

5.2.3.1.216 make_from_connectivity_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A make_from_connectivity_relationship is a shape_aspect_relationship that implements the ARM concept of Physical_connectivity_make_from_relationship.

EXPRESS specification:

*)
ENTITY make_from_connectivity_relationship
 SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION'
       IN TYPEOF (SELF.relating_shape_aspect);
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION'
       IN TYPEOF (SELF.related_shape_aspect);
END_ENTITY; -- make_from_connectivity_relationship
(*

Formal propositions:

WR1: The make_from_connectivity_relationship shall have a relating_shape_aspect that references a physical_connectivity_definition.

WR2: The make_from_connectivity_relationship shall have a related_shape_aspect that references a physical_connectivity_definition.

5.2.3.1.217 make_from_feature_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A make_from_feature_relationship is a shape_aspect_relationship that implements the ARM concept of Component_feature_make_from_relationship.

EXPRESS specification:

*)
ENTITY make_from_feature_relationship
 SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT'] *
       TYPEOF (SELF.relating_shape_aspect)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT'] *
       TYPEOF (SELF.related_shape_aspect)) = 1;
  WR3: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF.relating_shape_aspect))) OR
       (SELF.relating_shape_aspect\shape_aspect.description IN ['component feature',
       'component termination passage interface terminal', 
       'land or non functional land interface terminal',  
       'printed connector component interface terminal']);
  WR4: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF.related_shape_aspect))) OR
       (SELF.related_shape_aspect\shape_aspect.description IN ['component feature',
       'component termination passage interface terminal', 
       'land or non functional land interface terminal',  
       'printed connector component interface terminal']);
END_ENTITY; -- make_from_feature_relationship
(*

Formal propositions:

WR1: The make_from_feature_relationship shall have a relating_shape_aspect that is a component_definition, component_interface_terminal, or component_shape_aspect.

WR2: The make_from_feature_relationship shall have a related_shape_aspect that is a component_definition, component_interface_terminal, or component_shape_aspect.

WR3: If the make_from_feature_relationship has a relating_shape_aspect of type component_shape_aspect, the description shall be either 'component feature', 'component termination passage interface terminal', 'land or non functional land interface terminal', or 'printed connector component interface terminal'.

WR4: If the make_from_feature_relationship has a related_shape_aspect of type component_shape_aspect, the description shall be either 'component feature', 'component termination passage interface terminal', 'land or non functional land interface terminal', or 'printed connector component interface terminal'.

5.2.3.1.218 make_from_functional_unit_terminal_definition_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A make_from_functional_unit_terminal_definition_relationship is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Functional_unit_terminal_definition_make_from_relationship.

EXPRESS specification:

*)
ENTITY make_from_functional_unit_terminal_definition_relationship
 SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.relating_shape_aspect, 
       SELF\shape_aspect_relationship.related_shape_aspect;
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION'] *
       TYPEOF (SELF.relating_shape_aspect)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION'] *
       TYPEOF (SELF.related_shape_aspect)) = 1;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
    SELF\make_from_functional_unit_terminal_definition_relationship)) = 0;
  WR4: relating_shape_aspect.of_shape :<>: 
       related_shape_aspect.of_shape;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect.description = '';
  WR7: SELF\shape_aspect.product_definitional = FALSE;
  WR8: SIZEOF (USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION')) = 0;
  WR9: SIZEOF (QUERY( sar <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_MAKE_FROM_RELATIONSHIP') IN TYPEOF
       (sar.of_shape\property_definition.definition))
       )) = 1;


END_ENTITY; -- make_from_functional_unit_terminal_definition_relationship
(*

Formal propositions:

Formal propositions:

WR1: The make_from_functional_unit_terminal_definition_relationship shall have a relating_shape_aspect and related_shape_aspect combination that is unique.

WR1: The make_from_functional_unit_terminal_definition_relationship shall have a relating_shape_aspect that is a functional_unit_terminal_definition.

WR2: The make_from_functional_unit_terminal_definition_relationship shall have a related_shape_aspect that is a functional_unit_terminal_definition.

WR3: The make_from_functional_unit_terminal_definition_relationship shall not be a complex instance.

WR4: The make_from_functional_unit_terminal_definition_relationship relating_shape_aspect and related_shape_aspect shall not reference the same product_definition_shape.

WR5: The make_from_functional_unit_terminal_definition_relationship shape_aspect supertype name shall be blank.

WR6: The make_from_functional_unit_terminal_definition_relationship shape_aspect supertype description shall be blank.

WR7: The make_from_functional_unit_terminal_definition_relationship shall not be product definitional.

WR8: The make_from_functional_unit_terminal_definition_relationship shall not be referenced by a property_definition.

WR9: The make_from_functional_unit_terminal_definition_relationship shall be related to one design_make_from_relationship.

5.2.3.1.219 make_from_model_port_relationship

A make_from_model_port_relationship is a representation and a representation_relationship that implements the ARM concept of Analytical_model_port_make_from_relationship.

EXPRESS specification:

*)
ENTITY make_from_model_port_relationship
 SUBTYPE OF (representation, representation_relationship);
UNIQUE
  UR1: SELF\representation_relationship.rep_1, 
       SELF\representation_relationship.rep_2;
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL_PORT'] *
       TYPEOF (SELF.rep_1)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL_PORT'] *
       TYPEOF (SELF.rep_2)) = 1;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\representation_relationship ||
       SELF\make_from_model_port_relationship)) = 0;
  WR4: rep_1 :<>: rep_2;
  WR5: SIZEOF(QUERY( rr1 <* USEDIN(SELF.rep_1,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') |
        (SIZEOF(QUERY(rr2 <* USEDIN(SELF.rep_2,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') | 
        (rr1.rep_1 :=: rr2.rep_1)
        )) = 0))) = 1;
  WR6: SIZEOF (QUERY( rr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') | 
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL_MAKE_FROM_RELATIONSHIP') IN TYPEOF (rr.rep_1))
       )) = 1; 
       
END_ENTITY; -- make_from_model_port_relationship
(*

Formal propositions:

Formal propositions:

WR1: The make_from_model_port_relationship shall have a unique combination of rep_1 and rep_2.

WR1: The make_from_model_port_relationship shall have a rep_1 that is an analytical_model_port.

WR2: The make_from_model_port_relationship shall have a rep_2 that is an analytical_model_port.

WR3: The make_from_model_port_relationship shall not be a complex instance.

WR4: The make_from_model_port_relationship shall not reference the same port.

WR5: The make_from_model_port_relationship shall not reference the same analytical_model.

WR6: The make_from_model_port_relationship shall be related to one analytical_model_make_from_relationship.

5.2.3.1.220 make_from_part_feature_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A make_from_part_feature_relationship is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Part_feature_make_from_relationship.

EXPRESS specification:

*)
ENTITY make_from_part_feature_relationship
 SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.relating_shape_aspect, 
       SELF\shape_aspect_relationship.related_shape_aspect;
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT'] *
       TYPEOF (SELF.relating_shape_aspect)) = 0;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT'] *
       TYPEOF (SELF.related_shape_aspect)) = 0;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\make_from_part_feature_relationship)) = 0;
  WR4: SELF.related_shape_aspect.product_definitional = TRUE;
  WR5: SELF.relating_shape_aspect.product_definitional = TRUE;
  WR6: SELF\shape_aspect.name = '';
  WR7: SELF\shape_aspect.description = '';
  WR8: SELF\shape_aspect.product_definitional = FALSE;
  WR9: SIZEOF (USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION')) = 0;
 WR10: SIZEOF (QUERY( sar <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESIGN_MAKE_FROM_RELATIONSHIP') IN TYPEOF
       (sar.of_shape\property_definition.definition))
       )) = 1;
END_ENTITY; -- make_from_part_feature_relationship 
(* 

Formal propositions:

Formal propositions:

WR1: The make_from_model_port_relationship shall have a unique combination of related_shape_aspect and relating_shape_aspect.

WR1: The make_from_part_feature_relationship shall have a relating_shape_aspect that is not a Non_feature_shape_element and that is not a Component_feature.

WR2: The make_from_part_feature_relationship shall have a related_shape_aspect that is not a Non_feature_shape_element and that is not a Component_feature.

WR3: The make_from_part_feature_relationship shall not be a complex instance.

WR4: The make_from_part_feature_relationship related_shape_aspect shall be on the boundary of the part or template.

WR5: The make_from_part_feature_relationship relating_shape_aspect shall be on the boundary of the part or template.

WR6: The make_from_part_feature_relationship shall have a name inherited from the shape_aspect that is blank.

WR7: The make_from_part_feature_relationship shall have a description inherited from the shape_aspect that is blank.

WR8: The make_from_part_feature_relationship shall not be on the boundary of the part or template.

WR9: The make_from_part_feature_relationship shall not be referenced by a property_definition.

WR10: The make_from_part_feature_relationship shall be related to exactly one design_make_from_relationship.

5.2.3.1.221 manifold_constraining_context_dependent_shape_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A manifold_constraining_context_dependent_shape_representation is a context_dependent_shape_representation and a representation_relationship that implements the ARM concept of An_unknown_arm_type.

EXPRESS specification:

*)
ENTITY manifold_constraining_context_dependent_shape_representation
  SUBTYPE OF (context_dependent_shape_representation, representation_relationship);
END_ENTITY; -- manifold_constraining_context_dependent_shape_representation 
(* 

5.2.3.1.222 material_electrical_conductivity_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A material_electrical_conductivity_category is a group that specifies the attribute electrical_conductivity_characteristic for the ARM concept of Material_electrical_conductivity_requirement_occurrence and the electrical conductivity_characteristic for the ARM concept of Material_electrical_conductivity_requirement_occurrence.

EXPRESS specification:

*)
ENTITY material_electrical_conductivity_category
  SUBTYPE OF (group);
WHERE
  WR1: SELF\group.name IN ['conductive', 'non conductive', 'resistive',  
       'semi conductive'];
END_ENTITY; -- material_electrical_conductivity_category
(*

Formal propositions:

WR1: The material_electrical_conductivity_category shall have a name of 'conductive', 'non conductive', 'resistive', or 'semi conductive'

5.2.3.1.223 material_functional_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A material_functional_category is a group that specifies the role of material for the ARM concepts of:
  • Marking
  • Packaged_part
  • Part_device
.

EXPRESS specification:

*)
ENTITY material_functional_category
  SUBTYPE OF (group);
WHERE
  WR1: SELF\group.name IN 
     ['bonding agent', 'potting compound', 'marking material'];
END_ENTITY; -- material_functional_category
(*

Formal propositions:

WR1: The material_functional_category shall have a name of 'bonding agent', 'potting compound', or 'marking material'.

5.2.3.1.224 material_optical_conductivity_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A material_optical_conductivity_category is a group that specifies the optical conductivity characteristic for the ARM concept of Ee_material.

EXPRESS specification:

*)
ENTITY material_optical_conductivity_category
  SUBTYPE OF (group);
WHERE
  WR1: SELF\group.name IN ['conductive', 'non conductive', 'resistive',  
       'semi conductive'];
END_ENTITY; -- material_optical_conductivity_category
(*

Formal propositions:

WR1: The material_optical_conductivity_category shall have a name of 'conductive', 'non conductive', 'resistive', or 'semi conductive'

5.2.3.1.225 material_removal_component_shape_aspect

A material_removal_component_shape_aspect is a component_shape_aspect that implements the ARM concept of Material_removal_component.

EXPRESS specification:

*)
ENTITY material_removal_component_shape_aspect
  SUBTYPE OF (component_shape_aspect);
END_ENTITY; -- material_removal_component_shape_aspect
(*

5.2.3.1.226 material_thermal_conductivity_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A material_thermal_conductivity_category is a group that specifies the thermal conductivity characteristic for the ARM concept of Ee_material.

EXPRESS specification:

*)
ENTITY material_thermal_conductivity_category
  SUBTYPE OF (group);
WHERE
  WR1: SELF\group.name IN ['conductive', 'non conductive', 'resistive',  
       'semi conductive'];
END_ENTITY; -- material_thermal_conductivity_category
(*

Formal propositions:

WR1: The material_thermal_conductivity_category shall have a name of 'conductive', 'non conductive', 'resistive', or 'semi conductive'

5.2.3.1.227 minimally_defined_bare_die_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A minimally_defined_bare_die_terminal is a shape_aspect that implements the ARM concepts of Guided_wave_bare_die_terminal or Minimally_defined_bare_die_terminal.

EXPRESS specification:

*)
ENTITY minimally_defined_bare_die_terminal
  SUPERTYPE OF (bare_die_terminal)
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE' IN 
       TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (eca <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'external connection area') |
       eca.related_shape_aspect\shape_aspect.description = 'connection zone')) <= 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) <= 1;
  WR4: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_CONNECTED_TERMINALS_DEFINITION'
       IN TYPEOF (mct.relating_shape_aspect))) <= 1;
END_ENTITY; -- minimally_defined_bare_die_terminal
(*

Formal propositions:

WR1: The minimally_defined_bare_die_terminal shall be a terminal of a bare_die.

WR2: The minimally_defined_bare_die_terminal shall relate to at most one shape_aspect that has a description of 'connection zone' as the 'external connection area'.

WR3: The minimally_defined_bare_die_terminal shall have at most one material designation.

WR4: The minimally_defined_bare_die_terminal shall be related to at most one part_connected_terminals_definition as a 'member connected terminal'.

5.2.3.1.228 model_parameter

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A model_parameter is a representation_item that implements the ARM concept of Model_parameter.

EXPRESS specification:

*)
ENTITY model_parameter 
 SUBTYPE OF (representation_item);
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1;
  WR2: SIZEOF (QUERY (cri <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COORDINATED_REPRESENTATION_ITEM' IN TYPEOF(cri)) AND 
       (cri\representation.name = 
       'model parameter with valid range value'))) <= 1;
  WR3: SIZEOF (QUERY (aga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PARAMETER_TYPE' IN 
       TYPEOF (aga.assigned_group)) AND
       (aga.assigned_group\group.name IN ['string property type', 
       'logical property type', 'physical property type', 
       'boolean property type']))) = 1;
END_ENTITY; -- model_parameter
(*

Formal propositions:

WR1: The model_parameter shall be referenced by exactly one document.

WR2: The model_parameter shall be an item in at most one coordinated_representation_item that has a representation name of 'model parameter with valid range value'.

WR3: The model_parameter shall be assigned to exactly one parameter_type with a name of 'string property type', 'logical property type', 'physical property type', or 'boolean property type'.

5.2.3.1.229 mounting_restriction_area

A mounting_restriction_area is a shape_aspect that implements the ARM concept of Mounting_restriction_area.

EXPRESS specification:

*)
ENTITY mounting_restriction_area
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: EXISTS(SELF.of_shape.definition\product_definition.name);
  WR2: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN TYPEOF (SELF.of_shape.definition));

  WR3: SELF.of_shape.definition.frame_of_reference.name IN ['physical design'];

  WR4: SELF.of_shape.definition\product_definition.name = 'assembly module';

  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CSG_2D_SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)))) = 1))) = 0;
  WR6: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       ((sar\shape_aspect_relationship.name = 'mounting surface') AND 
       (sar.related_shape_aspect\shape_aspect.description =
       'interconnect module component surface feature')))) = 1;
  WR7: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\shape_aspect ||
       SELF\mounting_restriction_area))) = 0;

END_ENTITY; -- mounting_restriction_area
(*

Formal propositions:

WR1: The name of the physical_unit shall exist.

WR2: The mounting_restriction_area shall be an aspect of the shape of a physical_unit.

WR3: The mounting_restriction_area shall be an aspect of a product_definition that is in the physical design context.

WR4: The mounting_restriction_area shall be an aspect of the shape of an assembly module.

WR5: The mounting_restriction_area shall have exactly one shape_representation that shall be a csg_2d_shape_representation.

WR6: The mounting_restriction_area shall be related to exactly one component_shape_aspect with a description of 'interconnect module component surface feature' as the 'mounting surface'.

WR7: The mounting_restriction_area shall not be any other type of shape_aspect.

5.2.3.1.230 mounting_restriction_volume

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A mounting_restriction_volume is a shape_aspect that implements the ARM concept of Mounting_restriction_volume.

EXPRESS specification:

*)
ENTITY mounting_restriction_volume
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN TYPEOF (SELF.of_shape.definition));

  WR2: SELF.of_shape.definition.frame_of_reference.name IN ['physical design'];

  WR3: SELF.of_shape.definition.name = 'assembly module';

  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) AND
        (pdr.used_representation\representation.context_of_items\
       geometric_representation_context.coordinate_space_dimension = 3)
       )) = 1))) = 0;

  WR5: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (sar.related_shape_aspect)) AND
       (sar\shape_aspect_relationship.name = 'mounting surface') AND 
       (sar.related_shape_aspect\shape_aspect.description =
       'interconnect module component surface feature'))) = 1;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\shape_aspect ||
       SELF\mounting_restriction_volume))) = 0;
END_ENTITY; -- mounting_restriction_volume
(*

Formal propositions:

WR1: The mounting_restriction_volume shall be an aspect of the shape of a physical_unit.

WR2: The mounting_restriction_volume shall be an aspect of a product_definition that is in the physical design context.

WR3: The mounting_restriction_volume shall be an aspect of the shape of an assembly module.

WR4: The mounting_restriction_volume shall have exactly one shape_representation that shall be a 3 dimensional shape representation.

WR5: The mounting_restriction_volume shall be related to exactly one component_shape_aspect with a description of 'interconnect module component surface feature' as the 'mounting surface'.

WR6: The mounting_restriction_volume shall not be any other type of shape_aspect.

5.2.3.1.231 multi_layer_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A multi_layer_component_shape_aspect is a component_shape_aspect that implements the ARM concept of Multi_layer_stratum_feature_template_component.

EXPRESS specification:

*)
ENTITY multi_layer_component_shape_aspect
  SUBTYPE OF (component_shape_aspect);
END_ENTITY; -- multi_layer_component_shape_aspect
(*

5.2.3.1.232 multi_layer_material_removal_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A multi_layer_material_removal_component_shape_aspect is a material_removal_component_shape_aspect that implements the ARM concept of Multi_layer_material_removal_laminate_component.

EXPRESS specification:

*)
ENTITY multi_layer_material_removal_component_shape_aspect
  SUBTYPE OF (material_removal_component_shape_aspect);
END_ENTITY; -- multi_layer_material_removal_component_shape_aspect
(*

5.2.3.1.233 multi_layer_stratum_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A multi_layer_stratum_feature is a stratum_feature that implements the ARM concept of Multi_layer_stratum_feature.

EXPRESS specification:

*)
ENTITY multi_layer_stratum_feature
 SUBTYPE OF (stratum_feature);
END_ENTITY; -- multi_layer_stratum_feature
(*

5.2.3.1.234 network_node_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A network_node_definition is a product_definition that implements the ARM concept of Functional_unit_network_node_definition.

EXPRESS specification:

*)
ENTITY network_node_definition
  SUBTYPE OF (product_definition);
WHERE
  WR1: SELF.frame_of_reference.name = 'functional network design';
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (funtdna <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name =
       'functional unit network terminal definition node assignment') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_SHAPE' IN 
       TYPEOF (funtdna.related_property_definition)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION' IN 
       TYPEOF 
       (funtdna.related_property_definition.definition)))) <= 1)) <= 1;
  WR3: SIZEOF (QUERY (funn <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (funn.relating_product_definition)) AND
       (funn.relating_product_definition.frame_of_reference.name =
       'functional network design'))) = 1;
END_ENTITY; -- network_node_definition
(*

Formal propositions:

WR1: The network_node_definition shall have its context element with a name of 'functional network design'.

WR2: The network_node_definition shall have at most one property that relates to at most one product_definition_shape of a functional_unit_terminal_definition to specify the 'functional unit network terminal definition node assignment'.

WR3: The network_node_definition shall be related to exactly one functional_unit that has a context element with a name of 'functional network design' as the 'functional unit network node'.

Informal propositions:

IP1: This is an IP for now, as it obviously uses arm constructs. It will be converted to DERIVE and then the electrical and thermal network structural validity can be exchanged based on approval. Probably need something like "valid structure".

NOTE:

5.2.3.1.235 opposing_boundary_dimensional_size

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An opposing_boundary_dimensional_size is a dimensional_size that implements the ARM concept of Dimensional_size_based_on_opposing_boundaries.

EXPRESS specification:

*)
ENTITY opposing_boundary_dimensional_size
  SUBTYPE OF (dimensional_size);
WHERE
    wr1: SELF\dimensional_size.name  IN ['angular', 'linear'];
END_ENTITY; -- opposing_boundary_dimensional_size
(*

Formal propositions:

WR1: The name of the opposing_boundary_dimensional_size shall be either 'angular' or 'linear'.

Informal propositions:

IP1: The opposing_boundary_dimensional_size applies_to a composite_unit_shape_aspect.

5.2.3.1.236 owner_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An owner_assignment is an person_and_organization_assignment that specifies a set of owner_assigned_item. An item that is owned cannot be changed without the permission of the owner.

EXAMPLE: A component position may be owned by the mechanical design department, in which case movement of the component is to be negotiated with that department.

EXPRESS specification:

*)
ENTITY owner_assignment 
 SUBTYPE OF (person_and_organization_assignment); 
 items : SET [1:?] OF owner_assigned_item; 
END_ENTITY; -- owner_assignment
(*

5.2.3.1.237 package

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package is a physical_unit that implements the ARM concepts of Altered_package and Package.

EXPRESS specification:

*)
ENTITY package
 SUBTYPE OF (physical_unit);
WHERE
  WR1: SELF.frame_of_reference.name = 'physical design usage';
  -- WR2 deleleted
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY' IN 
       TYPEOF (sa))) = 1))) <= 1;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_TERMINAL' IN 
       TYPEOF (sa))) >= 1))) >= 1;
  WR5: (NOT (SELF\product_definition.description = 'altered package')) OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       (pdr\product_definition_relationship.name = 'package alteration') AND
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE'] * 
       TYPEOF (pdr.relating_product_definition)) = 1))) = 1); 
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 'package mounting data')) = 1))) = 1;

  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'maximum body height above seating plane')) = 1)
       )) = 1))) = 1;

  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'maximum body height below seating plane')) = 1)
       )) = 1))) <= 1;

  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'maximum body clearance above seating plane')) = 1)
       )) = 1))) <= 1;

  WR10: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'maximum body clearance below seating plane')) = 1)
       )) = 1))) <= 1;

  WR11: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'minimum body clearance above seating plane')) = 1)
       )) = 1))) <= 1;

  WR12: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'minimum body clearance below seating plane')) = 1)
       )) = 1))) <= 1;

  WR13: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'maximum lead length below seating plane')) = 1)
       )) = 1))) <= 1;

  WR14: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 'package mounting data')
       AND (SIZEOF (QUERY (item <* USEDIN( pdr.used_representation,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.ITEMS') | item\representation_item.name =
       'least lead length below seating plane')) = 1)
       )) = 1))) <= 1;
  WR15: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN TYPEOF(sa)) AND
       (SIZEOF (QUERY ( sar <* USEDIN(sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
        ((sar\shape_aspect_relationship.name = 'package seating plane') AND
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE' IN TYPEOF(sar.related_shape_aspect))) )) = 1))
       )) = 1)
       )
       ) = 1;

  WR16: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE' IN
       TYPEOF (sa)))) = 1))) = 1;

  WR17: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN TYPEOF(sa)) AND
       (SIZEOF (QUERY ( sar <* USEDIN(sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
        ((sar\shape_aspect_relationship.name = 'of datum reference plane') AND
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DATUM_REFERENCE_FRAME' IN TYPEOF(sar.related_shape_aspect))) )) = 1))
       )) = 1)
       )
       ) <= 1;
 WR18: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRIMARY_REFERENCE_TERMINAL' IN TYPEOF(sa))
       )) = 1)
       )
       ) <= 1;
END_ENTITY; -- package
(*

Formal propositions:

WR1: The package shall have a frame_of_reference name of 'physical design usage'.

WR2: The package shall have at most one package_body.

WR3: The package shall have at least one package_terminal.

WR4: If the package has a description of 'altered package', it shall be related to exactly one package, externally_defined_package, or library_defined_package as the 'package alteration'.

WR5: The package shall have exactly one representation with the name of 'package mounting data'.

WR6: The package shall have one item in its representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'maximum body height above seating plane'.

WR7: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'maximum body height below seating plane'.

WR8: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'maximum body clearance above seating plane'.

WR9: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'maximum body clearance below seating plane'.

WR10: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'minimum body clearance above seating plane'.

WR11: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'minimum body clearance below seating plane'.

WR12: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'maximum lead length below seating plane'.

WR13: The package shall have no more than one item in the representation with the name of 'package mounting data' that shall be a length_measure_with_unit and that shall have a name of 'least lead length below seating plane'.

WR14: The seating_plane for this package shall be related to a shape_aspect of this package through a shape_aspect_relationshipt with the name of 'package seating plane'.

WR15: The package shall have exactly one seating plane.

WR16: The package shall have at most one datum_reference_frame.

WR17: The package shall have at most one primary_reference_terminal.

Informal propositions:

IP1: Each three-dimensional shape representation of the package shall have exactly two geometric_representation_item that are axis2_placement_3d and one axis2_placement_3d shall define the location and orientation of the seating plane in that representation. The normal of the seating plane in that representation shall be congruent with and the same direction as the Z axis of the axis2_placement_3d. The plane of the seating plane in that representation shall be congruent with the plane established by the X and Y axes of the axis2_placement_3d.

IP2: Each two-dimensional shape representation of the package shall have exactly one geometric_representation_item that is an axis2_placement_2d that shall define the origin of the geometric model, and the location and orientation of the seating plane.

IP3: The package shall have no more than one representation with the name of 'material property data' that shall be related to cartesian_points with names of 'least material condition centroid location' and 'maximum material condition centroid location'.

5.2.3.1.238 package_body

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package_body is a shape_aspect that implements the ARM concept of Package_body.

EXPRESS specification:

*)
ENTITY package_body
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE']) = 1;
  WR2: SIZEOF (USEDIN (SELF, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1;
END_ENTITY; -- package_body
(*

Formal propositions:

WR1: The package_body shall be the aspect of the shape of a package, externally_defined_package, or library_defined_package.

WR2: The package_body shall have exactly one material_designation.

5.2.3.1.239 package_body_bottom_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package_body_bottom_surface is a package_body_surface that implements the ARM concept of Package_body_bottom_surface.

EXPRESS specification:

*)
ENTITY package_body_bottom_surface
 SUBTYPE OF (package_body_surface);
END_ENTITY; -- package_body_bottom_surface
(*

5.2.3.1.240 package_body_edge_segment_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package_body_edge_segment_surface is a shape_aspect and shape_aspect_relationship that implements the ARM concept of Package_body_edge_segment_surface.

EXPRESS specification:

*)
ENTITY package_body_edge_segment_surface
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  wr1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  wr2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_VERTEX' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  wr3: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
  WR4: SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed surface') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_EDGE_SURFACE' IN TYPEOF
       (ce.relating_shape_aspect) ))) = 1;
  WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\package_body_edge_segment_surface)) = 0;
END_ENTITY; -- package_body_edge_segment_surface
(*

Formal propositions:

WR1: The package_body_edge_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship related attribute.

WR2: The package_body_edge_segment_surface shall be related to exactly one edge_segment_vertex through a shape_aspect_relationship relating attribute.

WR3: The edge_segment_vertex instances referenced shall not be the same instance of edge_segment_vertex.

WR4: The package_body_edge_segment_surface shall be related to exactly one package_body_edge_surface as the 'composed surface'.

WR5: The package_body_edge_segment_surface shall not be in a complex instance other than with it's immediate supertypes.

5.2.3.1.241 package_body_edge_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package_body_edge_surface is a shape_aspect that implements the ARM concept of Package_body_edge_surface.

EXPRESS specification:

*)
ENTITY package_body_edge_surface
 SUBTYPE OF (package_body_surface);
WHERE
  WR1: SELF\shape_aspect.product_definitional;
  WR2: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\part_mounting_feature ||
       SELF\package_body_edge_surface ||
       SELF\package_body_surface)) = 0;
END_ENTITY; -- package_body_edge_surface
(*

Formal propositions:

WR1: The package_body_edge_surface shall be on the boundary of the product.

WR2: The package_body_edge_surface shall be no other subtype of shape_aspect.

5.2.3.1.242 package_body_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package_body_surface is a shape_aspect that implements the ARM concept of Package_body_surface.

EXPRESS specification:

*)
ENTITY package_body_surface
ABSTRACT SUPERTYPE OF (ONEOF(package_body_top_surface,
                         package_body_edge_surface,
                         package_body_bottom_surface))
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE']) = 1;
  WR2: SELF\shape_aspect.product_definitional;
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (TYPEOF(sar\shape_aspect_relationship.relating_shape_aspect) = 
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY']))) = 1;
END_ENTITY; -- package_body_surface
(*

Formal propositions:

WR1: The package_body_surface shall be the aspect of the shape of a package, externally_defined_package, or library_defined_package.

WR2: The package_body_surface shall be on the boundary of the product.

WR3: The package_body_surface shall be related to exactly one package_body.

5.2.3.1.243 package_body_top_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A package_body_top_surface is a package_body_surface that implements the ARM concept of Package_body_top_surface.

EXPRESS specification:

*)
ENTITY package_body_top_surface
 SUBTYPE OF (package_body_surface);
END_ENTITY; -- package_body_top_surface
(*

5.2.3.1.244 package_terminal

A package_terminal is a shape_aspect that implements the ARM concepts of:
  • Altered_package_terminal
  • Guided_wave_terminal
  • Length_trimmed_terminal
  • Package_terminal
  • Shape_formed_terminal
  • Surface_prepped_terminal
  • Wire_terminal

EXPRESS specification:

*)
ENTITY package_terminal
 SUPERTYPE OF (((altered_package_terminal ANDOR guided_wave_terminal)
      ANDOR wire_terminal) ANDOR primary_reference_terminal)
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr.used_representation))) >= 1))) = 0;
  WR2: SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE']) = 1;
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |(
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN TYPEOF (sar.relating_shape_aspect.of_shape.definition)) AND
       (sar\shape_aspect_relationship.name = 'terminal core material') AND
       (sar.relating_shape_aspect.of_shape.definition.
        frame_of_reference\application_context_element.name = 'material definition') 
       )) <= 1;
  WR4: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |(
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN TYPEOF (sar.relating_shape_aspect.of_shape.definition)) AND
       (sar\shape_aspect_relationship.name = 'terminal surface material') AND
       (sar.relating_shape_aspect.of_shape.definition.
        frame_of_reference\application_context_element.name = 'material definition') 
       )) = 1;
  WR5: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_CONNECTED_TERMINALS_DEFINITION'
       IN TYPEOF (mct.relating_shape_aspect))) <= 1;
 WR6: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name  = 'external connection zone') AND
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone'))) >= 0;
 WR7: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (lmwu <* QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) |
       lmwu\representation_item.name = 'maximum terminal diametrical extent')) 
        <= 1)) <= 1)) <= 1;
 WR8: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (lmwu <* QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) |
       lmwu\representation_item.name = 'minimum terminal diametrical extent')) 
         <= 1)) <= 1)) <= 1;
 WR9: SIZEOF(QUERY ( sar <* USEDIN (SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
      'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'precedent feaure' ))
       <= 1;
 WR10: SIZEOF(QUERY ( sar <* USEDIN (SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
      'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'precedent feaure' ))
       <= 1;
 WR11: SIZEOF (QUERY (eca <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'seating plane zone') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONNECTION_ZONE_INTERFACE_PLANE_RELATIONSHIP' IN
       TYPEOF (eca.related_shape_aspect))) <= 1;
END_ENTITY; -- package_terminal
(*

Formal propositions:

WR1: The package_terminal shall have at least one shape_representation.

WR2: The package_terminal shall be the aspect of the shape of a package, externally_defined_package, or library_defined_package.

WR3: The package_terminal shall have no more than one shape_aspect_relationship with a name of 'terminal core material' that relates to a product_definition with a frame of reference of 'material definiton'.

WR4: The package_terminal shall have no more than one shape_aspect_relationship with a name of 'terminal core material' that relates to a product_definition with a frame of reference of 'material definiton'.

WR5: The package_terminal shall be related to at most one part_connected_terminals_definition as a 'member connected terminal'.

WR6: The package_terminal shall be related to zero or more shape_aspect with a description of 'connection zone' as the 'external connection zone'.

WR7: The package_terminal shall have at most one property_definition that has at most one representation that contains at most one length_measure_with_unit with a name of 'maximum terminal diametrical extent'.

WR8: The package_terminal shall have at most one property_definition that has at most one representation that contains at most one length_measure_with_unit with a name of 'minimum terminal diametrical extent'.

WR9: The package_terminal shall be referenced by no more than one shape_aspect_relationship with a description of 'precedent feature' as the relating_shape_aspect.

WR10: The package_terminal shall be referenced by no more than one shape_aspect_relationship with a description of 'precedent feature' as the related_shape_aspect.

WR11: The package_terminal shall be related to no more than one connection_zone_interface_plane_relationship.

5.2.3.1.245 packaged_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A packaged_component is a component_definition that implements the ARM concepts of:
  • Packaged_component
  • Packaged_connector_component
  • Routed_packaged_component

EXPRESS specification:

*)
ENTITY packaged_component
  SUBTYPE OF (component_definition);
WHERE
  WR1: SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) = 1;
  WR2: SIZEOF (QUERY (pa <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'package alternate') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE'] *
       TYPEOF (pa.relating_product_definition)) = 1) AND
       (pa.relating_product_definition\product_definition.description =
       'altered package'))) <= 1;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'packaged component join terminal'))) >= 1))) = 0;
  WR4: (NOT (SELF\product_definition.description = 'packaged connector component')) OR
       (SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (TRUE))) = 1);
  WR5: (NOT (SELF\product_definition.description = 'packaged connector component')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'packaged component join terminal'))) 
        >= 1))) = 0);
  WR6: (NOT (SELF\product_definition.description = 'routed packaged component')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       SIZEOF (QUERY (pd <* USEDIN (sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (USEDIN (pd, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) 
       = 1)) = 1)) = 1))) = 0);
END_ENTITY; -- packaged_component
(*

Formal propositions:

WR1: The packaged_component shall be related, as the 'instantiated part', to exactly one packaged_part, externally_defined_packaged_part, or library_defined_packaged_part that is in the 'physical design usage' product_definition_context.

WR2: The packaged_component shall be related, as the 'package alternate', to at most one package, externally_defined_package, or library_defined_package that has a description of 'altered package'.

WR3: The packaged_component shall have at least one shape_aspect that is a component_terminal with a description of 'packaged component join terminal'.

WR4: If the packaged_component has description of 'packaged connector component', the packaged_component shall be related, as the 'instantiated part', to exactly one packaged_part, externally_defined_packaged_part, or library_defined_packaged_part that is in the 'packaged connector' product_definition_context.

WR5: If the packaged_component has a description of 'packaged connector component', it shall have at least one shape_aspect that is a component_interface_terminal with a description of 'packaged component join terminal'.

WR6: If the packaged_component has a description of 'routed packaged component', it shall have exactly one shape_aspect that has exactly one property_definition that is associated to exactly one representation.

5.2.3.1.246 packaged_connector

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A packaged_connector is a packaged_part that implements the ARM concept of Packaged_connector.

EXPRESS specification:

*)
ENTITY packaged_connector
  SUBTYPE OF (packaged_part);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_CONNECTOR_TERMINAL_RELATIONSHIP' IN
       TYPEOF (sa)))) = 1))) >= 1;

  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (SIZEOF (QUERY ( sar <* USEDIN(sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        sar\shape_aspect_relationship.name = 'interface plane')) = 1)
       )) = 1)
       )
       ) <= 1;

  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE' IN
       TYPEOF (sa)))) = 1))) <= 1;

END_ENTITY; -- packaged_connector
(*

Formal propositions:

WR1: The packaged_connector shall have at least one shape_aspect that is a packaged_connector_terminal_relationship.

WR2: The packaged_connector shall have at most one shape_aspect that is a seating plane in the role of 'interface plane'.

WR3: No more than one seating plane shall reference this packaged_connector through the of_shape attribute.

NOTE: Normally the seating_plane that is related through the shape_aspect_relationshipt will also reference this packaged_connector.

5.2.3.1.247 packaged_connector_terminal_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A packaged_connector_terminal_relationship is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Packaged_connector_terminal_relationship.

EXPRESS specification:

*)
ENTITY packaged_connector_terminal_relationship
 SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  WR1: (SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART']) 
       = 1) AND
       (SELF.of_shape.definition\product_definition.description =
       'packaged connector');
  WR2: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN 
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect)) AND
       (SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.description 
        = 'interface terminal'));
  WR3: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN 
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect)) AND
       (SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.description 
        = 'join terminal'));
END_ENTITY; -- packaged_connector_terminal_relationship
(*

Formal propositions:

WR1: The packaged_connector_terminal_relationship shall be an aspect of the shape of a packaged_part, externally_defined_packaged_part, or library_defined_packaged_part with a description of 'packaged connector'.

WR2: The packaged_connector_terminal_relationship shall have a relating_shape_aspect that is a packaged_part_terminal with a description of 'interface terminal'.

WR3: The packaged_connector_terminal_relationship shall have a related_shape_aspect that is a packaged_part_terminal with a description of 'join terminal'.

5.2.3.1.248 packaged_part

A packaged_part is a physical_unit that implements the ARM concepts of Altered_packaged_part and Packaged_part.

EXPRESS specification:

*)
ENTITY packaged_part
 SUPERTYPE OF (packaged_connector)
 SUBTYPE OF (physical_unit);
WHERE 
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL' IN 
       TYPEOF (sa))) >= 0))) = 0;
  WR2: SIZEOF (USEDIN (SELF, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) <= 1;
  WR3: SIZEOF (QUERY (ifu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN
       TYPEOF (ifu.relating_product_definition)) AND
       (ifu.relating_product_definition.frame_of_reference.name =
       'functional design usage'))) <= 1;
  WR4: NOT(EXISTS(SELF\product_definition.description)) OR
       ((NOT (SELF\product_definition.description = 'altered packaged part')) OR
       (SIZEOF (QUERY (bpp <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'base packaged part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART'] * 
       TYPEOF (bpp.relating_product_definition)) = 1) AND
       (bpp.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) >= 1));
  WR5: SIZEOF (QUERY (upkg <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'used package') |
       SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGE'] * 
       TYPEOF (upkg.relating_product_definition)) = 1)) >= 1;
  WR6: SELF.frame_of_reference.name = 'physical design usage';
END_ENTITY; -- packaged_part
(*

Formal propositions:

WR1: The packaged_part may have zero or more shape_aspect that is a packaged_part_terminal.

WR2: The packaged_part shall have no more than one material_designation.

WR3: The packaged_part shall be related to exactly one functional_unit with a frame_of_reference name of 'functional design usage' as the 'implemented function'.

WR4: If the packaged_part has a description of 'altered packaged part', it shall be related to at least one packaged_part, externally_defined_packaged_part, or library_defined_packaged_part with a frame_of_reference name of 'physical design usage' as the 'member connected terminal'.

WR5: The packaged_part shall be related to at least one package, externally_defined_package, or library_defined_package as the 'used package'.

NOTE: The global rule Packaged_part_unique_constraint ensures that all packages so referenced are for the same product_definition_formation.

5.2.3.1.249 packaged_part_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A packaged_part_terminal is a shape_aspect that implements the ARM concepts of:
  • Packaged_part_interface_terminal
  • Packaged_part_join_terminal
  • Packaged_part_terminal

EXPRESS specification:

*)
ENTITY packaged_part_terminal
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\shape_aspect.description IN ['interface terminal', 
       'join terminal'];
  WR2: (SIZEOF (TYPEOF (SELF.of_shape.definition) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PACKAGED_PART',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PACKAGED_PART']) 
       = 1) AND
  (SELF.of_shape.definition\product_definition.frame_of_reference.name = 
       'physical design usage');
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr.used_representation))) >= 1))) = 0;
  WR4: SIZEOF (QUERY (top <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'terminal of package') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_TERMINAL' IN
       TYPEOF (top.related_shape_aspect))) >= 1;
  WR5: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_CONNECTED_TERMINALS_DEFINITION'
       IN TYPEOF (mct.relating_shape_aspect))) <= 1;
  WR6: (NOT(SELF\shape_aspect.description = 'interface terminal')) OR
       (SIZEOF(QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_CONNECTOR_TERMINAL_RELATIONSHIP' IN TYPEOF(sar))
       AND (sar.relating_shape_aspect\shape_aspect.description = 
       'join terminal'))) >= 1);
  WR7: (NOT(SELF\shape_aspect.description = 'join terminal')) OR
       (SIZEOF(QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_CONNECTOR_TERMINAL_RELATIONSHIP' IN TYPEOF(sar))
       AND (sar.relating_shape_aspect\shape_aspect.description = 
        'interface terminal'))) <= 1);
END_ENTITY; -- packaged_part_terminal
(*

Formal propositions:

WR1: The packaged_part_terminal shall have a description of either 'interface terminal' or 'join terminal'.

WR2: The packaged_part_terminal shall be an aspect of the shape of a packaged_part, externally_defined_packaged_part, or library_defined_packaged_part that has a frame_of_reference name of 'physical design usage'.

WR3: The packaged_part_terminal shall have a property that is represented by at least one shape_representation.

WR4: The packaged_part_terminal shall relate to at least one package_terminal to specify the 'terminal of package'.

WR5: The packaged_part_terminal shall be related to at most one part_connected_terminals_definition as a member connected terminal.

WR6: If the packaged_part_terminal has a description of 'interface terminal', it shall be related to at least one packaged_part_terminal with a description of 'join terminal' by a packaged_connector_terminal_relationship.

WR7: If the packaged_part_terminal has a description of 'join terminal', it shall be related to at most one packaged_part_terminal with a description of 'interface terminal' by a packaged_connector_terminal_relationship.

NOTE: Part_connected_terminals_definition provides a capability to state that multiple interface terminals are connected internally in the connector.

5.2.3.1.250 padstack_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A padstack_definition is a product_definition that implements the ARM concept Padstack_definition and its subtypes.

EXPRESS specification:

*)
ENTITY padstack_definition
 SUPERTYPE OF (ONEOF( design_layer_type_specific_padstack_definition,
               stratum_occurrence_specific_padstack_definition,
               stratum_type_independent_padstack_definition))
 SUBTYPE OF (product_definition);
WHERE
  WR1: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
       SELF\product_definition_with_associated_documents.
        documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) + 
       SIZEOF (QUERY (ada <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'creation date')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR4: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR5: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\product_definition ||
       SELF\padstack_definition))) = 0;
  WR7: SELF.frame_of_reference.name IN ['layout design usage' ];
  WR9: SIZEOF (QUERY (prpc <* USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.' +
       'PRODUCTS') |
       prpc\product_category.name = 'template model')) = 1;
END_ENTITY; -- padstack_definition
(*

Formal propositions:

WR1: If the padstack_definition is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR2: The padstack_definition shall have exactly one creation date.

WR3: The padstack_definition shall have exactly one approval.

WR4: The padstack_definition shall have at least one organization or person_and_organization as the creator.

WR5: The padstack_definition shall have exactly one security_classification.

WR6: The padstack_definition shall not be any other type of product_definition.

WR7: The padstack_definition shall have a frame_of_reference with a name of 'layout design usage'.

WR8: The padstack_definition shall be associated with a product that is a template model.

5.2.3.1.251 padstack_occurrence

A padstack_occurrence is an assembly_group_component_shape_aspect that implements the ARM concept of Padstack_occurrence.

EXPRESS specification:

*)
ENTITY padstack_occurrence
  SUBTYPE OF (assembly_group_component_shape_aspect);
END_ENTITY; -- padstack_occurrence
(*

5.2.3.1.252 padstack_occurrence_shape_aspect_relationship

A padstack_occurrence_shape_aspect_relationship is a shape_aspect_relationship that implements the ARM concept of Padstack_occurrence_sub_assembly_relationship

EXPRESS specification:

*)
ENTITY padstack_occurrence_shape_aspect_relationship
  SUBTYPE OF (shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\padstack_occurrence_shape_aspect_relationship)) = 0;
  WR3: SELF\shape_aspect_relationship.name = 'padstack occurrence sub assembly relationship';
END_ENTITY; -- padstack_occurrence_shape_aspect_relationship 
(* 

Formal propositions:

WR1: The related shape_aspect shall not be the relating shape_aspect.

WR2: The types of padstack_occurrence_shape_aspect_relationship shall be only padstack_occurrence_shape_aspect_relationship, shape_aspect, and shape_aspect_relationship.

WR3: The name attribute of the shape_aspect_relationship supertype shall be 'padstack occurrence sub assembly relationship'.

5.2.3.1.253 parallelism_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A parallelism_tolerance is a geometric_tolerance_with_specified_datum_source that implements the ARM concept of Parallelism_tolerance.

EXPRESS specification:

*)
ENTITY parallelism_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'parallelism';
END_ENTITY; -- parallelism_tolerance
(*

Formal propositions:

WR1: The name for the parallelism_tolerance shall be 'parallelism'.

Informal propositions:

IP1: The toleranced_shape_aspect of the parallelism_tolerance shall either lie on the boundary of the shape of the product; be a centre_of_symmetry with a description of either 'axis' or 'plane'; be a tangent with a description of 'plane'; be a part_template_definition; or be a composite_shape_aspect the 'composing' shape_aspects of which either are all of type part_template_definition, are all of type centre_of_symmetry and have the same description -- either 'axis' or 'plane', or are all of type tangent with a description of 'plane'.

IP2: The parallelism_tolerance shall have at most two physical_unit_datum in its referenced datum_system.

IP3: The parallelism_tolerance shall have at least one physical_unit_datum in its referenced datum_system that has description of either 'axis' or 'plane'.

IP4: If the toleranced_shape_aspect of the parallelism_tolerance is neither a centre_of_symmetry with a description of 'axis' nor a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'axis', the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

5.2.3.1.254 parameter_assignment_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A parameter_assignment_representation is a representation that implements the ARM concept of Parameter_assignment.

EXPRESS specification:

*)
ENTITY parameter_assignment_representation
  SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (SELF.items) = 2;
  WR2: SIZEOF (QUERY (it <* SELF.items |
       (SIZEOF (TYPEOF (it) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MODEL_PARAMETER']) 
       = 1))) = 1;
  WR3: SIZEOF (QUERY (it <* SELF.items |
       (SIZEOF (TYPEOF (it) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COORDINATED_REPRESENTATION_ITEM']) 
       = 1))) <= 1;
  WR4: SIZEOF (QUERY (it <* SELF.items |
        (SIZEOF (QUERY(aga <* USEDIN (it,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
             (SIZEOF (TYPEOF ( aga\group_assignment.assigned_group) *
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CHARACTERISTIC_TYPE']) = 1))) 
       = 1))) <= 1;
  WR5: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\parameter_assignment_representation)) = 0; 
END_ENTITY; -- parameter_assignment_representation
(*

Formal propositions:

WR1: The parameter_assignment_representation shall have exactly two representation_items.

WR2: The parameter_assignment_representation shall have exactly one item that is a model_parameter.

WR3: The parameter_assignment_representation shall have no more than one item that is a coordinated_characteristic.

WR4: The parameter_assignment_representation shall have no more than one item that is a characteristic.

WR5: The parameter_assignment_representation shall not be any other type other than a representation.

5.2.3.1.255 parameter_type

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A parameter_type is a group that specifies a boolean_property_type, a logical_property_type, a physical_property_type or a string_property_type for a model_parameter.

EXPRESS specification:

*)
ENTITY parameter_type
  SUBTYPE OF (group);
WHERE
  WR1: SELF\group.name IN ['string property type','logical property type',
       'physical property type','boolean property type'];
END_ENTITY; -- parameter_type
(*

Formal propositions:

WR1: A parameter_type shall have a name that is 'string property type', 'logical property type', 'physical property type', or 'boolean property type'.

5.2.3.1.256 part_connected_terminals_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A part_connected_terminals_definition is a shape_aspect that implements the ARM concept of Part_connected_terminals_definition.

EXPRESS specification:

*)
ENTITY part_connected_terminals_definition
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name;
WHERE
  WR1: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'BARE_DIE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'INTERCONNECT_MODULE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGED_PART_TERMINAL'] *
       TYPEOF (mct.related_shape_aspect)) = 1)) >= 2;
END_ENTITY; -- part_connected_terminals_definition
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique.

WR1: The part_connected_terminals_definition shall relate to at least two instances of assembly_module_terminal, bare_die_terminal, interconnect_module_terminal, package_terminal, or packaged_part_terminal to specify a 'member connected terminal'.

Informal propositions:

IP1: Each terminal related by this part_connected_terminals_definition shall be a terminal of the same product version.

5.2.3.1.257 part_interface_access_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A part_interface_access_feature is a shape_aspect that implements the ARM concept of Part_interface_access_feature.

EXPRESS specification:

*)
ENTITY part_interface_access_feature
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name  = 'interface_access area') AND
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone'))) = 1;
END_ENTITY; -- part_interface_access_feature
(*

Formal propositions:

WR1: The part_interface_access_feature shall be related as the 'interface_access area' to exactly one shape_aspect with a description of 'connection zone'.

5.2.3.1.258 part_mating_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A part_mating_feature is a shape_aspect that implements the ARM concept of Part_mating_feature.

EXPRESS specification:

*)
ENTITY part_mating_feature
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name  = 'mating area') AND
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone'))) = 1;
END_ENTITY; -- part_mating_feature
(*

Formal propositions:

WR1: The part_mating_feature shall be related as the 'mating area' to exactly one shape_aspect with a description of 'connection zone'.

5.2.3.1.259 part_mounting_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A part_mounting_feature is a shape_aspect that implements the ARM concept of Part_mounting_feature.

EXPRESS specification:

*)
ENTITY part_mounting_feature
 SUPERTYPE OF (bare_die_surface)
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name  = 'mounting area') AND
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone'))) = 1;
END_ENTITY; -- part_mounting_feature
(*

Formal propositions:

WR1: The part_mounting_feature shall be related as the 'mounting area' to exactly one shape_aspect with a description of 'connection zone'.

5.2.3.1.260 part_template_definition

A part_template_definition is a shape_aspect that implements the ARM concepts of:
  • Blind_passage_template
  • Component_termination_passage_template
  • Counterbore_passage_template
  • Countersunk_passage_template
  • Default_trace_template
  • Dependent_material_removal_feature_template
  • Inter_stratum_feature_template
  • Material_addition_feature_template
  • Material_removal_feature_template
  • Non_conductive_cross_section_template
  • Part_template
  • Part_text_template
  • Physical_feature_or_part_template
  • Printed_connector_template
  • Printed_part_cross_section_template
  • Printed_part_template
  • Special_symbol_part_template
  • Stratum_feature_template
  • Trace_template
  • Unsupported_passage_template
  • Via_template

EXPRESS specification:

*)
ENTITY part_template_definition
  SUPERTYPE OF (dependent_material_removal_feature_template)
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\
       shape_aspect.of_shape\
       property_definition.definition.frame_of_reference\
       application_context_element.name = 'template definition';

  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL' IN 
       TYPEOF (pdr.used_representation)) AND
       (pdr.used_representation\representation.name = 'part template analytical model'))) 
       <= 1))) = 0;       

  WR3: (NOT (SELF\shape_aspect.description = 
         'component termination passage template')) OR
       (SIZEOF (QUERY (ctpt <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'inter stratum feature passage technology') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN
       TYPEOF (ctpt.relating_shape_aspect)) AND
       (ctpt.relating_shape_aspect\shape_aspect.description = 
       'default component termination passage definition'))) = 1);

  WR4: (NOT (SELF\shape_aspect.description = 
        'component termination passage template')) OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'access mechanism') |
       am.related_shape_aspect\shape_aspect.description IN 
       ['component termination passage template interface terminal',
       'component termination passage template join terminal'])) >= 2);

  WR5: (NOT (SELF\shape_aspect.description = 'default trace template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'technology usage') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
       TYPEOF (tu.relating_property_definition.definition))) = 1)) = 1);

  WR6: (NOT (SELF\shape_aspect.description = 'inter stratum feature template')) OR
       (SIZEOF (QUERY (isfpt <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'inter stratum feature passage technology') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN
       TYPEOF (isfpt.relating_shape_aspect)))) = 1);

  WR7: (NOT (SELF\shape_aspect.description = 'printed connector template')) OR
       (SIZEOF (QUERY (sar <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name IN 
       ['connector'])) >= 1);

  WR8: (NOT (SELF\shape_aspect.description = 'printed part cross section template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ANALYTICAL_MODEL' IN 
       TYPEOF (pdr.used_representation)) AND
       (pdr.used_representation\representation.name = 'transmission line model'))) 
       = 1))) = 0);

  WR9: (NOT (SELF\shape_aspect.description = 'printed part cross section template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2)) = 2)) = 1))) = 0);

 WR10: (NOT (SELF\shape_aspect.description = 'printed part cross section template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 'maximum width'))) = 1
       )) = 1))) = 0);

 WR11: (NOT (SELF\shape_aspect.description = 'printed part cross section template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 'minimum width'))) = 1
       )) = 1))) = 0);

 WR12: (NOT (SELF\shape_aspect.description = 'printed part template')) OR
       (SIZEOF (QUERY (impl_func <* QUERY (pdr <* 
       USEDIN (SELF.of_shape.definition,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'implemented function') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT' IN 
       TYPEOF (impl_func.relating_product_definition)) AND
       (impl_func.relating_product_definition.frame_of_reference.name =
       'functional design usage'))) = 1);
 
 WR13: (NOT (SELF\shape_aspect.description = 'printed part template')) OR
       (SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN 
       TYPEOF (ad.related_shape_aspect)) AND
       (ad.related_shape_aspect\shape_aspect.description IN 
       ['interface terminal', 'join terminal']))) >= 2);

 WR14: (NOT (SELF\shape_aspect.description = 'trace template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 'curve style parameters'
       )) = 1 ) )) = 1 );  

 WR15: (NOT (SELF\shape_aspect.description = 'unsupported passage template')) OR
       (SIZEOF (QUERY (upt <* QUERY (sar <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'inter stratum feature passage technology') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN 
       TYPEOF (upt.relating_shape_aspect)) AND
       (upt.relating_shape_aspect\shape_aspect.description = 
       'default unsupported passage definition'))) = 1);

 WR16: (NOT (SELF\shape_aspect.description = 'via template')) OR
       (SIZEOF (QUERY (vpt <* QUERY (sar <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'inter stratum feature passage technology') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PASSAGE_TECHNOLOGY' IN 
       TYPEOF (vpt.relating_shape_aspect)) AND
       (vpt.relating_shape_aspect\shape_aspect.description = 
       'default via definition'))) = 1);

 WR17: (NOT (SELF\shape_aspect.description = 'via template')) OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'access mechanism') |
       am.related_shape_aspect\shape_aspect.description =
                                 'via template terminal')) >= 2);

 WR18: EXISTS(SELF\shape_aspect.name);

 WR19: (NOT (SELF\shape_aspect.description = 'non conductive cross section template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'technology usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN
       TYPEOF (tu.relating_property_definition.definition)))) = 1)) = 1);

 WR20: (NOT (SELF\shape_aspect.description = 'non conductive cross section template')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND (it\representation_item.name = 'nominal width'))) = 1
       )) = 1))) = 0);

 WR21: (NOT (SELF\shape_aspect.description = 'printed connector template')) OR
       (SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN
       TYPEOF (ad.related_shape_aspect)) AND
       (ad.relating_shape_aspect\shape_aspect.description IN
       ['interface terminal', 'join terminal']))) >= 2);

 WR22: (NOT (SELF\shape_aspect.description = 
                         'printed part cross section template')) OR
       (SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'horizontal material link') |
       NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (ad.relating_shape_aspect)) AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (ad.relating_shape_aspect\shape_aspect_relationship.
                                                   related_shape_aspect)) AND
       (ad.relating_shape_aspect\shape_aspect_relationship.
                 related_shape_aspect\shape_aspect.description = 'left'))))) = 0); 

 WR27: (NOT (SELF\shape_aspect.description = 
                        'printed part cross section template')) OR
       (SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'horizontal material link') |
       NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (ad.relating_shape_aspect)) AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (ad.relating_shape_aspect\shape_aspect_relationship.
                                                 relating_shape_aspect)) AND
       (ad.relating_shape_aspect\shape_aspect_relationship.
              relating_shape_aspect\shape_aspect.description = 'right'))))) = 0); 

 WR28: (NOT (SELF\shape_aspect.description = 
                                'printed part cross section template')) OR
       (SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'vertical material link') |
       NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (ad.relating_shape_aspect)) AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (ad.relating_shape_aspect\shape_aspect_relationship.
                                              related_shape_aspect)) AND
       (ad.relating_shape_aspect\shape_aspect_relationship.
          related_shape_aspect\shape_aspect.description = 'bottom'))))) = 0); 

 WR29: (NOT (SELF\shape_aspect.description = 
                                 'printed part cross section template')) OR
       (SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'vertical material link') |
       NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (ad.relating_shape_aspect)) AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (ad.relating_shape_aspect\shape_aspect_relationship.
                                          relating_shape_aspect)) AND
       (ad.relating_shape_aspect\shape_aspect_relationship.
          relating_shape_aspect\shape_aspect.description = 'top'))))) = 0); 
 WR30: SELF\shape_aspect.name = 'NULL';
END_ENTITY; -- part_template_definition
(*

Formal propositions:

WR1: The part_template_definition shall be an aspect of the shape of a product_definition that has an application_context_element with a name of 'template definition'.

WR2: The part_template_definition shall have at most one representation that is an analytical_model and has a name of 'part template analytical model'.

WR3: If the part_template_definition has a description of 'component termination passage template', it shall be related to a passage_technology with a description of 'default component termination passage definition' as a 'inter stratum feature passage technology'.

WR4: If the part_template_definition has a description of 'component termination passage template', it shall be used to relate at least two shape_aspects with a description of either 'component termination passage template interface terminal' or 'component termination passage template join terminal' to specify the 'access mechanism'.

WR5: If the part_template_definition has a description of 'default trace template' it shall have a property that is related to a property of a stratum_technology as the 'technology usage'.

WR6: If the part_template_definition has a description of 'inter stratum feature template', it shall be related to a passage_technology as an 'inter stratum feature passage technology'.

WR7: If the part_template_definition has a description of 'printed connector template', it shall be used to relate at least one shape_aspect to specify a 'connector'.

WR8: If the part_template_definition has a description of 'printed part cross section template', it shall be represented by exactly one analytical_model with a name of 'transmission line model'.

WR9: If the part_template_definition has a description of 'printed part cross section template', it shall have a representation that contains exactly two length_measure_with_units.

WR10: If the part_template_definition has a description of 'printed part cross section template', it shall have a representation that contains exactly one length_measure_with_unit with a name of 'maximum width'.

WR11: If the part_template_definition has a description of 'printed part cross section template', it shall have a representation that contains exactly one length_measure_with_unit with a name of 'minimum width'.

WR12: If the part_template_definition has a description of 'printed part template', it shall be an aspect of the shape of a product_definition that is the 'implemented function' for exactly one functional_unit with a frame_of_reference name of 'functional design usage'.

WR13: If the part_template_definition has a description of 'printed part template', it shall be used to relate two or more printed_part_template_terminals with a description of either 'interface terminal' or 'join terminal' to specify an 'associated definition'.

WR14: If the part_template_definition has a description of 'trace template', it shall have a representation that contains exactly one styled_item with a name of 'trace style' that specifies a curve_style.

WR15: If the part_template_definition has a description of 'unsupported passage template', it shall be related to exactly one passage_technology with a description of 'default unsupported passage definition'.

WR16: If the part_template_definition has a description of 'via template', it shall be related to exactly one passage_technology with a description of 'default via definition'.

WR17: If the part_template_definition has a description of 'via template', it shall relate at least two shape_aspects with a description of 'via template terminal' as the 'access mechanism'.

WR18: The part_template_definition name shall exist.

NOTE: This is a placeholder rule.

WR19: If the part_template_definition has a description of 'non conductive cross section template' it shall have a property that is related to a property of a stratum_technology as the 'technology usage'.

WR20: If the part_template_definition has a description of 'non conductive cross section template', it shall have a representation that contains exactly one length_measure_with_unit with a name of 'nominal width'.

WR21: If the part_template_definition has a description of 'printed connector template', it shall be used to relate two or more printed_part_template_terminals with a description of either 'interface terminal' or 'join terminal' to specify an 'associated definition'.

WR22: If the part_template_definition has a description of 'printed part cross section template', and if there are horizontallly adjacent disjoint materials, the subsequent boundary shall be the 'right' boundary for each material link between two materials.

WR23: If the part_template_definition has a description of 'printed part cross section template', and if there are horizontally adjacent disjoint materials, the precedent boundary shall be the 'left' boundary for each material link between two materials.

WR24: If the part_template_definition has a description of 'printed part cross section template', and if there are verticallly adjacent disjoint materials, the subsequent boundary shall be the 'top' boundary for each material link between two materials.

WR25: If the part_template_definition has a description of 'printed part cross section template', and if there are vertically adjacent disjoint materials, the precedent boundary shall be the 'bottom' boundary for each material link between two materials.

WR26: The name inherited from shape_aspect shall be 'NULL'.

5.2.3.1.261 part_text_template_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A part_text_template_definition is a part_template_definition that implements the ARM concept of Part_text_template .

EXPRESS specification:

*)
ENTITY part_text_template_definition
  SUBTYPE OF (part_template_definition);
WHERE
  WR1: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEXT_LITERAL' IN
       TYPEOF (it))) = 1)) = 1))) = 0);
  WR2: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 
         'maximum font vertical extent'))) = 1
       )) = 1))) = 0);
  WR3: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 
         'maximum font horizontal extent'))) = 1
       )) = 1))) = 0);
END_ENTITY; -- part_text_template_definition
(*

Formal propositions:

WR1: The part_text_template_definition shall have a representation that has exactly one text_literal.

WR2: The part_text_template_definition shall have a representation that has exactly one measure_representation_item that is a length_measure_with_unit with a name of 'maximum font vertical extent'.

WR3: The part_text_template_definition shall have a representation that has exactly one measure_representation_item that is a length_measure_with_unit with a name of 'maximum font horizontal extent'.

5.2.3.1.262 part_tooling_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A part_tooling_feature is a shape_aspect that implements the ARM concept of Part_tooling_feature.

EXPRESS specification:

*)
ENTITY part_tooling_feature
 SUPERTYPE OF (fiducial_part_feature ANDOR 
               test_point_part_feature)
 SUBTYPE OF (shape_aspect);
END_ENTITY; -- part_tooling_feature
(*

5.2.3.1.263 passage_technology

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A passage_technology is a shape_aspect that implements the ARM concepts of:
  • Default_component_termination_passage_definition
  • Default_unsupported_passage_definition
  • Passage_technology

EXPRESS specification:

*)
ENTITY passage_technology
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name, SELF\shape_aspect.of_shape;
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN 
       TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) <= 1;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation')) = 1))) = 0;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (
          {1 <= SIZEOF (pcr.used_representation.items) <= 8}
                                             ))) = 0))) = 0;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items | 
       NOT (it\representation_item.name IN ['maximum aspect ratio', 'plated passage', 
       'maximum allowed component terminal extent', 
       'minimum allowed component terminal extent', 
       'maximum as finished deposition thickness',  
       'minimum as finished deposition thickness',  
       'maximum as finished passage extent', 
       'minimum as finished passage extent']))) = 0))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RATIO_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'maximum aspect ratio') AND
       (it\measure_with_unit.value_component > 1.0))) <= 1))) = 0))) = 0;
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'plated passage') AND
       (it\descriptive_representation_item.description IN ['true', 'false']))) = 1))) = 0))) = 0;
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'minimum as finished passage extent')
       )) <= 1))) = 0))) = 0;
  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
       'maximum as finished deposition thickness'))) <= 1))) = 0))) = 0;
 WR10: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
       'minimum as finished deposition thickness'))) <= 1))) = 0))) = 0;
 WR11: (NOT (SELF\shape_aspect.description IN 
       ['default component termination passage definition',
       'default via definition'])) OR 
       (SIZEOF (USEDIN (SELF, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1);
 WR12: (NOT (SELF\shape_aspect.description IN  
       ['default component termination passage definition',
       'default unsupported passage definition',
       'default via definition'])) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'minimum as finished passage extent'))) 
        = 1))) = 0))) = 0);
 WR13: (NOT (SELF\shape_aspect.description =
       'default component termination passage definition')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
       'minimum as finished deposition thickness'))) 
         = 1))) = 0))) = 0);
 WR14: (NOT (SELF\shape_aspect.description =
       'default component termination passage definition')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
       'minimum allowed component terminal extent'))) = 1))) = 0))) = 0);
 WR15: (NOT (SELF\shape_aspect.description =
       'default component termination passage definition')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
       'maximum allowed component terminal extent'))) = 1))) = 0))) = 0);
 WR16: (NOT (SELF\shape_aspect.description = 'default via definition')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 
       'minimum as finished deposition thickness'))) = 1))) = 0))) = 0);
 WR17: SIZEOF (QUERY (rpt <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'as finished inter stratum extent') |
       (rpt.related_shape_aspect.of_shape\property_definition.description =
       'finished stratum extent') AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP' 
       IN 
        TYPEOF (rpt.related_shape_aspect.of_shape\property_definition.
       definition)) 
       AND    
       (rpt.related_shape_aspect.of_shape\property_definition.
        definition\product_definition_relationship.name =
       'inter stratum extent')))) = 1;
END_ENTITY; -- passage_technology
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within the scope of the referenced shape.

WR1: The passage_technology shall be an aspect of the shape of a product_definition.

WR2: The passage_technology shall have at most one material designation.

WR3: The passage_technology shall have exactly one representation with a name of 'physical characteristics representation'.

WR4: The passage_technology shall have at least one and at most eight items in its representation with a name of 'physical characteristics representation'.

WR5: The items in the representation with a name of 'physical characteristics representation' of a passage_technology shall have a name of either 'maximum aspect ratio', 'plated passage', 'maximum allowed component terminal extent', 'minimum allowed component terminal extent', 'maximum as finished deposition thickness', 'minimum as finished deposition thickness', 'maximum as finished passage extent', or 'minimum as finished passage extent'.

WR6: At most one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a ratio_measure_with_unit with a name of 'maximum aspect ratio' and a value greater than 1.0.

WR7: Exactly one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a descriptive_representation_item with a name of 'plated passage' and a description of 'true' or 'false'.

WR8: At most one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum as finished passage extent'.

WR9: At most one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'maximum as finished deposition thickness'.

WR10: At most one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum as finished deposition thickness'.

WR11: If the passage_technology has a description of 'default via definition' or 'default component termination passage definition', it shall have exactly one material_designation.

WR12: If the passage_technology has a description of 'default component termination passage definition', 'default unsuported passage definition' or 'default via definition', exactly one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum as finished passage extent'.

WR13: If the passage_technology has a description of 'default component termination passage definition', exactly one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum as finished deposition thickness'.

WR14: If the passage_technology has a description of 'default component termination passage definition', exactly one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum allowed component terminal extent'.

WR15: If the passage_technology has a description of 'default component termination passage definition', exactly one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'maximum allowed component terminal extent'.

WR16: If the passage_technology has a description of 'default via definition', exactly one item in the representation with a name of 'physical characteristics representation' of a passage_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum as finished deposition thickness'.

WR17: The passage_technology shall relate to exactly one shape_aspect of a shape with a description of 'finished stratum extent' of a product_definition_relationship with a name of 'inter stratum extent' to specify the 'as finished inter stratum extent'.

Informal propositions:

IP1: If the passage_technology is related to a inter_stratum_feature with a description of 'interconnect module edge' or 'interconnect module edge segment' it, shall not be related to a representation_item with a name of 'maximum as finished passage extent'

IP2: If the item in the representation with a name of 'physical characteristics representation' of a passage_technology has a descriptive_representation_item with a name of 'plated passage' and a description of 'true' then the material designation shall have be the designation for a material_designation_characterization with a property that is a material_property_representation that has a definition that is a material_property and a used_representation with a name of 'conductivity classification representation' that has an item that is a descriptive_representation_item with a name of 'electrical conductivity classification' and a description of 'conductive'.

5.2.3.1.264 perpendicularity_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A perpendicularity_tolerance is a geometric_tolerance_with_specified_datum_source that implements the ARM concept of Perpendicularity_tolerance.

EXPRESS specification:

*)
ENTITY perpendicularity_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'perpendicularity';
END_ENTITY; -- perpendicularity_tolerance
(*

Formal propositions:

WR1: The name for the perpendicularity_tolerance shall be 'perpendicularity'.

Informal propositions:

IP1: The toleranced_shape_aspect of the perpendicularity_tolerance shall either lie on the boundary of the shape of the product; be a centre_of_symmetry with a description of either 'axis' or 'plane'; be a tangent with a description of 'plane'; be a part_template_definition; or be a composite_shape_aspect the 'composing' shape_aspects of which either are all of type part_template_definition, are all of type centre_of_symmetry and have the same description -- either 'axis' or 'plane', or are all of type tangent with a description of 'plane'.

IP2: The perpendicularity_tolerance shall have at most two physical_unit_datum in its referenced datum_system.

IP3: The perpendicularity_tolerance shall have at least one physical_unit_datum in its referenced datum_system that has description of either 'axis' or 'plane'.

IP4: If the toleranced_shape_aspect of the perpendicularity_tolerance is neither a centre_of_symmetry with a description of 'axis' nor a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'axis', the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

5.2.3.1.265 physical_connectivity_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_connectivity_definition is a shape_aspect that implements the ARM concepts of Physical_connectivity_definition and Physical_connectivity_structure_definition.

EXPRESS specification:

*)
ENTITY physical_connectivity_definition
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name,SELF\shape_aspect.of_shape;
WHERE
  WR1: SIZEOF (QUERY (at <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated terminals') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (at.related_shape_aspect)) AND
((at.related_shape_aspect\shape_aspect.description = 
                 'assembly module component terminal') OR
(at.related_shape_aspect\shape_aspect.description = 
                        'bare die component terminal') OR
(at.related_shape_aspect\shape_aspect.description = 
               'interconnect component join terminal') OR
(at.related_shape_aspect\shape_aspect.description = 
             'interconnect module component terminal') OR
(at.related_shape_aspect\shape_aspect.description = 
              'minimally defined component terminal') OR
(at.related_shape_aspect\shape_aspect.description = 
                     'packaged component join terminal'))
       )) > 1;
  WR2: SIZEOF (QUERY( pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
        (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'connectivity allocation')) = 1)
       ))
       <= 1;
END_ENTITY; -- physical_connectivity_definition
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within the context of the product_definition_shape in the role of of_shape for the shape_aspect supertype.

NOTE: Since there may be only one product_definition for a product_definition_shape, this guarantees uniqueness within the context of the product_definition.

WR1: The physical_connectivity_definition shall relate to two or more physical_component_terminal to specify the 'associated terminals'.

WR2: The physical_connectivity_definition shall be related by at most one property_definition_relationshp as a 'connectivity allocation'.

Informal propositions:

IP1: All component_terminals related to a physical_connectivity_definition shall be in the same design view.

IP2: All component_terminals related to a physical_connectivity_definition shall not be in the set of terminals of the components that implement the connectivity defined by the physical_connectivity_definition.

NOTE: The terminals identified by the physical_connectivity_definition are a subset of the terminals referenced by the members of assembly_joint or by the members of the implementation of the ARM concept of Interface_mounted_join.

5.2.3.1.266 physical_connectivity_element

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_connectivity_element is a shape_aspect_relationship and a shape aspect that implement the ARM concept of Physical_connectivity_element.

EXPRESS specification:

*)
ENTITY physical_connectivity_element
  SUBTYPE OF (shape_aspect_relationship, shape_aspect);
WHERE
  WR1: (SELF.relating_shape_aspect\shape_aspect.description = 
                          'topological junction') XOR
       (SIZEOF ([
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL'] *
       TYPEOF (SELF.relating_shape_aspect)) = 1);
  WR2: (SELF.related_shape_aspect\shape_aspect.description = 'topological junction') XOR
       (SIZEOF ([
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL'] *
       TYPEOF (SELF.related_shape_aspect)) = 1);
  WR3: SIZEOF (QUERY (se <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'structure element') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION' IN
       TYPEOF (se.relating_shape_aspect))) = 1;
  WR4: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT' IN 
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.
         frame_of_reference.name = 
       'physical design');
END_ENTITY; -- physical_connectivity_element
(*

Formal propositions:

WR1: The physical_connectivity_element shall have a relating_shape_aspect that either has a description of 'topological junction', or is a component_terminal.

WR2: The physical_connectivity_element shall have a related_shape_aspect that either has a description of 'topological junction', or is a component_terminal.

WR3: The physical_connectivity_element shall be related to exactly one physical_connectivity_definition as a 'structure element'.

WR4: The physical_connectivity_element shall be an aspect of the shape of a physical_unit that has a frame_of_reference name of 'physical design'.

5.2.3.1.267 physical_network

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_network is a shape_aspect that implements the ARM concept of Physical_network.

NOTE: A physical_network should not be confused with the like sounding term physical_unit_network_definition.

EXPRESS specification:

*)
ENTITY physical_network
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (QUERY (cr <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'connectivity requirement') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (cr.related_shape_aspect)) AND
((cr.related_shape_aspect\shape_aspect.description = 
     'component termination passage join terminal') OR
(cr.related_shape_aspect\shape_aspect.description = 
                              'land join terminal') OR
(cr.related_shape_aspect\shape_aspect.description = 
               'non functional land join terminal') OR
(cr.related_shape_aspect\shape_aspect.description = 
                 'printed component join terminal'))
)) >= 2;
  WR2: SIZEOF (QUERY (nt <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'network topology') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (nt.related_shape_aspect))) >= 1;
  WR3: SIZEOF (QUERY (nt <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'reference connected terminals') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_CONNECTED_TERMINALS_DEFINITION' IN
       TYPEOF (nt.relating_shape_aspect))) <= 1;
END_ENTITY; -- physical_network
(*

Formal propositions:

WR1: The physical_network shall relate to at least two component_terminals with the specified descriptions to specify a 'connectivity requirement'.

WR2: The physical_network shall relate to at least one join_shape_aspect to specify a 'network topology'.

WR3: The physical_network shall relate to no more than one part_connected_terminals_definition to specify 'reference connected terminals'.

Informal propositions:

IP1: All component_terminals related to a physical_network in the role of connectivity_requirement_element shall be in the same design view as the physical_network (interconnect_module.)

IP2: All join_relationships related to a physical_network in the role of interconnect_module_net_topology_element shall be in the same design view as the physical_network (interconnect_module.)

IP3: All interconnect_module_net_topology_element and connectivity_requirement_element related to physical_network shall be in the same design view (interconnect_module.)

IP4: The material_electrical_conductivity_category shall be the same for all materials that participate in the physical_network.

IP5: The physical_network shall not be referenced by more than one property_definition_relationship that relates the physical_network to an aggregate connectivity requirement implementation.

5.2.3.1.268 physical_node_requirement_to_implementing_component_allocation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_node_requirement_to_implementing_component_allocation is a shape_aspect_relationship and a shape_aspect that is the allocation of a physical node to the component that is partially or wholly responsible for implementing that node in the assembly. The relating and related shape_aspects are the node and a shape_aspect of the component respectively. A physical_node_requirement_to_implementing_component_allocation implements the ARM concept of Physical_node_requirement_to_implementing_component_allocation.

EXPRESS specification:

*)
ENTITY physical_node_requirement_to_implementing_component_allocation
  SUBTYPE OF (shape_aspect_relationship, shape_aspect);
WHERE
  WR1: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.related_shape_aspect.of_shape\property_definition.definition)) AND
       (NOT (SELF.related_shape_aspect.of_shape\property_definition.definition\product_definition.description IN 
       ['laminate component']));
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_CONNECTIVITY_DEFINITION' IN
       TYPEOF (SELF.relating_shape_aspect);
  WR3: acyclic_shape_aspect_relationship(SELF,
       [SELF\shape_aspect_relationship.related_shape_aspect],
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.'+
       'PHYSICAL_NODE_REQUIREMENT_TO_IMPLEMENTING_COMPONENT_ALLOCATION');
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\physical_node_requirement_to_implementing_component_allocation)) = 0;
(*
  WR5: SIZEOF(terminal_of_implementing_component(SELF,SELF.relating_shape_aspect)) = 0;
*)
END_ENTITY; -- physical_node_requirement_to_implementing_component_allocation
(*

Formal propositions:

WR1: The physical_node_requirement_to_implementing_component_allocation shall have a related_shape_aspect that references a component_definition that is not a laminate component.

WR2: The physical_node_requirement_to_implementing_component_allocation shall have a relating_shape_aspect that references a physical_connectivity_definition.

WR3: The members of physical_node_requirement_to_implementing_component_allocation shall form a directed acyclic graph with the relating_shape_aspect, related_shape_aspect attributes of physical_node_requirement_to_implementing_component_allocation.

WR4: A member of physical_node_requirement_to_implementing_component_allocation shall not be any other subtype of shape_aspect or shape_aspect_relationship.

WR5: in arm terms: SIZEOF(QUERY (pct <* physical_node_requirement.associated_terminals | pct\component_feature.associated_component = implementation_component )) = 0;

5.2.3.1.269 physical_unit

A physical_unit is a product_definition that implements the ARM concepts of:
  • Assembly_module
  • Assembly_module_usage_view
  • Externally_defined_ee_product_definition
  • Ee_product_definition
  • Interconnect_module
  • Interconnect_module_usage_view
  • Library_defined_ee_product_definition
  • Physical_unit
  • Physical_unit_design_view
  • Physical_unit_usage_view

EXPRESS specification:

*)
ENTITY physical_unit
 SUPERTYPE OF (ONEOF (bare_die, 
                      package, 
                      packaged_part, 
                      assembly_definition, 
                      interconnect_definition,
                      reference_packaged_part_assembly_implementation,
                      reference_packaged_part_interconnect_implementation))
 SUBTYPE OF (product_definition);
WHERE
  WR1: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
       SELF\product_definition_with_associated_documents.
        documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) + 
       SIZEOF (QUERY (ada <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'creation date')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR4: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR5: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR6: SELF.frame_of_reference.name IN ['physical design', 
       'physical design usage'];
  WR7: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (dut <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'physical unit technology') |
       dut.relating_property_definition\property_definition.name =
       'unit technology')) = 1)) <= 1;
  WR8: NOT(is_assembly_module_usage(SELF)) 
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_MODULE_TERMINAL' IN
       TYPEOF (sa))) >= 1))) = 0);
  WR9: NOT(is_assembly_module_usage(SELF)) 
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
               'maximum negative component height')) <= 1))) = 0);
 WR10: NOT(is_assembly_module_usage(SELF)) 
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
                 'maximum positive component height')) <= 1))) = 0);
 WR11: NOT(is_assembly_module_usage(SELF)) 
       OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       (pdr\product_definition_relationship.name = 'implemented function') AND
       (pdr.relating_product_definition.frame_of_reference.name = 
       'functional design usage'))) = 1);
 WR12: NOT(is_assembly_module_design(SELF)) 
       OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATING_PRODUCT_DEFINITION') |
       (is_laminate_component(pdr.related_product_definition)
       ))) = 0);
 WR14: NOT(is_interconnect_module_usage(SELF)) 
       OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       (pdr\product_definition_relationship.name = 'implemented function') AND
       (pdr.relating_product_definition.frame_of_reference.name = 
       'functional design usage'))) <= 1);
 WR15: NOT(is_interconnect_module_usage(SELF)) 
       OR
       (SIZEOF (QUERY (pd1 <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_SHAPE' IN TYPEOF (pd1)) 
       AND (SIZEOF(QUERY(cd <* USEDIN(pd1,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CHARACTERIZED_DEFINITION' IN TYPEOF (cd))
       AND (SIZEOF(QUERY(pd2 <* USEDIN(cd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd2\property_definition.name = 'located interconnect module thickness')
       AND (SIZEOF(USEDIN(pd2,        
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) > 1)
       )) = 1))) = 1))) <=1 );
 WR16: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd\property_definition.name = 
       'interconnect module usage view physical characteristics'))) <= 1);
 WR17: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd\property_definition.name = 
          'interconnect module usage view physical characteristics')
       AND (SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 
          'minimum thickness over metal requirement')
       AND ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (pdr.used_representation))
       )) <= 1))) <= 1);
 WR18: NOT(is_interconnect_module_usage(SELF))
        OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd\property_definition.name = 
         'interconnect module usage view physical characteristics')
       AND (SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 
         'maximum thickness over metal requirement')
       AND ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (pdr.used_representation))
       )) <= 1))) <= 1);
 WR19: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd\property_definition.name = 
          'interconnect module usage view physical characteristics')
       AND (SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 
         'minimum thickness over dielectric requirement')
       AND ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (pdr.used_representation))
       )) <= 1))) <= 1);
 WR20: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd\property_definition.name = 
          'interconnect module usage view physical characteristics')
       AND (SIZEOF (QUERY (pdr <* USEDIN (pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (pdr.used_representation\representation.name = 
           'maximum thickness over dielectric requirement')
       AND ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT' IN TYPEOF (pdr.used_representation))
       )) <= 1))) <= 1);
 WR21: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ((pd\property_definition.name = 'restraint') OR
       (pd\property_definition.name = 'tolerance specific restraint')))) <= 1);
 WR22: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (sa\shape_aspect.description = 
                                 'interconnect module primary surface')
       )) <= 1))) = 0);
WR23: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (sa\shape_aspect.description = 
                              'interconnect module secondary surface')
       )) <= 1))) = 0);
WR24: NOT(is_interconnect_module_usage(SELF))
       OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (sa\shape_aspect.description =
                                 'interconnect module edge surface')
       )) <= 1))) = 0);
WR25: NOT(is_assembly_module_design(SELF)) OR
((NOT ((SELF.frame_of_reference.name = 'physical design') AND
       (SELF\product_definition.name = 'assembly module')      
       AND (SIZEOF (QUERY(pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY(sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (sa)))) > 0 ))) = 0)))
       OR (SIZEOF (QUERY(pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY(sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_JOINT' IN TYPEOF (sa)) AND
       (SIZEOF (QUERY( acu <* USEDIN (
       sa\shape_aspect_relationship.relating_shape_aspect.of_shape.definition,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF (acu))
       AND (acu\product_definition_relationship.relating_product_definition = SELF)
       )) >= 1))) >=1 ))) >= 1));
WR26: NOT(is_assembly_module_design(SELF)) OR
      ((NOT ((SELF.frame_of_reference.name = 'physical design') AND
       (SELF\product_definition.name = 'assembly module')      
       ))
       AND (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)))) = 0) OR
       (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj))AND
       (SIZEOF (QUERY( acu <* USEDIN (aj\
        shape_aspect_relationship.related_shape_aspect,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF (acu))
        AND (acu\product_definition_relationship.relating_product_definition = SELF)
        )) = 0))) = 0));
WR27: NOT(is_assembly_module_design(SELF)) OR
      ((NOT ((SELF.frame_of_reference.name = 'physical design') AND
       (SELF\product_definition.name = 'assembly module')      
       ))
       AND (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)))) = 0) OR
       (SIZEOF (QUERY(aj <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'ASSEMBLY_JOINT' IN TYPEOF (aj)) AND
        (SIZEOF (QUERY( cl <* USEDIN (aj\
        shape_aspect_relationship.related_shape_aspect.of_shape.definition,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'REPRESENTATION.ITEMS') |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'COMPONENT_LOCATION' IN TYPEOF (cl))
        AND (aj IN cl\representation.items))) = 0))) = 0));
WR28: NOT(is_interconnect_module_design(SELF)) OR
       ((NOT ((SELF.frame_of_reference.name = 'physical design') AND
       (SELF\product_definition.name = 'interconnect module')
       )) OR
       (SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATING_PRODUCT_DEFINITION') |
        (
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_COMPONENT_USAGE' IN TYPEOF(pdr))
       AND
       (pdr\product_definition_relationship.name = 'interconnect module stratum assembly relationship')
       AND
       (pdr.related_product_definition\product_definition.description = 'primary design layer stratum')
       AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM' IN TYPEOF(pdr.related_product_definition))
        )
       )
       ) = 1));

END_ENTITY; -- physical_unit
(*

Formal propositions:

WR1: If the physical_unit is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR2: The physical_unit shall have exactly one creation date.

WR3: The physical_unit shall have exactly one approval.

WR4: The physical_unit shall have at least one organization or person_and_organization as the creator.

WR5: The physical_unit shall have exactly one security_classification.

WR6: The physical_unit shall have a frame_of_reference with a name of 'physical design' or 'physical design usage'.

WR7: The physical_unit shall be related to at most one property with a name of 'unit technology'.

WR8: If the physical_unit is a 'physical design usage' of an 'assembly module', it shall have at least one shape_aspect that is of type assembly_module_terminal.

WR9: If the physical_unit is a 'physical design usage' of an 'assembly module', it shall have at most one representation with a name of 'maximum negative component height'

WR10: If the physical_unit is a 'physical design usage' of an 'assembly module', it shall have at most one representation with a name of 'maximum positive component height'.

WR11: If the physical_unit is a 'physical design usage' of an 'assembly module', it shall have exactly one 'functional design usage' specified as the implemented function.

WR12: If the physical_unit is a 'physical design' of an 'assembly module', it shall have no laminate components.

WR13: If the physical_unit is a 'physical design usage' of an 'interconnect module', it shall have no more than one 'functional design usage' specified as the 'implemented function'.

WR14: If the physical_unit is a 'physical design usage' of an 'interconnect module', it shall have at most one requirements_property with a name of 'located interconnect module thickness'

WR15: If the physical_unit is a physical design usage of an interconnect module it shall be the definition for at most one property_definition with a name of 'interconnect module usage view physical characteristics'.

WR16: If the physical_unit is a physical design usage of an interconnect module it shall be the definition for at most one property_definition with a name of 'interconnect module usage view physical characteristics' and related to a length_measure_with_unit with a name of 'minimum thickness over metal requirement'

WR17: If the physical_unit is a physical design usage of an interconnect module it shall be the definition for at most one property_definition with a name of 'interconnect module usage view physical characteristics' and related to a length_measure_with_unit with a name of 'maximum thickness over metal requirement'

WR18: If the physical_unit is a physical design usage of an interconnect module it shall be the definition for at most one property_definition with a name of 'interconnect module usage view physical characteristics' and related to a length_measure_with_unit with a name of 'minimum thickness over dielectric requirement'

WR19: If the physical_unit is a physical design usage of an interconnect module it shall be the definition for at most one property_definition with a name of 'interconnect module usage view physical characteristics' and related to a length_measure_with_unit with a name of 'maximum thickness over dielectric requirement'

WR20: If the physical_unit is a physical design usage of an interconnect module it shall be the definition for at most one property_definition with a name of 'restraint' or 'tolerance specific restraint'.

WR21: If the physical_unit is a 'physical design usage' of an 'interconnect module', it shall have no more than one shape_aspect that is implementation of secondary surface.

WR22: If the physical_unit is a 'physical design usage' of an 'interconnect module', it shall have no more than one shape_aspect that is implementation of primary surface.

WR23: If the physical_unit is a 'physical design usage' of an 'interconnect module', it shall have no more than one shape_aspect that is implementation of edge surface.

WR24: If the physical_unit that is a design view of an assembly module is referenced by an assembly_joint through the of_shape attribute, at least one of the members of component_definition that are related by the relating_shape_aspect of that assembly_joint shall be related by members of assembly_component_usage to this physical_unit.

WR25: If the physical_unit that is a design view of an assembly module is referenced by an assembly_joint through the of_shape attribute, each member of component_definition that are related by the related_shape_aspect of that assembly_joint shall be related by members of assembly_component_usage to this physical_unit.

WR26: If the physical_unit that is a design view of an assembly module is referenced by an assembly_joint through the of_shape attribute, the component_definition that is related by the assembly_joint\shape_aspect_relationship.related_shape_aspect attribute of that assembly_joint shall be positioned by a member of component_location which also references that assembly_joint.

WR27: If the physical_unit that is a design view of an interconnect module, there shall be exactly one primary design layer stratum related to the physical_unit by an assembly_component_usage.

5.2.3.1.270 physical_unit_datum

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_unit_datum is a shape_aspect that implements the ARM concepts of:
  • Common_datum
  • Datum
  • Datum_axis
  • Datum_plane
  • Datum_point
  • Edge_segment_vertex
  • Single_datum

EXPRESS specification:

*)
ENTITY physical_unit_datum
  SUPERTYPE OF (edge_segment_vertex)
  SUBTYPE OF (shape_aspect);
WHERE
    WR1: SELF\shape_aspect.description IN ['axis', 'plane', 'point', ''];
    WR2: SELF\shape_aspect.product_definitional = False;
    WR3: SELF\shape_aspect.name IN ['single datum', 'common datum', ''];
    WR4: (NOT (SELF\shape_aspect.name = 'common datum')) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
         (sar\shape_aspect_relationship.name = 'datum feature usage in datum system') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'DATUM_SYSTEM' IN TYPEOF(SAR)))) >= 1);
    WR5: (NOT (SELF\shape_aspect.name = 'common datum')) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
         (sar\shape_aspect_relationship.name = 'datum feature usage in common datum') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'DATUM_SYSTEM' IN TYPEOF(SAR)))) >= 2);
    WR6: (NOT ((SELF\shape_aspect.description = 'axis') AND
         (SELF\shape_aspect.name IN ['common datum', 'single datum']))) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         NOT(sar\shape_aspect_relationship.name = 'reference axis') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'DATUM_REFERENCE_FRAME' IN TYPEOF(SAR)))) = 1);
    WR7: (NOT ((SELF\shape_aspect.description = 'plane') AND
         (SELF\shape_aspect.name IN ['common datum', 'single datum']))) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         NOT(sar\shape_aspect_relationship.name = 'reference plane') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'DATUM_REFERENCE_FRAME' IN TYPEOF(SAR)))) = 1);
    WR8: (NOT ((SELF\shape_aspect.description = 'point') AND
         (SELF\shape_aspect.name IN ['common datum', 'single datum']))) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         NOT(sar\shape_aspect_relationship.name = 'reference origin') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'DATUM_REFERENCE_FRAME' IN TYPEOF(SAR)))) = 1);
    WR9: (NOT (SELF\shape_aspect.name = 'single datum')) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
         (sar\shape_aspect_relationship.name = 'datum usage in datum system') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'DATUM_SYSTEM' IN TYPEOF(SAR)))) >= 1);
   WR10: (NOT (SELF\shape_aspect.name = 'single datum')) OR
         (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
         (sar\shape_aspect_relationship.name = 'datum feature usage in single datum') AND
         (TRUE))) <= 1);
   WR11: NOT ((SELF\shape_aspect.name IN [''])
         AND (SELF\shape_aspect.description IN ['']));
   WR12: (NOT(SELF\shape_aspect.description = 'plane')) OR
         (SIZEOF(QUERY ( pd <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'PROPERTY_DEFINITION.DEFINITION') |
         pd\property_definition.description = 'datum direction property')) <= 2);
END_ENTITY; -- physical_unit_datum
(*

Formal propositions:

WR1: The physical_unit_datum shall have a description of 'axis', 'plane', 'point' or 'null'.

WR2: The physical_unit_datum shall not lie on the boundary of the shape of the product.

WR3: The physical_unit_datum shall have a name of 'single datum', 'common datum', or 'null'.

WR4: If the name of the physical_unit_datum is 'common datum' it shall be related to at least one datum_system as a 'datum usage in datum system'.

WR5: If the name of the physical_unit_datum is 'common datum', it shall relate to at least two shape_aspect to specify the 'datum feature usage in common datum'.

WR6: If the description of the physical_unit_datum is 'axis' and the physical_unit_datum is not related to a datum_reference_frame as a 'reference axis', it shall have a name of either 'common datum' or 'single datum'.

WR7: If the description of the physical_unit_datum is 'plane' and the physical_unit_datum is not related to a datum_reference_frame as a 'reference plane', it shall have a name of either 'common datum' or 'single datum'.

WR8: If the description of the physical_unit_datum is 'point' and the physical_unit_datum is not related to a datum_reference_frame as a 'reference origin', it shall have a name of either 'common datum' or 'single datum'.

WR9: If the name of the physical_unit_datum is 'single datum', it shall be related to at least one datum_system as a 'datum usage in datum system'.

WR10: If the name of the physical_unit_datum is 'single datum', it shall relate to no more than one shape_aspect to specify the 'datum feature usage in single datum'.

WR11: The name and description of the physical_unit_datum shall not both be an empty string.

WR12: If the description of the physical_unit_datum is 'plane', it shall have at most two property_definitions with the description of 'datum direction property'.

Informal propositions:

IP1: If the description of the physical_unit_datum is 'plane' and it has two property_definitions with the description of 'datum direction property', the names of the two property_definitions shall not be the same.

5.2.3.1.271 physical_unit_datum_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_unit_datum_feature is a shape_aspect that implements the ARM concept of Datum_feature.

EXPRESS specification:

*)
ENTITY physical_unit_datum_feature
  SUBTYPE OF (shape_aspect);
WHERE
    WR1: (SIZEOF(QUERY ( pd <* USEDIN(SELF,
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
             'PROPERTY_DEFINITION.' + 'DEFINITION') | 
             (pd\property_definition.description = 'datum feature identification')))) = 1;
    WR2: (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         sar\shape_aspect_relationship.name IN ['datum feature usage in common datum',
         'datum feature usage in single datum'])) >= 1);
    WR3: (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         sar\shape_aspect_relationship.name = 'datum feature usage in single datum')) <= 1);
END_ENTITY; -- physical_unit_datum_feature
(*

Formal propositions:

WR1: The physical_unit_datum_feature shall have exactly one property that has the description of 'datum feature identification'.

WR2: The physical_unit_datum_feature shall be related by at least one shape_aspect_relationship with a name of either 'datum feature usage in common datum' or 'datum feature usage in single datum'.

WR3: The physical_unit_datum_feature shall be related to at most one shape_aspect as a 'datum feature usage in single datum'.

Informal propositions:

IP1: The physical_unit_datum_feature shall either lie on the boundary of the shape of the product or be a part_template_definition.

5.2.3.1.272 physical_unit_datum_target

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_unit_datum_target is a shape_aspect that implements that ARM concept of Datum_target.

EXPRESS specification:

*)
ENTITY physical_unit_datum_target
  SUBTYPE OF (shape_aspect);
WHERE
    WR1: (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         sar\shape_aspect_relationship.name = 'datum target usage')) >= 1);
END_ENTITY; -- physical_unit_datum_target
(*

Formal propositions:

WR1: The physical_unit_datum_target shall be related to at least one shape_aspect as the 'datum target usage'.

5.2.3.1.273 physical_unit_datum_target_set

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_unit_datum_target_set is a physical_unit_datum_feature that implements the ARM concept of Datum_target_set.

EXPRESS specification:

*)
ENTITY physical_unit_datum_target_set
  SUBTYPE OF (physical_unit_datum_feature);
WHERE
    WR1: (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
         sar\shape_aspect_relationship.name = 'datum target usage')) >= 1);
    WR2: (SIZEOF (QUERY ( sar <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
         sar\shape_aspect_relationship.name = 'constituent')) = 0);
END_ENTITY; -- physical_unit_datum_target_set
(*

Formal propositions:

WR1: The physical_unit_datum_target_set shall relate to at least one shape_aspect to specify the 'datum target usage'.

WR2: The physical_unit_datum_target_set shall not be related to a shape_aspect as a 'constituent'.

5.2.3.1.274 physical_unit_geometric_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A physical_unit_geometric_tolerance is a geometric_tolerance and a property_definition that implements the ARM concepts of:
  • Circularity_tolerance
  • Flatness_tolerance
  • Geometric_tolerance
  • Geometric_tolerance_without_referenced_datum_system
  • Straightness_tolerance

EXPRESS specification:

*)
ENTITY physical_unit_geometric_tolerance
  SUBTYPE OF (geometric_tolerance, property_definition);
WHERE
    WR1: SELF\geometric_tolerance.name = SELF\property_definition.name;
    WR2: SELF\geometric_tolerance.toleranced_shape_aspect
         = SELF\property_definition.definition;
    WR3: (NOT (SIZEOF([
              'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
              'GEOMETRIC_TOLERANCE_WITH_SPECIFIED_DATUM_SYSTEM',
              'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
              'LINEAR_PROFILE_TOLERANCE',
              'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
              'SURFACE_PROFILE_TOLERANCE',
              'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
              'POSITION_TOLERANCE'] * TYPEOF(SELF)) = 0))
         OR (SELF\geometric_tolerance.name IN ['circularity',
             'cylindricity', 'flatness', 'straightness']);
    WR4: (NOT (SELF\geometric_tolerance.name = 'circularity')) OR
         (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF)));
    WR5: (NOT (SELF\geometric_tolerance.name = 'cylindricity')) OR
         (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
             'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF)));
    WR6: (NOT (SELF\geometric_tolerance.name = 'flatness')) OR
         (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
         'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF)));
    WR7: (SIZEOF (QUERY (pugt <* QUERY ( sar <* USEDIN(SELF,
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
          'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
          sar\shape_aspect_relationship.name = 'group geometric tolerance') | 
          pugt.relating_shape_aspect\shape_aspect.description = 
          'simultaneous requirement')) <= 1);
END_ENTITY; -- physical_unit_geometric_tolerance
(*

Formal propositions:

WR1: The value of two name attributes of the physical_unit_geometric_tolerance shall be identical.

WR2: The shape_aspect specified as the definition of the physical_unit_geometric_tolerance shall be the same shape_aspect specified as the toleranced_shape_aspect by the physical_unit_geometric_tolerance.

WR3: If the physical_unit_geometric_tolerance is neither a geometric_tolerance_with_specified_datum_system, a linear_profile_tolerance, a surface_profile_tolerance, nor a position_tolerance, the name of the physical_unit_geometric_tolerance shall be either 'circularity', 'cylindricity', 'flatness', or 'straightness'.

WR4: If the name of the physical_unit_geometric_tolerance is 'circularity', it shall not be a modified_geometric_tolerance.

WR5: If the name of the physical_unit_geometric_tolerance is 'cylindricity', it shall not be a modified_geometric_tolerance.

WR6: If the name of the physical_unit_geometric_tolerance is 'flatness', it shall not be a modified_geometric_tolerance.

WR7: The physical_unit_geometric_tolerance shall be related to at most one geometric_tolerance_group with a description of 'simultaneous requirement' as the 'group geometric tolerance'.

Informal propositions:

IP1: The physical_unit_geometric_tolerance either shall relate to exactly one property_definition that has a description of either 'conical tolerance zone boundary size', 'positional boundary member property', 'profile related positional boundary property' to specify the 'defined boundary'; or shall be the defining_tolerance of exactly one tolerance_zone that is the zone of exactly one tolerance_zone_definition.

IP2: The toleranced_shape_aspect of the physical_unit_geometric_tolerance shall either lie on the boundary of the shape of the product; be a centre_of_symmetry with a description of either 'axis', 'plane', or 'point'; be a tangent with a description of 'plane'; be a part_template_definition; or be a composite_shape_aspect the 'composing' shape_aspects of which either are all of type part_template_definition, are all of type tangent with a description of 'plane', or are all of type centre_of_symmetry and have the same description -- either 'axis', 'plane', or 'point'.

IP3: If the name of the physical_unit_geometric_tolerance is 'circularity', the toleranced_shape_aspect shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP4: If the name of the physical_unit_geometric_tolerance is 'circularity', the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

IP5: If the name of the physical_unit_geometric_tolerance is 'cylindricity', the toleranced_shape_aspect shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP6: If the name of the physical_unit_geometric_tolerance is 'cylindricity', the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

IP7: If the name of the physical_unit_geometric_tolerance is 'flatness', the toleranced_shape_aspect shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP8: If the name of the physical_unit_geometric_tolerance is 'flatness', the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

IP9: If the name of the physical_unit_geometric_tolerance is 'flatness' and the physical_unit_geometric_tolerance is the defining_tolerance of a tolerance_zone that has a property_definition with a description of 'tolerance zone per unit size', the property_definition shall have exactly one representation that contains two length_measure_with_unit with a name of 'per unit size'.

IP10: There shall exist exactly one requirements_property that has a representation that contains a descriptive_representation_item that has the name of 'requirements description' and a description of 'geometric dimensioning and tolerancing reference', and that requirements_property shall be an item of one or more document_reference the assigned_document of which are ee_specification.

IP11: If the name of the physical_unit_geometric_tolerance is 'straightness'; the toleranced_shape_aspect shall either lie on the boundary of the shape of the product; be a centre_of_symmetry with a description of either 'axis' or 'plane', be a part_template_definition; or be a composite_shape_aspect the 'composing' shape_aspects of which either are all of type part_template_definition, or are all of type centre_of_symmetry and have the same description -- either 'axis' or 'plane'.

IP12: If the name of the physical_unit_geometric_tolerance is 'straightness' and the toleranced_shape_aspect of the physical_unit_geometric_tolerance is either a centre_of_symmetry with a description of 'axis', or a composite_shape_aspect the 'composing' shape_aspects of which are all of type centre_of_symmetry and have a description of 'axis'; the tolerance_zone_boundary shall have a description of 'circular or cylindrical or spherical'.

IP13: If the name of the physical_unit_geometric_tolerance is 'straightness' and the toleranced_shape_aspect of the physical_unit_geometric_tolerance is neither a centre_of_symmetry with a description of 'axis', nor a composite_shape_aspect the 'composing' shape_aspects of which are all of type centre_of_symmetry and have a description of 'axis'; the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

IP14: If the name of the physical_unit_geometric_tolerance is 'straightness' and the toleranced_shape_aspect either is a part_template_definition, lies on the boundary of the shape of the product, or is a composite_shape_aspect in which all the 'composing' shape_aspects are of type part_template_definition; the physical_unit_geometric_tolerance shall be the defining_tolerance of a tolerance_zone that has exactly one property_definition with a description of 'tolerance zone orientation' that relates to a property_definition with a description of 'viewing plane based orientation' to specify its 'zone orientation'.

IP15: If the name of the physical_unit_geometric_tolerance is 'straightness' and the toleranced_shape_aspect is not a part_template_definition, does not lie on the boundary of the shape of the product, or is not a composite_shape_aspect in which all the 'composing' shape_aspects are of type part_template_definition; the physical_unit_geometric_tolerance shall be the defining_tolerance of a tolerance_zone that has exactly zero property_definition with a description of 'tolerance zone orientation'.

5.2.3.1.275 physical_unit_network_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An physical_unit_network_definition is a product_definition that implements the ARM concept of Physical_unit_network_definition

EXPRESS specification:

*)
ENTITY physical_unit_network_definition
 SUBTYPE OF (product_definition);
WHERE
  WR1: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
       SELF\product_definition_with_associated_documents.
        documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) + 
       SIZEOF (QUERY (ada <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'creation date')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR4: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR5: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\product_definition ||
       SELF\physical_unit_network_definition))) = 0;
  WR7: SELF.frame_of_reference.name IN ['physical network design'];
END_ENTITY; -- physical_unit_network_definition
(*

Formal propositions:

WR1: If the physical_unit_network_definition is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR2: The physical_unit_network_definition shall have exactly one creation date.

WR3: The physical_unit_network_definition shall have exactly one approval.

WR4: The physical_unit_network_definition shall have at least one organization or person_and_organization as the creator.

WR5: The physical_unit_network_definition shall have exactly one security_classification.

WR6: The physical_unit_network_definition shall not be any other type of product_definition.

WR7: The physical_unit_network_definition shall have a frame_of_reference with a name of 'physical network design'.

5.2.3.1.276 plated_cutout_edge_segment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A plated_cutout_edge_segment is a cutout_edge_segment and plated_inter_stratum_feature that implements the ARM concept of Plated_cutout_edge_segment.

EXPRESS specification:

*)
ENTITY plated_cutout_edge_segment
  SUBTYPE OF (cutout_edge_segment,plated_inter_stratum_feature);
WHERE
  WR1: SELF\shape_aspect.description IN ['plated cutout edge segment'];
  WR2: SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name =
       'inter stratum join'))) <= 1;
  WR3: (NOT (SELF\shape_aspect.description = 'plated cutout edge segment')) OR
       (SIZEOF (QUERY (cc <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed cutout') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_INTER_STRATUM_FEATURE' IN
       TYPEOF (cc.relating_shape_aspect)) AND
       (cc.relating_shape_aspect\shape_aspect.description =
       'plated cutout'))) = 1);
END_ENTITY; -- plated_cutout_edge_segment
(*

Formal propositions:

WR1: The plated_cutout_edge_segment shall have a description of 'plated cutout edge segment'.

WR2: The plated_cutout_edge_segment shall be related to at most one join_shape_aspect with a name of 'inter stratum join' as a 'join implementation'.

WR3: The plated_cutout_edge_segment shall be related to exactly one cutout with a description of 'plated cutout' as the 'composed cutout'.

5.2.3.1.277 plated_inter_stratum_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A plated_inter_stratum_feature is an inter_stratum_feature that implements the ARM concepts of:
  • Inter_stratum_join_implementation
  • Join_two_physical_connectivity_definition_supporting_inter_stratum_feature
  • Physical_network_supporting_inter_stratum_feature
  • Plated_cutout
  • Plated_inter_stratum_feature
  • Plated_interconnect_module_edge

EXPRESS specification:

*)
ENTITY plated_inter_stratum_feature
  SUPERTYPE OF (ONEOF(plated_passage,plated_cutout_edge_segment, 
 plated_interconnect_module_edge_segment))
  SUBTYPE OF (inter_stratum_feature);
WHERE
  WR1: (SELF\shape_aspect.description IN ['bonded conductive base blind via', 
        'buried via',
       'component termination passage', 'interfacial connection', 
       'non conductive base blind via', 
       'join two physical connectivity definition supporting inter stratum feature', 
       'plated conductive base blind via', 
       'plated cutout', 'plated interconnect module edge']) OR 
       (SIZEOF 
       (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
	'PLATED_CUTOUT_EDGE_SEGMENT',
	'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
	'PLATED_INTERCONNECT_MODULE_EDGE_SEGMENT'] * TYPEOF (SELF)) = 1 );
  WR2: SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name =
       'inter stratum join'))) <= 1;
END_ENTITY; -- plated_inter_stratum_feature
(*

Formal propositions:

WR1: The plated_inter_stratum_feature shall have a description of either 'bonded conductive base blind via', 'buried via', 'component termination passage', 'interfacial connection', 'non conductive base blind via', 'plated conductive base blind via', 'plated cutout', 'join two physical connectivity definition supporting inter stratum feature', or 'plated interconnect module edge' or shall be a segment subtype.

WR2: The plated_inter_stratum_feature shall be related to at most one join_shape_aspect with a name of 'inter stratum join' as a 'join implementation'.

Informal propositions:

IP1: The plated_inter_stratum_feature shall have an associated passage_technology that shall have descriptive_representation_item with a description of 'true'.

IP2: If the plated_inter_stratum_feature description is 'join two physical connectivity definition supporting inter stratum feature', it shall be associated with two physical connectivity definitions as the joined definitions through property_definition_relationship instances.

5.2.3.1.278 plated_interconnect_module_edge_segment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A plated_interconnect_module_edge_segment is a plated_inter_stratum_feature and interconnect_module_edge_segment that implements the ARM concept of Plated_interconnect_module_edge_segment.

EXPRESS specification:

*)
ENTITY plated_interconnect_module_edge_segment
  SUBTYPE OF (interconnect_module_edge_segment,
              plated_inter_stratum_feature);
WHERE
  WR1: SELF\shape_aspect.description IN ['plated interconnect module edge segment'];
  WR2: SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name =
       'inter stratum join'))) <= 1;
  WR3: (NOT (SELF\shape_aspect.description = 
          'plated interconnect module edge segment')) OR
       (SIZEOF (QUERY (ce <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'composed edge') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_INTER_STRATUM_FEATURE' IN
       TYPEOF (ce.relating_shape_aspect)) AND
       (ce.relating_shape_aspect\shape_aspect.description =
       'plated interconnect module edge'))) = 1);
END_ENTITY; -- plated_interconnect_module_edge_segment
(*

Formal propositions:

WR1: The plated_interconnect_module_edge_segment shall have a description of 'plated interconnect module edge segment'.

WR2: The plated_interconnect_module_edge_segment shall be related to at most one join_shape_aspect with a name of 'inter stratum join' as a 'join implementation'.

WR3: The plated_interconnect_module_edge_segment shall be related to exactly one interconnect_module_edge with a description of 'plated interconnect module edge' as the 'composed edge'.

Informal propositions:

IP1: The associated passage_technology shall have descriptive_representation_item with a description of 'true'.

5.2.3.1.279 plated_passage

A plated_passage is a plated_inter_stratum_feature that implements the ARM concepts of:
  • Blind_via
  • Bonded_conductive_base_blind_via
  • Buried_via
  • Component_termination_passage
  • Interfacial_connection
  • Non_conductive_base_blind_via
  • Plated_conductive_base_blind_via
  • Plated_passage
  • Via

EXPRESS specification:

*)
ENTITY plated_passage 
  SUBTYPE OF (plated_inter_stratum_feature);
WHERE
  WR1: SELF\shape_aspect.description IN ['bonded conductive base blind via', 
       'buried via', 'component termination passage', 
       'interfacial connection', 'non conductive base blind via',
       'plated conductive base blind via'];
  WR2: (NOT (SELF\shape_aspect.description = 'bonded conductive base blind via')) OR
       (SIZEOF (QUERY (fj <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'features join') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_CONCEPT_RELATIONSHIP' IN
       TYPEOF (fj.relating_shape_aspect)) AND
       (fj.relating_shape_aspect\shape_aspect.name =
       'stratum feature conductive join'))) = 1);
  WR3: (NOT (SELF\shape_aspect.description = 'component termination passage')) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'component termination passage template'))) = 1);
(*
  WR4: (NOT (SELF\shape_aspect.description = 'component termination passage')) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF) |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'component termination passage interface terminal')))) >= 0);
  WR5: (NOT (SELF\shape_aspect.description = 'component termination passage')) OR
       (SIZEOF (QUERY (at <* associated_terminals(SELF)|
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (at)) AND
       (at\shape_aspect.description =
       'component termination passage join terminal')))) >= 1);
*)
  WR6: (NOT (SELF\shape_aspect.description IN
       ['bonded conductive base blind via',
       'buried via',
       'interfacial connection',
       'non conductive base blind via',
       'plated conductive base blind via'])) OR
       (SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description =
       'via template'))) = 1);
END_ENTITY; -- plated_passage
(*

Formal propositions:

WR1: The plated_passage shall have a description of 'bonded conductive base blind via', 'buried via', 'component termination passage', 'interfacial connection', 'non conductive base blind via', or 'plated conductive base blind via'.

WR2: If the plated_passage has a description of 'bonded conductive base blind via', the plated_passage shall be related to exactly one stratum_concept_relationship with a name of 'stratum feature conductive join' as a 'features join'.

WR3: If the plated_passage has a description of 'component termination passage', the plated_passage shall be related to exactly one part_template_definition with a description of 'component termination passage template' as an 'instantiated template'.

WR4: If the plated_passage has a description of 'component termination passage', the plated_passage shall relate to zero or more component_shape_aspect that has a description of 'component termination passage interface terminal' to specify the 'associated component'.

WR5: If the plated_passage has a description of 'component termination passage', the plated_passage shall relate to at least one component_terminal that has a description of 'component termination passage join terminal' to specify the 'associated component'.

WR6: If the plated_passage has a description of 'bonded conductive base blind via', 'buried via', 'interfacial connection', 'non conductive base blind via', or 'plated conductive base blind via', the plated_passage shall be related to exactly one part_template_definition with a description of 'via template' as an 'instantiated template'.

5.2.3.1.280 position_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A position_tolerance is a physical_unit_geometric_tolerance that implements the ARM concepts of:
  • Boundary_based_position_tolerance
  • Composite_feature_locating_position_tolerance
  • Composite_feature_relating_position_tolerance
  • Position_tolerance
  • Position_tolerance_with_referenced_datum_system
  • Position_tolerance_without_referenced_datum_system

EXPRESS specification:

*)
ENTITY position_tolerance
  SUBTYPE OF (physical_unit_geometric_tolerance);
WHERE
  WR1: (NOT(SELF\geometric_tolerance.name = 'boundary based position')) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
  WR2: (NOT(SELF\geometric_tolerance.name = 'boundary based position')) OR
       (SIZEOF(QUERY(gtr <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'GEOMETRIC_TOLERANCE_WITH_SPECIFIED_DATUM_SYSTEM' 
        IN TYPEOF(gtr.related_geometric_tolerance)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SURFACE_PROFILE_TOLERANCE' 
        IN TYPEOF(gtr.related_geometric_tolerance)) AND
       (gtr.related_geometric_tolerance\geometric_tolerance.name IN ['surface profile',
        'surface profile locating', 'surface profile refinement']) AND
       (gtr\geometric_tolerance_relationship.name = 'profile control')
       )) <= 1);
  WR3: (NOT(SELF\geometric_tolerance.name = 
                              'feature relating position')) OR
       (SIZEOF(QUERY(gtr <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') |
       (gtr\geometric_tolerance_relationship.name = 'position refining control') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'POSITION_TOLERANCE' 
        IN TYPEOF(gtr.relating_geometric_tolerance))  AND
       (gtr.relating_geometric_tolerance\geometric_tolerance.name IN
       ['feature locating position', 'feature relating position'])
       )) = 1);
  WR4: (NOT(SELF\geometric_tolerance.name = 
                          'feature locating position')) OR
       (SIZEOF(QUERY(gtr <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'POSITION_TOLERANCE' 
        IN TYPEOF(gtr.related_geometric_tolerance))  AND    
       (gtr.related_geometric_tolerance\geometric_tolerance.name = 'feature relating position')
       AND (gtr\geometric_tolerance_relationship.name = 'position refining control')
       )) = 1);
  WR5: (NOT(SELF\geometric_tolerance.name = 
                         'feature relating position')) OR
       (SIZEOF(QUERY(gtr <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'POSITION_TOLERANCE' 
        IN TYPEOF(gtr.related_geometric_tolerance))  AND
       (gtr.related_geometric_tolerance\geometric_tolerance.name = 'feature relating position')
       AND (gtr\geometric_tolerance_relationship.name = 'position refining control')
       )) <= 1);
END_ENTITY; -- position_tolerance
(*

Formal propositions:

WR1: If the position_tolerance has a name of 'boundary based position', it shall be a modified_geometric_tolerance.

WR2: If the position_tolerance has a name of 'boundary based position', it shall relate to at most one geometric_tolerance_with_specified_datum_system that is a surface_profile_tolerance with a name of either 'surface profile', 'surface profile locating', or 'surface profile refinement' to specify the 'profile control'.

WR3: If the position_tolerance has a name of 'feature relating position', it shall be related as the 'position refining control' to exactly one position_tolerance with a name of either 'feature locating position' or 'feature relating position'.

WR4: If the position_tolerance has a name of 'feature locating position', it shall relate to exactly one position_tolerance with a name of 'feature relating position' to specify the 'position refining control'.

WR5: If the position_tolerance has a name of 'feature relating position', it shall relate to at most one position_tolerance with a name of 'feature relating position' to specify the 'position refining control'.

Informal propositions:

IP1: If position_tolerance is a geometric_tolerance_with_specified_datum_system, it shall have a name of either 'position', 'feature relating position', 'feature locating position', or 'boundary based position'; otherwise, it shall have the name of either 'position' or 'feature relating position'.

IP2: If the name of the position_tolerance is 'boundary based position', the toleranced_shape_aspect shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP3: If the position_tolerance has a name of 'boundary based position' and it relates to exactly one geometric_tolerance_with_specified_datum_system that is a surface_profile_tolerance with a name of either 'surface profile', 'surface profile locating', or 'surface profile refinement' to specify the 'profile control', the position_tolerance and surface_profile_tolerance shall specify the same shape_aspect as their toleranced_shape_aspect.

IP4: If the position_tolerance has a name of 'boundary based position' and it relates to exactly one geometric_tolerance_with_specified_datum_system that is a surface_profile_tolerance with a name of either 'surface profile', 'surface profile locating', or 'surface profile refinement' to specify the 'profile control', the physical_unit_datum of the datum_system referenced by the surface_profile_tolerance shall also be physical_unit_datum of the datum_system referenced by the position_tolerance and shall be assigned the same precedence.

IP5: If the position_tolerance has a name of 'boundary based position' and it relates to exactly one geometric_tolerance_with_specified_datum_system that is a surface_profile_tolerance with a name of either 'surface profile', 'surface profile locating', or 'surface profile refinement' to specify the 'profile control', the position_tolerance shall relate to a property_definition that has a description of 'profile related positional boundary property' to specify the 'defined boundary'.

IP6: If the position_tolerance has a name of 'boundary based position' and it does not relate to a geometric_tolerance_with_specified_datum_system that is a surface_profile_tolerance with a name of either 'surface profile', 'surface profile locating', or 'surface profile refinement' to specify the 'profile control', the position_tolerance shall relate to a property_definition that has a description of 'positional boundary member property' to specify the 'defined boundary'.

IP7: If the name of the position_tolerance is 'feature locating position', the toleranced_shape_aspect shall be a composite_group_shape_aspect.

IP8: If the position_tolerance has a name of 'feature relating position', it shall be related as the 'position refining control' to exactly one position_tolerance with a name of either 'feature locating position' or 'feature relating position'. Both of these position_tolerances shall specify the same shape_aspect as the toleranced_shape_aspect.

IP9: If the position_tolerance is not a geometric_tolerance_with_specified_datum_system and has a name of 'feature relating position', it shall not relate to a position_tolerance with a name of 'feature relating position' to specify the 'position refining control'.

IP10: If the position_tolerance has a name of 'feature relating position' and it is related as the 'position refining control' to exactly one position_tolerance with a name of 'feature relating position', it shall either not reference a datum_system or it shall have less physical_unit_datum in its referenced datum_system than the datum_system referenced by the position_tolerance to which it is related as the 'position refining control'.

IP11: If the position_tolerance has a name of 'feature relating position' and it is related as the 'position refining control' to exactly one position_tolerance with a name of 'feature locating position', it shall either not reference a datum_system or it shall have less than or an equal number of physical_unit_datum in its referenced datum_system than the datum_system referenced by the position_tolerance to which it is related as the 'position refining control'.

IP12: If the position_tolerance has a name of 'feature relating position' and it is a geometric_tolerance_with_specified_datum_system, the physical_unit_datum of its referenced datum_system shall be physical_unit_datum of the datum_system of the position_tolerance to which it is related as the 'position refining control' and shall be assigned the same precedence.

IP13: If the position_tolerance has a name of 'feature relating position' and it is a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property without material conditions' to specify its 'referenced datum system definition', the position_tolerance to which it is related as the 'position refining control' shall also be a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property without material conditions' to specify its 'referenced datum system definition'.

IP14: If the position_tolerance has a name of 'feature relating position' and it is a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property with material conditions' to specify its 'referenced datum system definition', the position_tolerance to which it is related as the 'position refining control' shall also be a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property with material conditions' to specify its 'referenced datum system definition', and each of these property_definition shall relate to property_definition with a description of 'datum feature material condition property' to specify their 'applied material condition property'. These property_definition shall be applied to physical_unit_datum_features in the context of the datum_systems referenced by each of the position_tolerance. The name of the property_definition applied to each of the physical_unit_datum_feature in the context of the datum_system referenced by this position_tolerance shall be the same as the name of the property_definition applied to the same physical_unit_datum_feature in the context of the datum_system referenced by the position_tolerance to which this position_tolerance is related as the 'position refining control'.

IP15: If the position_tolerance has a name of 'feature relating position', it shall specify a measure_with_unit as its magnitude that is less than the measure_with_unit specified as the magnitude of the position_tolerance to which it is related as the 'position refining control'.

IP16: If the position_tolerance has a name of 'feature relating position' and it is specified as the defining_tolerance by a tolerance_zone that has a description of 'conical', the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also be specified as the defining_tolerance by a tolerance_zone that has a description of 'conical'.

IP17: If the position_tolerance has a name of 'feature relating position' and it is specified as the defining_tolerance by a tolerance_zone that is the zone of a projected_zone_definition, the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also be specified as the defining_tolerance by a tolerance_zone that is the zone of a projected_zone_definition.

IP18: If the position_tolerance has a name of 'feature relating position' and it is specified as the defining_tolerance by a tolerance_zone that has a property_definition with the description of 'tolerance zone orientation' , the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also be specified as the defining_tolerance by a tolerance_zone that has a property_definition with the description of 'tolerance zone orientation'.

IP19: If the position_tolerance has a name of 'feature relating position' and its tolerance_zone_boundary has a description of 'conical', the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also have a tolerance_zone_boundary that has a description of 'conical'.

IP20: If the position_tolerance has a name of 'feature relating position' and its tolerance_zone_boundary has a description of 'circular or cylindrical or spherical', the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also have a tolerance_zone_boundary that has a description of 'circular or cylindrical or spherical'.

IP21: If the position_tolerance has a name of 'feature relating position' and its tolerance_zone_boundary is a tolerance_zone_explicit_opposing_boundary_set, the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also have a tolerance_zone_boundary that is a tolerance_zone_explicit_opposing_boundary_set.

IP22: If the position_tolerance has a name of 'feature relating position' and its tolerance_zone_boundary is a tolerance_zone_implicit_opposing_boundary_set, the position_tolerance that is related to this position_tolerance as the 'position refining control' shall also have a tolerance_zone_boundary that is a tolerance_zone_implicit_opposing_boundary_set.

IP23: The toleranced_shape_aspect of the position_tolerance shall either lie on the boundary of the shape of the product; be a centre_of_symmetry with a description of either 'axis', 'plane', or 'point'; be a part_template_definition; or be a composite_shape_aspect the 'composing' shape_aspects of which either are all of type part_template_definition, or are all of type centre_of_symmetry and have the same description -- either 'axis', 'plane', or 'point'.

IP24: If the toleranced_shape_aspect of the position_tolerance is either a centre_of_symmetry with a description of 'plane', or a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'plane'; the tolerance_zone_boundary shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

IP25: If the toleranced_shape_aspect of the position_tolerance is either a centre_of_symmetry with a description of 'point', or a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'point'; the position_tolerance shall be specified as the defining_tolerance by exactly one tolerance_zone that is specified as the zone of a tolerance_zone_definition.

5.2.3.1.281 positional_boundary

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A positional_boundary is a shape_aspect that implements the ARM concepts of:
  • Dimension_related_positional_boundary
  • Positional_boundary
  • Profile_related_positional_boundary

EXPRESS specification:

*)
ENTITY positional_boundary
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\shape_aspect.description IN 
    ['dimension related positional boundary',
  'profile related positional boundary'];

  WR2: SELF\shape_aspect.product_definitional = False;

  WR3: (NOT(SELF\shape_aspect.description = 
           'dimension related positional boundary'))
       OR (SIZEOF(QUERY(sar <* USEDIN(SELF, 
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') 
          | ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'POSITIONAL_BOUNDARY_MEMBER' IN 
               TYPEOF(sar.related_shape_aspect))
            AND (sar\shape_aspect_relationship.name = 'boundary member'))) >= 1);

  WR4: (NOT(SELF\shape_aspect.description = 
         'dimension related positional boundary'))
       OR (SIZEOF(QUERY(sar <*USEDIN(SELF, 
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') 
          | (sar.related_shape_aspect.product_definitional = True) AND
            (sar\shape_aspect_relationship.name = 'constrained feature'))) +
           SIZEOF(QUERY(sar <*USEDIN(SELF, 
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') 
          | ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'PART_TEMPLATE_DEFINITION' IN TYPEOF(sar.related_shape_aspect))
            AND (sar\shape_aspect_relationship.name = 'constrained feature'))
           ) = 1);     

  WR5: (NOT(SELF\shape_aspect.description = 
              'dimension related positional boundary'))
       OR (SIZEOF(QUERY(pd <* USEDIN(SELF,
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'PROPERTY_DEFINITION.DEFINITION')        
          | (pd\property_definition.description = 
                'dimension related positional boundary property'))) = 1);

  WR6: (NOT(SELF\shape_aspect.description = 
                  'profile related positional boundary'))
       OR (SIZEOF(QUERY(pd <* USEDIN(SELF,
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'PROPERTY_DEFINITION.DEFINITION')        
          | (pd\property_definition.description = 
                  'profile related positional boundary property'))) = 1);
   
  WR7: (NOT(SELF\shape_aspect.description = 
                     'profile related positional boundary'))
       OR (SIZEOF(QUERY(sar <* USEDIN(SELF, 
          'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') 
          | ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'POSITIONAL_BOUNDARY_MEMBER' IN TYPEOF(sar.related_shape_aspect))
            AND (sar\shape_aspect_relationship.name = 
               'positional boundary and profile boundary member'))) = 1);
END_ENTITY; -- positional_boundary
(*

Formal propositions:

WR1: The positional_boundary shall have a description of either 'dimension related positional boundary' or 'profile related positional boundary'.

WR2: The positional_boundary shall not lie on the boundary of the shape of the product.

WR3: If the description of the positional_boundary is 'dimension related positional boundary', the positional_boundary shall relate to at least one positional_boundary_member to specify the 'boundary member'.

WR4: If the description of the positional_boundary is 'dimension related positional boundary', the positional_boundary shall either relate to exactly one shape_aspect that lies on the boundary of the shape of the product to specify the 'constrained feature' or relate to exactly one part_template_definition to specify the 'constrained feature'.

WR5: If the description of the positional_boundary is 'dimension related positional_boundary', the positional_boundary shall have exactly one property_definition that has the description of 'dimension related positional boundary property'.

WR6: If the description of the positional_boundary is 'profile related positional boundary', the positional_boundary shall have exactly one property_definition that has the description of 'profile related positional boundary property'.

WR7: If the description of the positional_boundary is 'profile related positional boundary' it shall relate to exactly one shape_aspect to specify the 'positional boundary and profile boundary member'.

5.2.3.1.282 positional_boundary_member

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A positional_boundary_member is a shape_aspect that implements the ARM concept of Positional_boundary_member.

EXPRESS specification:

*)
ENTITY positional_boundary_member
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\shape_aspect.product_definitional = False;

  WR2: SIZEOF(QUERY(pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION')        
       | (pd\property_definition.description = 'positional boundary member property'))
       ) = 1;
  WR3: SIZEOF(QUERY(sar <* USEDIN(SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') 
       | (sar\shape_aspect_relationship.name = 'boundary member') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
          'POSITIONAL_BOUNDARY' IN TYPEOF(sar.relating_shape_aspect))
         AND (sar.relating_shape_aspect\shape_aspect.description =
         'dimension related positional boundary'))) = 1;
END_ENTITY; -- positional_boundary_member
(*

Formal propositions:

WR1: The positional_boundary_member shall not lie on the boundary of the shape of the product.

WR2: The positional_boundary_member shall have exactly one property_definition that has the description of 'positional boundary member property'.

WR3: The positional_boundary_member shall be related to exactly one positional_boundary as the 'boundary member', and that positional_boundary shall have a description of 'dimension related positional boundary'.

5.2.3.1.283 power_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A power_measure_with_unit is a measure_with_unit that implements the ARM concept of Power_measure_with_unit.

EXPRESS specification:

*)
ENTITY power_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\power_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = watt;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- power_measure_with_unit
(*

Formal propositions:

WR1: The power_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The power_measure_with_unit shall reference an si_unit with a name of watt.

WR3: The unit_component shall be an si_unit.

5.2.3.1.284 pre_defined_parallel_datum_axis_symbol_3d_2d_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An pre_defined_parallel_datum_axis_symbol_3d_2d_relationship is a volume_shape_intersection that implements the ARM concept of Pre_defined_parallel_datum_axis_symbol_3d_2d_relationship.

EXPRESS specification:

*)
ENTITY pre_defined_parallel_datum_axis_symbol_3d_2d_relationship
  SUBTYPE OF (volume_shape_intersection);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\shape_representation_relationship || 
       SELF\volume_shape_intersection || 
       SELF\pre_defined_parallel_datum_axis_symbol_3d_2d_relationship))) = 0;
END_ENTITY; -- pre_defined_parallel_datum_axis_symbol_3d_2d_relationship 
(* 

Formal propositions:

WR1: The pre_defined_parallel_datum_axis_symbol_3d_2d_relationship shall not be a complex subtype of other than its direct supertypes.

5.2.3.1.285 pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship is a volume_shape_intersection that implements the ARM concept of Pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship.

EXPRESS specification:

*)
ENTITY pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship
  SUBTYPE OF (volume_shape_intersection);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\shape_representation_relationship || 
       SELF\volume_shape_intersection || 
       SELF\pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship))) = 0;
END_ENTITY; -- pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship 
(* 

Formal propositions:

WR1: The pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship shall not be a complex subtype of other than its direct supertypes.

5.2.3.1.286 pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship is a volume_shape_intersection that implements the ARM concept of Pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship.

EXPRESS specification:

*)
ENTITY pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship
  SUBTYPE OF (volume_shape_intersection);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\shape_representation_relationship || 
       SELF\volume_shape_intersection || 
       SELF\pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship))) = 0;
END_ENTITY; -- pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship 
(* 

Formal propositions:

WR1: The pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship shall not be a complex subtype of other than its direct supertypes.

5.2.3.1.287 pressure_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A pressure_measure_with_unit is a measure_with_unit that implements the ARM concept of Pressure_measure_with_unit.

EXPRESS specification:

*)
ENTITY pressure_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\pressure_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = pascal;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- pressure_measure_with_unit
(*

Formal propositions:

WR1: The pressure_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The pressure_measure_with_unit shall reference an si_unit with a name of pascal.

WR3: The unit_component shall be an si_unit.

5.2.3.1.288 primary_orientation_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A primary_orientation_feature is a physical_unit_datum_feature that implements the ARM concept of Primary_orientation_feature.

EXPRESS specification:

*)
ENTITY primary_orientation_feature
 SUBTYPE OF (physical_unit_datum_feature);
WHERE
  WR1: SELF\shape_aspect.product_definitional = TRUE;
  WR2: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated body vertical extent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_BOTTOM_SURFACE' IN
       TYPEOF (it.relating_shape_aspect)) 
       )) <= 1;
  WR3: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated body vertical extent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_TOP_SURFACE' IN
       TYPEOF (it.relating_shape_aspect)) 
       )) <= 1;
END_ENTITY; -- primary_orientation_feature
(*

Formal propositions:

WR1: A primary_orientation_feature shall be on the surface of the product.

WR2: A primary_orientation_feature shall be associated with no more than one package_body_bottom_surface.

WR3: A primary_orientation_feature shall be associated with no more than one package_body_top_surface.

5.2.3.1.289 primary_reference_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A primary_reference_terminal is a package_terminal that implements the ARM concept of Primary_reference_terminal.

EXPRESS specification:

*)
ENTITY primary_reference_terminal
  SUBTYPE OF (package_terminal);
WHERE
 WR1: SIZEOF(QUERY ( sar <* USEDIN (SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
      'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'precedent feaure' ))
       = 0;
 WR2: SIZEOF(QUERY ( sar <* USEDIN (SELF,
      'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
      'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'precedent feaure' ))
       <= 1;
END_ENTITY; -- primary_reference_terminal
(*

Formal propositions:

WR1: The primary_reference_terminal shall be referenced by no shape_aspect_relationship with a description of 'precedent feature' as the related_shape_aspect.

WR2: The primary_reference_terminal shall be referenced by no more than one shape_aspect_relationship with a description of 'precedent feature' as the relating_shape_aspect.

5.2.3.1.290 printed_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_component is a component_definition that implements the ARM concepts of:
  • Layout_macro_component
  • Printed_component
  • Printed_connector_component

EXPRESS specification:

*)
ENTITY printed_component
  SUPERTYPE OF(layout_macro_component)
  SUBTYPE OF (component_definition);
WHERE
  WR1: SELF.frame_of_reference.name = 'layout occurrence';
  WR2: SELF\product_definition.description = 'printed component';
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pt_occ <* QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       sa\shape_aspect.description = 'part template occurrence') |
       SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (pt_occ,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |  
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description IN ['printed part template', 
       'printed part cross section template', 
       'printed connector template']))) = 1)) = 1))) = 0;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 'printed component join terminal'))) >= 1))) = 0;
  WR5: (NOT (SELF\product_definition.description = 'printed connector component')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAMINATE_COMPONENT_INTERFACE_TERMINAL' IN
       TYPEOF (sa)) AND
       (sa\shape_aspect.description = 
       'printed connector component interface terminal'))) >= 1))) = 0);
  WR6: (NOT (SELF\product_definition.description = 'printed connector component')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pt_occ <* QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       sa\shape_aspect.description = 'part template occurrence') |
       SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (pt_occ,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'instantiated template') |  
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (it.relating_shape_aspect)) AND
       (it.relating_shape_aspect\shape_aspect.description = 
       'printed connector template'))) = 1)) = 1))) = 0);
  WR7: SIZEOF(QUERY(pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |  
        SIZEOF(QUERY(sa <* USEDIN(pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') | 
        SIZEOF(QUERY(sar <* USEDIN(sa, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'COMPONENT_SHAPE_ASPECT' IN TYPEOF(sar.relating_shape_aspect))
        AND (sar\shape_aspect_relationship.name = 'stratum feature implementation')
        AND (sar.relating_shape_aspect.description = 'stratum feature template component'))
        )) >= 1
        )) >= 1 
        )) >= 1;
END_ENTITY; -- printed_component
(*

Formal propositions:

WR1: The printed_component shall have a frame_of_reference with a name of 'layout occurrence'.

WR2: The printed_component shall have a description that is 'printed component'.

WR3: The printed_component shall have exactly one shape_aspect with a name of 'part template occurrence' that is related to a part_template_definition with a description of 'printed part template', 'printed part cross section template', or 'printed connector template'.

WR4: The printed_component shall have at least one shape_aspect that is a component_terminal with a description of 'printed component join terminal'.

WR5: If the printed_component has a description of 'printed connector component', it shall have at least one shape_aspect that is a laminate_component_interface_terminal with a description of 'printed connector component interface terminal'

WR6: If the printed_component has a description of 'printed connector component', it shall have exactly one shape_aspect with a name of 'part template occurrence' that is related to a part_template_definition with a description of 'printed connector template'.

WR7: The printed_component shall be associated to at least one component_shape_aspect with a description of 'stratum feature template component' as a 'stratum feature implementation'.

5.2.3.1.291 printed_component_link

A printed_component_link is a product_definition and a product_definition_relationship that implements the ARM concept of Printed_component_link

EXPRESS specification:

*)
ENTITY printed_component_link
  SUBTYPE OF (product_definition,product_definition_relationship);
WHERE
  WR1: SELF\product_definition_relationship.related_product_definition :<>:
       SELF\product_definition_relationship.relating_product_definition;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.related_product_definition);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF\product_definition_relationship.relating_product_definition);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\product_definition ||
       SELF\product_definition_relationship ||
       SELF\printed_component_link)) = 0;
  WR5: EXISTS(SELF\product_definition.name);
  WR6: SELF\product_definition.name = '';
  WR7: SELF\product_definition_relationship.name = '';
  WR8: SIZEOF(USEDIN(SELF, 
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION')) = 1;
END_ENTITY; -- printed_component_link 
(* 

Formal propositions:

WR1: The related element shall not be the relating element.

WR2: The printed_component_link shall relate to only a component_definition in the related_product_definition.

WR3: The printed_component_link shall relate to only a component_definition in the relating_product_definition.

WR4: The types of printed_component_link shall be only printed_component_link, product_definition, and product_definition_relationship.

WR5: The name attribute of the product_definition supertype shall exist.

WR6: The name attribute of the product_definition supertype shall be an empty string.

WR7: The name attribute of the product_definition_relationship supertype shall be an empty string.

WR8: Each printed_component_link shall be referenced exactly once by a product_definition_relationship related_product_definition.

5.2.3.1.292 printed_connector_template_terminal_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_connector_template_terminal_relationship is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Printed_connector_template_terminal_relationship.

EXPRESS specification:

*)
ENTITY printed_connector_template_terminal_relationship
 SUBTYPE OF (shape_aspect, shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.relating_shape_aspect,
       SELF\shape_aspect_relationship.related_shape_aspect;
WHERE
  WR1: SIZEOF ( QUERY( sar <* USEDIN ( SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        (( sar\shape_aspect_relationship.name = 'connector') AND
          (sar.relating_shape_aspect\shape_aspect.description = 
              'printed connector template'))
        )) = 1;
  WR2: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN TYPEOF 
       (SELF\shape_aspect_relationship.relating_shape_aspect)) AND
       (SELF\shape_aspect_relationship.relating_shape_aspect\shape_aspect.description 
        = 'interface terminal'));
  WR3: (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN 
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect)) AND
       (SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.description 
        = 'join terminal'));
  WR4: SELF\shape_aspect_relationship.relating_shape_aspect :<>:
       SELF\shape_aspect_relationship.related_shape_aspect;
END_ENTITY; -- printed_connector_template_terminal_relationship
(*

Formal propositions:

Formal propositions:

WR1: The combination of related and relating shape_aspects shall be unique within a population of printed_connector_template_terminal_relationship.

WR1: The printed_connector_template_terminal_relationship shall be related to a part_template_definition with a description of 'printed connector template'.

WR2: The printed_connector_template_terminal_relationship shall have a relating_shape_aspect that is a printed_part_template_terminal with a description of 'interface terminal'.

WR3: The printed_connector_template_terminal_relationship shall have a related_shape_aspect that is a printed_part_template_terminal with a description of 'join terminal'.

WR4: The related and relating shape aspects shall not be the same shape_aspect.

5.2.3.1.293 printed_part_cross_section_template_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_cross_section_template_terminal is a shape_aspect that implements the ARM concept of Printed_part_cross_section_template_terminal.

EXPRESS specification:

*)
ENTITY printed_part_cross_section_template_terminal
  SUBTYPE OF (printed_part_template_terminal);
WHERE
  WR1: 
       SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'cross section definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (am.relating_shape_aspect)) AND
       (am.relating_shape_aspect\shape_aspect.description = 
       'printed part cross section template'))) = 1;

  WR2: SIZEOF (QUERY (ga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL_CONNECTION_ZONE_CATEGORY' IN
       TYPEOF (ga.assigned_group)) AND 
       (ga.assigned_group.name IN  
                       ['area edge segment', 'curve edge segment']))
        )) = 1;
  WR3: SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to left of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) <= 1;
  WR4: SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to right of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) <= 1;
  WR5: SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to top of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) <= 1;
  WR6: SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to bottom of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) <= 1;
  WR7: NOT((SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to left of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1) AND
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to right of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1)) 
   OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'material to right of terminal') OR
       (sar\shape_aspect_relationship.name = 'material to left of terminal')
       ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 2);
       
  WR8: NOT((SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to left of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1) AND
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to top of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1)) 
   OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'material to top of terminal') OR
       (sar\shape_aspect_relationship.name = 'material to left of terminal')
       ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 2);
  WR9: NOT((SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to left of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1) AND
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to bottom of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1)) 
   OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'material to bottom of terminal') OR
       (sar\shape_aspect_relationship.name = 'material to left of terminal')
       ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 2);
 WR10: NOT((SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to top of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1) AND
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to right of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1)) 
   OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'material to right of terminal') OR
       (sar\shape_aspect_relationship.name = 'material to top of terminal')
       ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 2);
 WR11: NOT((SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to bottom of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1) AND
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to right of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1)) 
   OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'material to right of terminal') OR
       (sar\shape_aspect_relationship.name = 'material to bottom of terminal')
       ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 2);
 WR12: NOT((SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to top of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1) AND
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material to bottom of terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 1)) 
   OR
       (SIZEOF (QUERY (am <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name = 'material to top of terminal') OR
       (sar\shape_aspect_relationship.name = 'material to bottom of terminal')
       ) |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL_LINK' IN
       TYPEOF (am.relating_shape_aspect))
       )) = 2);
END_ENTITY; -- printed_part_cross_section_template_terminal
(*

Formal propositions:

WR1: The printed_part_cross_section_template_terminal shall be related to exactly one part_template_definition with a description of 'printed part cross section template' as the 'cross section definition'.

WR2: The printed_part_cross_section_template_terminal shall be in exactly one printed_part_template_terminal_connection_zone_category that has a name of 'area edge segment' or 'curve edge segment'.

WR3: The printed_part_cross_section_template_terminal shall be in no more than one shape_aspect_relationship with a name of 'material to left of terminal' that specifies a printed_part_template_material_link.

WR4: The printed_part_cross_section_template_terminal shall be in no more than one shape_aspect_relationship with a name of 'material to right of terminal' that specifies a printed_part_template_material_link.

WR5: The printed_part_cross_section_template_terminal shall be in no more than one shape_aspect_relationship with a name of 'material to top of terminal' that specifies a printed_part_template_material_link.

WR6: The printed_part_cross_section_template_terminal shall be in no more than one shape_aspect_relationship with a name of 'material to bottom of terminal' that specifies a printed_part_template_material_link.

WR7: If the material link to the left of the terminal exists and the material link to the right of the terminal exists, then they shall not be the same material link.

WR8: If the material link to the left of the terminal exists and the material link to the top of the terminal exists, then they shall not be the same material link.

WR9: If the material link to the left of the terminal exists and the material link to the bottom of the terminal exists, then they shall not be the same material link.

WR10: If the material link to the top of the terminal exists and the material link to the right of the terminal exists, then they shall not be the same material link.

WR11: If the material link to the bottom of the terminal exists and the material link to the right of the terminal exists, then they shall not be the same material link.

WR12: If the material link to the top of the terminal exists and the material link to the bottom of the terminal exists, then they shall not be the same material link.

5.2.3.1.294 printed_part_template_connected_terminals_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_template_connected_terminals_definition is a shape_aspect that implements the ARM concept of Printed_part_template_connected_terminals_definition.

EXPRESS specification:

*)
ENTITY printed_part_template_connected_terminals_definition
  SUBTYPE OF (shape_aspect);
UNIQUE
  UR1: SELF\shape_aspect.name;
WHERE
  WR1: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL' IN
       TYPEOF (mct.related_shape_aspect)) AND
       (mct.related_shape_aspect\shape_aspect.description IN 
       ['interface terminal', 'join terminal']))) >= 2;
END_ENTITY; -- printed_part_template_connected_terminals_definition
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique.

WR1: The printed_part_template_connected_terminals_definition shall relate to at least two printed_part_template_terminals with a description of 'interface terminal' or 'join terminal' to specify a 'member connected terminal'.

5.2.3.1.295 printed_part_template_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_template_link is a stratum_technology_link and shape_aspect_relationship that implements the ARM concept of Printed_part_template_link

EXPRESS specification:

*)
ENTITY printed_part_template_link
  SUBTYPE OF (stratum_technology_link,shape_aspect_relationship);
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\property_definition_relationship ||
       SELF\printed_part_template_link || SELF\property_definition ||
       SELF\stratum_technology_link || SELF\shape_aspect_relationship)) = 0;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN 
    TYPEOF(SELF\shape_aspect_relationship.related_shape_aspect);
  WR4: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN 
    TYPEOF(SELF\shape_aspect_relationship.relating_shape_aspect);
  WR5: SELF\shape_aspect_relationship.name = '';
  WR6: SELF\shape_aspect_relationship.description = '';
  WR7: SELF\shape_aspect_relationship.related_shape_aspect.description =
       'printed part template';
  WR8: SELF\shape_aspect_relationship.relating_shape_aspect.description =
       'printed part template';
END_ENTITY; -- printed_part_template_link
(*

Formal propositions:

WR1: The printed_part_template_link shall not relate to the same shape_aspect through the related and relating attributes.

WR2: The printed_part_template_link shall not be any other subtype of shape_aspect_relationship or property_definition or property_definition_relationship.

WR3: The printed_part_template_link shall reference only a part_template_definition through the related attribute inherited from shape_aspect_relationship.

WR4: The printed_part_template_link shall reference only a part_template_definition through the relating attribute inherited from shape_aspect_relationship.

WR5: The printed_part_template_link name inherited from shape_aspect_relationship shall be blank.

WR6: The printed_part_template_link description inherited from shape_aspect_relationship shall be blank.

WR7: The printed_part_template_link shall reference only a shape_aspect with a description of 'printed part template' through the related attribute inherited from shape_aspect_relationship.

WR8: The printed_part_template_link shall reference only a shape_aspect with a description of 'printed part template' through the relating attribute inherited from shape_aspect_relationship.

5.2.3.1.296 printed_part_template_material

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_template_material is a product_definition that implements the ARM concept of: Printed_part_template_material

EXPRESS specification:

*)
ENTITY printed_part_template_material
 SUBTYPE OF (product_definition);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'technology usage') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
       TYPEOF (tu.relating_property_definition.definition))) = 1)) = 1;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) |
       ((sr_pdr.used_representation\representation.name = 
                'physical characteristics representation')
       AND
       (SIZEOF (sr_pdr.used_representation.items) = 2 )
       AND 
      ( SIZEOF(QUERY (it <* sr_pdr.used_representation.items |
       it\representation_item.name IN ['maximum width', 
                                        'minimum width'])) = 2 ))
       )) = 1)))
       = 0;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\product_definition ||
       SELF\printed_part_template_material)) = 0;
 WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (sa)) AND (sa.description = 'top')))) <= 1))) = 0;
 WR5: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (sa)) AND (sa.description = 'bottom')))) <= 1))) = 0;
 WR6: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (sa)) AND (sa.description = 'left')))) <= 1))) = 0;
 WR7: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (sa)) AND (sa.description = 'right')))) <= 1))) = 0;
END_ENTITY; -- printed_part_template_material

(*

Formal propositions:

WR1: The printed_part_template_material shall have exactly one property_definition that is related to a property_definition of a stratum_technology as the 'technology usage'.

WR2: The printed_part_template_material shall have exactly one representation that has a name of 'physical characteristics representation' and that has two representation items that have names of 'maximum width', 'minimum width'.

WR3: The printed_part_template_material shall not participate in a complex instance.

WR4: The printed_part_template_material shall not have more than one top boundary.

WR5: The printed_part_template_material shall not have more than one bottom boundary.

WR6: The printed_part_template_material shall not have more than one left boundary.

WR7: The printed_part_template_material shall not have more than one right boundary.

5.2.3.1.297 printed_part_template_material_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_template_material_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Printed_part_template_material_link

EXPRESS specification:

*)
ENTITY printed_part_template_material_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
UNIQUE
  UR1: SELF\shape_aspect_relationship.related_shape_aspect, 
       SELF\shape_aspect_relationship.relating_shape_aspect;
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEMPLATE_MATERIAL_CROSS_SECTION_BOUNDARY' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\printed_part_template_material_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SELF\shape_aspect_relationship.related_shape_aspect.of_shape :<>: 
       SELF\shape_aspect_relationship.relating_shape_aspect.of_shape;
  WR8: SELF\shape_aspect_relationship.relating_shape_aspect.description IN
       ['bottom', 'right'];
  WR9: SELF\shape_aspect_relationship.related_shape_aspect.description IN
       ['top', 'left'];
END_ENTITY; -- printed_part_template_material_link 
(* 

Formal propositions:

Formal propositions:

WR1: The relating_shape_aspect, related_shape_aspect combination shall be unique.

WR1: The related boundary shall not be the relating boundary.

WR2: The printed_part_template_material_link shall relate to only a template_material_cross_section_boundary in the related_shape_aspect.

WR3: The printed_part_template_material_link shall relate to only a template_material_cross_section_boundary in the relating_shape_aspect.

WR4: The types of printed_part_template_material_link shall be only printed_part_template_material_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: The shape specified by the related_shape_aspect shall not be the shape specified by the relating_shape_aspect.

WR8: The description attribute of the relating boundary shall be 'bottom' or 'right'.

WR9: The description attribute of the related boundary shall be 'top' or 'left'.

5.2.3.1.298 printed_part_template_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_template_terminal is a shape_aspect that implements the ARM concepts of:
  • Printed_part_cross_section_template_terminal
  • Printed_part_template_interface_terminal
  • Printed_part_template_join_terminal
  • Printed_part_template_terminal

EXPRESS specification:

*)
ENTITY printed_part_template_terminal
  SUPERTYPE OF (printed_part_cross_section_template_terminal)
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SELF\shape_aspect.description IN ['interface terminal', 'join terminal'];
  WR2: SIZEOF (QUERY (ga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_TERMINAL_CONNECTION_ZONE_CATEGORY' IN
       TYPEOF (ga.assigned_group))) = 1;
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar.related_shape_aspect\shape_aspect.description = 
       'connection zone')) >= 1;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN
       TYPEOF (pdr.used_representation))) >= 1))) = 0;
  WR5: SIZEOF (QUERY (ad <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated definition') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN
       TYPEOF (ad.relating_shape_aspect)) AND
       ((ad.relating_shape_aspect\shape_aspect.description = 'printed part template')
       OR
       (ad.relating_shape_aspect\shape_aspect.description = 'printed connector template'))
       )) = 1;
  WR6: SIZEOF (QUERY (mct <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'member connected terminal') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_CONNECTED_TERMINALS_DEFINITION' IN
       TYPEOF (mct.relating_shape_aspect))) <= 1;
END_ENTITY; -- printed_part_template_terminal
(*

Formal propositions:

WR1: The printed_part_template_terminal shall have a description of 'interface terminal' or 'join terminal'.

WR2: The printed_part_template_terminal shall be in exactly one printed_part_template_terminal_connection_zone_category.

WR3: The printed_part_template_terminal shall relate to at least one 'connection zone'.

WR4: The printed_part_template_terminal shall have at least one property that is represented by a shape_representation.

WR5: The printed_part_template_terminal shall be related to exactly one part_template_definition with a description of 'printed part template' or 'printed connector template' as the 'associated definition'.

WR6: The printed_part_template_terminal shall be related to at most one printed_part_template_connected_terminals_definition as the 'member connected terminal'.

NOTE: Inverse cardinality rules required by Application Objects are implemented in rule printed_connector_template_terminal_relationship_unique_constraint.

5.2.3.1.299 printed_part_template_terminal_connection_zone_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A printed_part_template_terminal_connection_zone_category is a group that specifies either an area_edge_segment, a curve_edge_segment, a surface_area, or a surface_point for a Printed_part_template_terminal.

EXPRESS specification:

*)
ENTITY printed_part_template_terminal_connection_zone_category
   SUBTYPE OF (group);
WHERE
   WR1: SELF\group.name IN ['area edge segment','curve edge segment',
        'surface area','surface point'];
END_ENTITY; -- printed_part_template_terminal_connection_zone_category
(*

Formal propositions:

WR1: The printed_part_template_terminal_connection_zone_category shall have a name equal to 'area edge segment', 'curve edge segment', 'surface area', or 'surface point'.

5.2.3.1.300 probe_access_area

A probe_access_area is a component_shape_aspect that implements the ARM concepts of Internal_probe_access_area and Probe_access_area.

EXPRESS specification:

*)
ENTITY probe_access_area
  SUBTYPE OF (component_shape_aspect);
WHERE
  WR1: EXISTS(SELF.of_shape.definition\product_definition.name);
  WR2: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_DEFINITION' IN
       TYPEOF (SELF.of_shape.definition)) AND
       (SELF.of_shape.definition\product_definition.name = 'interconnect module');
  WR3: SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar.related_shape_aspect\shape_aspect.description =
       'connection zone')) = 1;
  WR4: SIZEOF (QUERY (pli <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'probed layout item') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (pli.related_shape_aspect))) = 1;
  WR5: (NOT (SELF\shape_aspect.description = 
        'internal probe access area')) OR
       (SIZEOF (QUERY (i <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (i.relating_shape_aspect)))) = 1);
END_ENTITY; -- probe_access_area
(*

Formal propositions:

WR1: The name of the product_definition associated with this probe_access_area shall exist.

WR2: The probe_access_area shall be an aspect of the shape of a component_definition that is a definition with a name of 'interconnect module'.

WR3: The probe_access_area shall relate to exactly one shape_aspect with a description of 'connection zone'.

WR4: The probe_access_area shall relate to exactly one stratum_feature to specify a 'probed layout item'.

WR5: If the probe_access_area has a description of 'internal probe access area', the probe_access_area shall be related to exactly one stratum_feature as the 'implementation'.

5.2.3.1.301 product_related_characterized_product_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A product_related_characterized_product_category is a characterized_product_category and a product_related_product_category that implements the ARM concept of Ee_product_related_characterized_product_category .

EXPRESS specification:

*)
ENTITY product_related_characterized_product_category
  SUBTYPE OF (characterized_product_category, 
              product_related_product_category);
END_ENTITY; -- product_related_characterized_product_category
(*

5.2.3.1.302 product_specific_parameter_value_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A product_specific_parameter_value_assignment is a characterized_product_category and a product_related_product_category that implements the ARM concept of Ee_product_specific_parameter_value_assignment .

EXPRESS specification:

*)
ENTITY product_specific_parameter_value_assignment
  SUBTYPE OF (product_related_characterized_product_category); 
WHERE
  WR1: SIZEOF(SELF\product_related_product_category.products) = 1;
  WR2: SIZEOF(QUERY(pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (pd\property_definition.description = 
                                'product category parameter') AND
       (SIZEOF(QUERY(pdr <* USEDIN(pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MODEL_PARAMETER',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'] *
       TYPEOF (pdr.used_representation)) = 1))) = 1))) = 1;
  WR3: SIZEOF(QUERY(pcr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY') |
       ((pcr\product_category_relationship.description = 
                                  'product value assignment') AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY') IN 
       TYPEOF (pcr.category))
       ))) = 1;
END_ENTITY; -- product_specific_parameter_value_assignment
(*

Formal propositions:

WR1: There shall be exactly one product in the role of products.

WR2: It shall be the definition of exactly one property_definition with a description of 'product category parameter' that is the definition of a property_definition_representation with a used_representation that is a representation that has in its items exactly one model_parameter, exactly one measure_representation_item, or exactly one descriptive_representation_item.

WR3: It shall be the sub_category of exactly one category that is a product_related_product_category, and the product_category_relationship establishing the sub_category relationship shall have a description of 'product value assignment'.

5.2.3.1.303 promissory_usage_in_product_model

A promissory_usage_in_product_model is a group that participates in an assignment to indicate that a product_definition is to be associated with a product_model. The promissory_usage_in_product_model string attributes may be populated with 'undefined' to indicate there is no requirement associated with these attributes.

NOTE: The group entity is provided for structural consistency with other parts of this standard.

EXPRESS specification:

*)
ENTITY promissory_usage_in_product_model
 SUBTYPE OF (group);
WHERE
   WR1: SIZEOF( QUERY(aga <* USEDIN(SELF,
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'GROUP_ASSIGNMENT.ASSIGNED_GROUP') | 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'APPLIED_PROMISSORY_USAGE_IN_PRODUCT_MODEL_ASSIGNMENT' IN TYPEOF(aga))
           ) >= 1;
END_ENTITY; -- promissory_usage_in_product_model
(*

Formal propositions:

WR1: The promissory_usage_in_product_model shall be referenced by an applied_promissory_usage_in_product_model_assignment.

5.2.3.1.304 rectangular_array_placement_group_component_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An rectangular_array_placement_group_component_definition is a array_placement_group_component_definition that implements the ARM concept of Rectangular_array_placement_group .

EXPRESS specification:

*)
ENTITY rectangular_array_placement_group_component_definition
  SUBTYPE OF (array_placement_group_component_definition);
END_ENTITY; -- rectangular_array_placement_group_component_definition
(*

5.2.3.1.305 rectangular_array_placement_group_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An rectangular_array_placement_group_component_shape_aspect is a array_placement_group_component_shape_aspect that implements the ARM concepts of Rectangular_array_placement_group .

EXPRESS specification:

*)
ENTITY rectangular_array_placement_group_component_shape_aspect
  SUBTYPE OF (array_placement_group_component_shape_aspect);
END_ENTITY; -- rectangular_array_placement_group_component_shape_aspect
(*

5.2.3.1.306 rectangular_composite_array_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A rectangular_composite_array_shape_aspect is a composite_shape_aspect that implements the ARM concept of Part_rectangular_array_feature.

EXPRESS specification:

*)
ENTITY rectangular_composite_array_shape_aspect
  SUBTYPE OF (composite_array_shape_aspect);
END_ENTITY; -- rectangular_composite_array_shape_aspect
(*

5.2.3.1.307 reference_packaged_part_assembly_implementation

A reference_packaged_part_assembly_implementation is a physical_unit. A reference_packaged_part_assembly_implementation implements the ARM concept of a Reference_packaged_part_assembly_implementation.

EXPRESS specification:

*)
ENTITY reference_packaged_part_assembly_implementation
 SUBTYPE OF (physical_unit);
WHERE
  WR1: (SIZEOF (QUERY (prpc <* 
       USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1) AND
       (SELF\product_definition.name = 'assembly module');
  WR2: (NOT (SELF.frame_of_reference.name = 'physical design')) OR
       (SIZEOF (QUERY (du <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design usage') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_ASSEMBLY_DEFINITION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_ASSEMBLY_DEFINITION'] *
       TYPEOF (du.relating_product_definition)) = 1) AND
       (du.relating_product_definition.frame_of_reference.name = 
       'physical design usage') AND
       (du.relating_product_definition\product_definition.name =
       'assembly module') AND
       (SIZEOF (QUERY (prpc <*
       USEDIN (du.relating_product_definition.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1)
       )) = 1);
END_ENTITY; -- reference_packaged_part_assembly_implementation
(*

Formal propositions:

WR1: The reference_packaged_part_assembly_implementation name shall be 'assembly model' and it shall be a definition of a product that is classified as an 'template model'.

WR2: If the reference_packaged_part_assembly_implementation is a physical design, it shall relate to exactly one reference_packaged_part_assembly_implementation, externally_defined_reference_packaged_part_assembly_implementation, or library_defined_reference_packaged_part_assembly_implementation that is a physical design usage with a frame_of_reference name of 'assembly module' as the design usage.

5.2.3.1.308 reference_packaged_part_interconnect_implementation

A reference_packaged_part_interconnect_implementation is a physical_unit that implements the ARM concept of Reference_packaged_part_interconnect_implementation.

EXPRESS specification:

*)
ENTITY reference_packaged_part_interconnect_implementation
 SUBTYPE OF (physical_unit);
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: (SIZEOF (QUERY (prpc <*
       USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1) AND
       (SELF\product_definition.name = 'interconnect module');
  WR3: SIZEOF (QUERY (du <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.' +
       'RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'design usage') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_PHYSICAL_UNIT', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIBRARY_DEFINED_PHYSICAL_UNIT'] *
       TYPEOF (du.relating_product_definition)) = 1) AND
       (du.relating_product_definition.frame_of_reference.name = 
       'physical design usage') AND
       (du.relating_product_definition\product_definition.name =
       'interconnect module') AND
       (SIZEOF (QUERY (prpc <*
       USEDIN (du.relating_product_definition.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS') |
       prpc\product_category.name = 'template model')) >= 1) 
       )) <= 1;
  WR4: SELF.frame_of_reference.name = 'physical design';
END_ENTITY; -- reference_packaged_part_interconnect_implementation
(*

Formal propositions:

WR1: The name attribute shall exist.

WR2: The reference_packaged_part_interconnect_implementation name shall be 'interconnect module' and it shall be a definition of a product that is classified as an 'template model'.

WR3: The reference_packaged_part_interconnect_implementation shall relate to no more than one physical_unit, externally_defined_physical_unit, or library_defined_physical_unit that is a physical design usage with a name of 'interconnect module' as the design usage, and that is a 'template model'.

WR4: The reference_packaged_part_interconnect_implementation shall be in the 'physical design' context.

5.2.3.1.309 requirement_allocation_group

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A requirement_allocation_group is a group and a property_definition_relationship that implements the ARM concept of Requirement_allocation and Test_requirement_allocation.

EXPRESS specification:

*)
ENTITY requirement_allocation_group
  SUBTYPE OF (group, property_definition_relationship);
WHERE
  WR1: (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN
       TYPEOF (ga)) |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_FORMATION',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONFIGURATION_ITEM'] * TYPEOF (aga.items)) = 1))) = 1);

  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN TYPEOF 
   (SELF\property_definition_relationship.relating_property_definition);

  WR4: NOT(SELF\property_definition_relationship.related_property_definition.description = 'test requirement') OR
       (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN
       TYPEOF (ga)) |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION'] * TYPEOF (aga.items)) = 1))) >= 1);
END_ENTITY; -- requirement_allocation_group
(*

Formal propositions:

WR1: The requirement_allocation_group shall be assigned to exactly one item that is a configuration_item, product, or product_definition_formation.

WR2: The requirement_allocation_group shall reference a requirements_property as the relating_property_definition.

WR3: If the property_definition_relationship references a property_definition with a description of 'test requirement' the requirement_allocation_group shall be assigned to more than one property_definition_representation.

5.2.3.1.310 requirement_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
An requirement_definition is a product_definition that implements the ARM concepts of: Requirement_definition

EXPRESS specification:

*)
ENTITY requirement_definition
 SUBTYPE OF (product_definition);
WHERE
  WR1: (NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS' IN 
       TYPEOF (SELF))) OR
       (SIZEOF (QUERY (docs <* 
       SELF\product_definition_with_associated_documents.
        documentation_ids |
       docs.kind\document_type.product_data_type = 'CAD filename')) <= 1);
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'creation date')) + 
       SIZEOF (QUERY (ada <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'creation date')) = 1;
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_APPROVAL_ASSIGNMENT.ITEMS')) = 1;
  WR4: SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_PERSON_AND_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\person_and_organization_role.name = 'creator')) +
       SIZEOF (QUERY (apoa <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS') |
       apoa.role\organization_role.name = 'creator')) >= 1;
  WR5: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_SECURITY_CLASSIFICATION_ASSIGNMENT.ITEMS')) = 1;
  WR6: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\product_definition ||
       SELF\requirement_definition))) = 0;
  WR7: SIZEOF (QUERY (prpc <* USEDIN (SELF.formation.of_product,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_RELATED_PRODUCT_CATEGORY.' +
       'PRODUCTS') |
       prpc\product_category.name = 'requirements model')) >= 1;
END_ENTITY; -- requirement_definition
(*

Formal propositions:

WR1: If the requirement_definition is a product_definition_with_associated_documents, there shall be at most one document in the set of documentation_ids that has a product_data_type of 'CAD filename'

WR2: The requirement_definition shall have exactly one creation date.

WR3: The requirement_definition shall have exactly one approval.

WR4: The requirement_definition shall have at least one organization or person_and_organization as the creator.

WR5: The requirement_definition shall have exactly one security_classification.

WR6: The requirement_definition shall not be any other type of product_definition.

WR7: The requirement_definition shall have a product_category with a name of 'requirements model'.

5.2.3.1.311 requirements_property

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A requirements_property is a property_definition that implements the ARM concepts of:
  • Constraint_occurrence
  • Design_characteristic_occurrence
  • Design_requirement_occurrence
  • Ee_requirement_occurrence
  • Electrical_requirement_occurrence
  • Electromagnetic_requirement_occurrence
  • Interface_requirement_occurrence
  • Material_electrical_conductivity_requirement_occurrence
  • Part_based_constraint_occurrence
  • Purpose_occurrence
  • Thermal_requirement_occurrence

EXPRESS specification:

*)
ENTITY requirements_property
  SUBTYPE OF (property_definition);
WHERE
  WR1: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'requirements property composition')) <= 1;
  WR2: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'requirements description'))) = 1)) <= 1;
  WR3: SIZEOF (QUERY (dr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EE_SPECIFICATION' IN 
       TYPEOF (dr.assigned_document))) >= 1;
  WR4: NOT(EXISTS(SELF\property_definition.description)) OR
       (NOT (SELF\property_definition.description IN ['constraint', 
        'part based constraint']) OR
       (SIZEOF (QUERY (dc <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'design constraint') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_DEFINITION' IN 
       TYPEOF (dc.relating_property_definition.definition))) = 1));
  WR5: NOT(EXISTS(SELF\property_definition.description)) OR
       (NOT (SELF\property_definition.description = 
          'part based constraint') OR
       (SIZEOF (QUERY (cp <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'constraining part') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP' IN
       TYPEOF (cp.relating_property_definition.definition)) AND
       (cp.relating_property_definition.definition\product_definition_relationship.name = 
       'constraining part') AND
   (cp.relating_property_definition.definition.related_product_definition.
       frame_of_reference.name = 'design requirement'))) = 1));
  WR6: NOT(EXISTS(SELF\property_definition.description)) OR
       (NOT (SELF\property_definition.description = 
         'interface requirement') OR
       (SIZEOF (QUERY (itnha <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'interface to next higher assembly') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION' IN
       TYPEOF (itnha.relating_property_definition.definition)) AND
    (itnha.relating_property_definition.definition.frame_of_reference.name
       = 'design requirement') AND
       (SIZEOF (QUERY (hai <* QUERY (pdr <* 
       USEDIN (itnha.relating_property_definition.definition,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'higher assembly interface') |
       SIZEOF (QUERY (pdr <* USEDIN (hai,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SPECIFIED_HIGHER_USAGE_OCCURRENCE'  
       IN TYPEOF (pdr))) = 1)) = 1))) = 1));
  WR7: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'requirements name'))) = 1)) = 1;
END_ENTITY; -- requirements_property
(*

Formal propositions:

WR1: The requirements_property shall be related to at most one property_definition as the 'requirements property composition'.

WR2: The requirements_property shall have at most one representation that contains a descriptive_representation_item with a name of 'requirements description'.

WR3: The requirements_property shall be referenced by at least one ee_specification.

WR4: If the requirements_property has a description of 'constraint' or 'part based constraint', it shall be related to exactly one property_definition of a rule_definition as the 'design constraint'.

WR5: If the requirements_property has a description of 'part based constraint', it shall be related to exactly one property_definition of a product_definition_relationship with name of 'constraining part' and a related_product_definition that has a frame_of_reference name of 'design requirement' as the 'constraining part'.

WR6: If the requirements_property has a description of 'interface requirement', it shall be related to exactly one property_definition of a product_definition that has a frame_of_reference name of 'design requirement', and that relates exactly one product_definition to a product_definition that is the component in exactly one specified_higher_usage_occurrence to specify the 'higher assembly interface', as the 'interface to next higher assembly'.

WR7: The requirements_property shall have exactly one representation that contains a descriptive_representation_item with a name of 'requirements name'.

5.2.3.1.312 requirements_property_group

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A requirements_property_group is a requirements_property and a group that implements the ARM concept of Requirement_group_occurrence.

EXPRESS specification:

*)
ENTITY requirements_property_group
  SUBTYPE OF (requirements_property, group);
WHERE
  WR1: SIZEOF (QUERY (rpc <* QUERY (pdr <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'requirements property composition') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN 
       TYPEOF (rpc.related_property_definition))) >= 1;
END_ENTITY; -- requirements_property_group
(*

Formal propositions:

WR1: The requirements_property_group shall relate to at least one requirements_property as a 'requirements property composition'.

5.2.3.1.313 resistance_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A resistance_measure_with_unit is a measure_with_unit that implements the ARM concept of Resistance_measure_with_unit.

EXPRESS specification:

*)
ENTITY resistance_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\resistance_measure_with_unit))) = 0;
  WR2: SELF\measure_with_unit.unit_component\si_unit.name = ohm;
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.SI_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- resistance_measure_with_unit
(*

Formal propositions:

WR1: The resistance_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The resistance_measure_with_unit shall reference an si_unit with a name of ohm.

WR3: The unit_component shall be an si_unit.

5.2.3.1.314 routed_physical_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A routed_physical_component is a component_definition that implements the ARM concept of Routed_physical_component

EXPRESS specification:

*)
ENTITY routed_physical_component
  SUBTYPE OF (component_definition);
WHERE
  WR1: SIZEOF (QUERY (ip <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       pdr\product_definition_relationship.name = 'instantiated part') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT'] *
       TYPEOF (ip.relating_product_definition)) = 1) AND
       (ip.relating_product_definition.frame_of_reference.name =
       'physical design usage'))) = 1;
  WR2: SELF\product_definition.description :<>: 'laminate component';
END_ENTITY; -- routed_physical_component
(*

Formal propositions:

WR1: The routed_physical_component shall be related, as the 'instantiated part', to exactly one physical_unit that is in the 'physical design usage' product_definition_context.

WR2: The routed_physical_component shall not have a description of 'laminate component'.

5.2.3.1.315 routed_printed_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A routed_printed_component is a printed_component that implements the ARM concept of Routed_printed_component.

EXPRESS specification:

*)
ENTITY routed_printed_component
 SUBTYPE OF (printed_component);
WHERE
  WR1: SIZEOF(QUERY(pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF(QUERY(sa <* USEDIN(pd, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       (SIZEOF(QUERY(sar <* USEDIN(sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PART_TEMPLATE_DEFINITION' IN TYPEOF(sar.relating_shape_aspect))
        AND (sar.relating_shape_aspect\shape_aspect.description = 
            'printed part cross section template')
        AND (sar\shape_aspect_relationship.name = 'instantiated template')
          )) = 1)
         )) = 1)
        )) = 1;
  WR2: SIZEOF(QUERY(csa <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'COMPONENT_SHAPE_ASPECT' IN TYPEOF(csa))      
         AND (SIZEOF(QUERY(sar <* USEDIN(csa, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
        (SIZEOF(QUERY(pdr <* USEDIN(sar,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF(pdr)) AND
        (pdr\product_definition_relationship.name = 'inter stratum extent')      
        )) = 1)
        AND (sar\shape_aspect_relationship.name = 'component extent')
        )) = 1)
        )) = 1;
END_ENTITY; -- routed_printed_component
(*

Formal propositions:

WR1: The routed_printed_component shall be associated to exactly one part_template_definition with a description of 'printed part cross section template' as an 'instantiated template'.

WR2: The routed_printed_component shall be associated to exactly one component_shape_aspect that shall be related to exactly one shape_aspect that is a shape_aspect for a product_definition_relationship with a name of 'inter stratum extent' to specify a 'component extent'.

Informal propositions:

IP1: The routed_printed_component shall have exactly one property that has exactly one representation.

5.2.3.1.316 rule_action

A rule_action is an action that implements the ARM concepts of:
  • Rule_action
  • Rule_adoption
  • Rule_change_request
  • Rule_creation
  • Rule_expiration
  • Rule_justification
  • Rule_modification
  • Rule_rejection
  • Rule_request
  • Rule_submission
  • Rule_supersedence

EXPRESS specification:

*)
ENTITY rule_action
  SUBTYPE OF (action);
WHERE
  WR1: SIZEOF (QUERY (aaa <* QUERY (aa <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'ACTION_ASSIGNMENT.ASSIGNED_ACTION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_ACTION_ASSIGNMENT' IN
       TYPEOF (aa)) |
       SIZEOF (QUERY (it <* aaa.items |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_FORMATION' IN 
       TYPEOF (it))
AND (it\product_definition_formation.description = 'rule version'))
)) = 1)) = 1;
  WR2: SIZEOF (QUERY (adta <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DATE_AND_TIME_ASSIGNMENT.ITEMS') |
       adta.role\date_time_role.name = 'participant date and time')) +
       SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DATE_ASSIGNMENT.ITEMS') |
       ada.role\date_role.name = 'participant date')) = 1;
  WR3: (NOT (SELF\action.name = 'rule justification')) OR
       (SIZEOF (QUERY (ja <* QUERY (ar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ACTION_RELATIONSHIP.RELATED_ACTION') |
       ar\action_relationship.name = 'justified action') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_ACTION' IN
       TYPEOF (ja.relating_action))) = 1);
  WR4: (NOT (SELF\action.name = 'rule modification')) OR
       (SIZEOF (QUERY (mr <* QUERY (ar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ACTION_RELATIONSHIP.RELATED_ACTION') |
       ar\action_relationship.name = 'modification rationale') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_ACTION' IN
       TYPEOF (mr.relating_action)) AND
       (mr.relating_action\action.name = 'rule change request'))) = 1);
  WR5: (NOT (SELF\action.name = 'rule replacement from')) OR
       (SIZEOF (QUERY (rrfa <* QUERY (aa <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'ACTION_ASSIGNMENT.ASSIGNED_ACTION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_REPLACEMENT_FROM_ASSIGNMENT' IN
       TYPEOF (aa)) |
       SIZEOF (QUERY (it <* rrfa.items |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_FORMATION' IN 
       TYPEOF (it))
AND (it\product_definition_formation.description = 'rule version'))
)) = 1)) = 1);
  WR6: (NOT (SELF\action.name = 'rule replacement to')) OR
       (SIZEOF (QUERY (rrta <* QUERY (aa <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'ACTION_ASSIGNMENT.ASSIGNED_ACTION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_REPLACEMENT_TO_ASSIGNMENT' IN
       TYPEOF (aa)) |
       SIZEOF (QUERY (it <* rrta.items |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_FORMATION' IN 
       TYPEOF (it))
AND (it\product_definition_formation.description = 'rule version'))
)) = 1)) = 1);
END_ENTITY; -- rule_action
(*

Formal propositions:

WR1: The rule_action shall be assigned to exactly one product_definition_formation with a description of 'rule version'.

WR2: The rule_action shall have exactly one date or one date and time with a role of 'participant date' or 'participant date and time'.

WR3: If the rule_action has a name of 'rule justification', it shall be related to rule_action as the 'justified action'.

WR4: If the rule_action has a name of 'rule modification', it shall be related to rule_action with a name of 'rule change request' as the 'modification rationale'.

WR5: If the rule_action has a name of 'rule replacement from', it shall be assigned to exactly one product_definition_formation with a description of 'rule version' by a rule_replacement_from_assignment.

WR6: If the rule_action has a name of 'rule replacement to', it shall be assigned to exactly one product_definition_formation with a description of 'rule version' by a rule_replacement_to_assignment.

5.2.3.1.317 rule_complex_clause

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A rule_complex_clause is a characterized_object and is an externally_defined_item that implements the ARM concept of Ee_rule_complex_clause.

EXPRESS specification:

*)
ENTITY rule_complex_clause 
 SUBTYPE OF (representation);
UNIQUE
 UR1: SELF\representation.name;
WHERE
  WR1: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'REPRESENTATION_RELATIONSHIP.REP_2') | 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_SIMPLE_CLAUSE' IN TYPEOF (rr.rep_1))) >= 1;
  WR2: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\rule_complex_clause)) = 0;
END_ENTITY; -- rule_complex_clause
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within a population of rule_complex_clause.

WR1: The rule_complex_clause shall have at least one representation_relationship that references a rule_simple_clause.

WR2: The rule_complex_clause shall not be a complex instance.

5.2.3.1.318 rule_conclusion_definition

A rule_conclusion_definition is a representation that implements the ARM concept of Ee_rule_conclusion_definition.

EXPRESS specification:

*)
ENTITY rule_conclusion_definition 
 SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'RULE_DEFINITION' IN TYPEOF
       (pdr.definition.definition))) = 1;
  WR2: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'RULE_SIMPLE_CLAUSE' IN TYPEOF 
       (rr\representation_relationship.rep_1))) >= 1;

  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\rule_conclusion_definition)) = 0;
END_ENTITY; -- rule_conclusion_definition
(*

Formal propositions:

WR1: The rule_conclusion_definition shall have one property_definition_representation that references a rule definition.

WR2: The rule_conclusion_definition shall have at least one representation_relationship that references a rule_simple_clause.

WR3: The rule_conclusion_definition shall not be a complex instance.

5.2.3.1.319 rule_definition

A rule_definition is a product_definition that implements the ARM concept of Ee_rule_definition.

EXPRESS specification:

*)
ENTITY rule_definition 
 SUBTYPE OF (product_definition);
WHERE
  WR1: SELF\product_definition.formation.description = 'rule version';
END_ENTITY; -- rule_definition
(*

Formal propositions:

WR1: The rule_definition shall reference a product_definition_formation with a description of 'rule version'.

5.2.3.1.320 rule_function_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A rule_function_definition is a representation that implements the ARM concept of Ee_rule_function.

EXPRESS specification:

*)
ENTITY rule_function_definition 
 SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (QUERY (it <* SELF.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MODEL_PARAMETER' IN
       TYPEOF (it))) >= 1;
  WR2: SIZEOF(QUERY(adf <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       (adf\document_reference.assigned_document.kind\document_type.product_data_type
       = 'reference document') AND
       (SIZEOF(['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EE_SPECIFICATION', 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DOCUMENT'] * 
        TYPEOF(adf\document_reference.assigned_document))>=1))) = 1;
  WR3: SIZEOF(QUERY(adf <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       (adf\document_reference.assigned_document.kind\document_type.product_data_type =
       'source code') AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EE_SPECIFICATION' IN 
        TYPEOF(adf\document_reference.assigned_document)))) = 1;
END_ENTITY; -- rule_function_definition
(*

Formal propositions:

WR1: The rule_function_definition shall contain at least one model_parameter.

WR2: The rule_function_definition shall contain exactly one document or ee_specification with a document_type of 'reference document'.

WR3: The rule_function_definition shall contain exactly one ee_specification with a document_type of 'source code'.

Informal propositions:

IP1: The combination of identifier and the item which has a document type of 'reference document' shall be unique for rule_function_definition.

5.2.3.1.321 rule_premise_definition

A rule_premise_definition is a representation that implements the ARM concept of Ee_rule_premise_definition.

EXPRESS specification:

*)
ENTITY rule_premise_definition 
 SUBTYPE OF (representation);
WHERE
  WR1: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION') |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'RULE_DEFINITION' IN TYPEOF
       (pdr.definition.definition))) = 1;

  WR2: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'RULE_COMPLEX_CLAUSE' IN TYPEOF 
       (rr\representation_relationship.rep_1))) >= 1;

  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\rule_premise_definition)) = 0;
END_ENTITY; -- rule_premise_definition
(*

Formal propositions:

WR1: The rule_premise_definition shall have one property_definition_representation that references a rule definition.

WR2: The rule_premise_definition shall have at least one representation_relationship that references a rule_complex_clause.

WR3: The rule_premise_definition shall not be a complex instance.

5.2.3.1.322 rule_replacement_from_assignment

The rule_replacement_from_assignment is an action_assignment that specifies a rule version which is being superseded in a Rule_supersedence.

EXPRESS specification:

*)
ENTITY rule_replacement_from_assignment
 SUBTYPE OF (action_assignment);
     items : SET [1:?] OF replacement_from_item;
END_ENTITY; -- rule_replacement_from_assignment
(*

5.2.3.1.323 rule_replacement_to_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A rule_replacement_to_assignment is an action_assignment that specifies a rule version which is superseding another rule version in a Rule_supersedence.

EXPRESS specification:

*)
ENTITY rule_replacement_to_assignment
 SUBTYPE OF (action_assignment);
     items : SET [1:?] OF replacement_to_item;
END_ENTITY; -- rule_replacement_to_assignment
(*

Informal propositions:

IP1: The assigned_action shall be in the role of a related_action for an action_relationship where the relating_action is an action that has been assigned by a rule_replacement_from_assignment.

5.2.3.1.324 rule_set

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A rule_set is a group that implements the ARM concepts of Rule_set and Rule_set_group.

EXPRESS specification:

*)
ENTITY rule_set 
 SUBTYPE OF (group);
UNIQUE
  UR1: SELF\group.name;
WHERE
  WR1: (SIZEOF (QUERY (aga <* QUERY (ga <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GROUP_ASSIGNMENT.ASSIGNED_GROUP') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT' IN 
       TYPEOF (ga)) |
       SIZEOF (QUERY (rd <* QUERY (it <* aga.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_DEFINITION' IN
       TYPEOF (it)) |
       SIZEOF (QUERY (pd <* USEDIN (rd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'rule priority')) >= 1)) >= 1)) >= 1)) >= 1) OR
       (SIZEOF (QUERY (rsge <* QUERY (gr <* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'GROUP_RELATIONSHIP.RELATING_GROUP') |
       gr\group_relationship.name = 'rule set group element') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_SET' IN
       TYPEOF (rsge.related_group))) >= 2);
END_ENTITY; -- rule_set
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique.

WR1: The rule_set shall be assigned to at least one rule_definition that has at least one property that has at least one representation with a name of 'rule priority', or it shall relate to at least one rule_sets to specify a 'rule set group element'.

5.2.3.1.325 rule_simple_clause

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A rule_simple_clause is a representation that implements the ARM concept of Ee_rule_simple_clause.

EXPRESS specification:

*)
ENTITY rule_simple_clause 
 SUBTYPE OF (representation);
UNIQUE
 UR1: SELF\representation.name;
WHERE
  WR1: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_1') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PARAMETER_ASSIGNMENT_REPRESENTATION' IN
       TYPEOF (rr.rep_2))) >= 1;
  WR2: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'REPRESENTATION_RELATIONSHIP.REP_2') | 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'RULE_FUNCTION_DEFINITION' IN TYPEOF (rr.rep_1))) = 1;
  WR3: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\representation ||
       SELF\rule_simple_clause)) = 0;
END_ENTITY; -- rule_simple_clause
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique within a population of rule_simple_clause.

WR1: The rule_simple_clause shall have at least one representation_relationship that references a parameter_assignment_representation.

WR2: The rule_simple_clause shall have exactly one representation_relationship that references a rule_function_definition.

WR3: The rule_simple_clause shall not be a complex instance.

5.2.3.1.326 scalar_terminal_definition_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A scalar_terminal_definition_link is a shape_aspect and a shape_aspect_relationship that implements the ARM concept of Scalar_terminal_definition_link

EXPRESS specification:

*)
ENTITY scalar_terminal_definition_link
  SUBTYPE OF (shape_aspect,shape_aspect_relationship);
UNIQUE
  UR1: related_shape_aspect, relating_shape_aspect;
WHERE
  WR1: SELF\shape_aspect_relationship.related_shape_aspect :<>:
       SELF\shape_aspect_relationship.relating_shape_aspect;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION' IN
       TYPEOF (SELF\shape_aspect_relationship.related_shape_aspect);
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'FUNCTIONAL_UNIT_TERMINAL_DEFINITION' IN
       TYPEOF (SELF\shape_aspect_relationship.relating_shape_aspect);
  WR4: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\shape_aspect_relationship ||
       SELF\scalar_terminal_definition_link)) = 0;
  WR5: SELF\shape_aspect.name = '';
  WR6: SELF\shape_aspect_relationship.name = '';
  WR7: SELF\shape_aspect_relationship.relating_shape_aspect\shape_aspect.description = 'scalar terminal';
  WR8: SELF\shape_aspect_relationship.related_shape_aspect\shape_aspect.description = 'scalar terminal';
END_ENTITY; -- scalar_terminal_definition_link 
(* 

Formal propositions:

Formal propositions:

WR1: The related_shape_aspect in combination with the relating shape_aspect shall be unique.

WR1: The related point shall not be the relating point.

WR2: The scalar_terminal_definition_link shall relate to only a functional_unit_terminal_definition in the related_shape_aspect.

WR3: The scalar_terminal_definition_link shall relate to only a functional_unit_terminal_definition in the relating_shape_aspect.

WR4: The types of scalar_terminal_definition_link shall be only scalar_terminal_definition_link, shape_aspect, and shape_aspect_relationship.

WR5: The name attribute of the shape_aspect supertype shall be an empty string.

WR6: The name attribute of the shape_aspect_relationship supertype shall be an empty string.

WR7: The scalar_terminal_definition_link shall relate to only a functional_unit_terminal_definition in the relating_shape_aspect that has a description of 'scalar terminal'.

WR8: The scalar_terminal_definition_link shall relate to only a functional_unit_terminal_definition in the related_shape_aspect that has a description of 'scalar terminal'.

5.2.3.1.327 scattering_parameter_measure_with_unit

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A scattering_parameter_measure_with_unit is a measure_with_unit that implements the ARM concept of Scattering_parameter_measure_with_unit.

EXPRESS specification:

*)
ENTITY scattering_parameter_measure_with_unit
 SUBTYPE OF (measure_with_unit);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\measure_with_unit ||
       SELF\scattering_parameter_measure_with_unit))) = 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.RATIO_UNIT' IN 
       TYPEOF(SELF\measure_with_unit.unit_component);
END_ENTITY; -- scattering_parameter_measure_with_unit
(*

Formal propositions:

WR1: The scattering_parameter_measure_with_unit shall not be any other type of measure_with_unit.

WR2: The unit_component shall be a ratio_unit.

5.2.3.1.328 seating_plane

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
The seating_plane is a shape_aspect that implements the ARM concept of Seating_plane.

EXPRESS specification:

*)
ENTITY seating_plane
  SUBTYPE OF (shape_aspect);
WHERE
    WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
         SELF\seating_plane)) = 0;
END_ENTITY; -- seating_plane
(*

Formal propositions:

WR1: The seating_plane shall not be any other subtype of shape_aspect.

5.2.3.1.329 secondary_orientation_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A secondary_orientation_feature is a physical_unit_datum_feature that implements the ARM concept of Secondary_orientation_feature.

EXPRESS specification:

*)
ENTITY secondary_orientation_feature
 SUBTYPE OF (physical_unit_datum_feature);
WHERE
 WR1:SIZEOF ((TYPEOF (SELF)) * 
      ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRIMARY_ORIENTATION_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VIEWING_PLANE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT_DATUM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT']) = 0;
 WR2: SELF.product_definitional = TRUE;
 WR3: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated body vertical extent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_BOTTOM_SURFACE' IN
       TYPEOF (it.relating_shape_aspect))
       )) <= 1;
 WR4: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated body vertical extent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_TOP_SURFACE' IN
       TYPEOF (it.relating_shape_aspect))
       )) <= 1;
END_ENTITY; -- secondary_orientation_feature
(*

Formal propositions:

WR1: The secondary_orientation_feature shall not be a primary_orientation_feature, a seating_plane, a viewing_plane, a component_shape_aspect, or a physical_unit_datum.

WR2: A secondary_orientation_feature shall be on the surface of the product.

WR3: A primary_orientation_feature shall be associated with no more than one package_body_bottom_surface.

WR4: A primary_orientation_feature shall be associated with no more than one package_body_top_surface.

5.2.3.1.330 sequential_laminate_passage_based_fabrication_joint

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A sequential_laminate_passage_based_fabrication_joint is a shape_aspect that implements the ARM concept of Interconnect_module_product_assembly_view_fabrication_joint.

EXPRESS specification:

*)
ENTITY sequential_laminate_passage_based_fabrication_joint
  SUBTYPE OF (shape_aspect);
END_ENTITY; -- sequential_laminate_passage_based_fabrication_joint
(*

5.2.3.1.331 shape_formed_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A shape_formed_terminal is an altered_package_terminal that implements the ARM concept of Shape_formed_terminal.

EXPRESS specification:

*)
ENTITY shape_formed_terminal
   SUBTYPE OF (altered_package_terminal);
WHERE
 WR1: (SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EE_SPECIFICATION' IN
       TYPEOF (ada.assigned_document)) AND
       (ada.assigned_document.kind\document_type.product_data_type =
       'lead form specification') AND
       (SIZEOF (QUERY (dr <* USEDIN (ada.assigned_document,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DOCUMENT_RELATIONSHIP.RELATED_DOCUMENT') |
       dr.relating_document.kind\document_type.product_data_type =
       'material specification')) = 1))) = 1);
END_ENTITY; -- shape_formed_terminal
(*

Formal propositions:

WR1: The shape_formed_terminal shall have exactly one document_reference where the assigned_document is an ee_specification with a product_data_type of 'lead form specification' and is related to a document with a product_data_type of 'material specification'.

5.2.3.1.332 shape_modification

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A shape_modification is a shape_aspect that implements the ARM concepts of:
  • Design_intent_modification
  • Electrical_isolation_removal_structure
  • Filled_area_material_removal_structure
  • Material_addition_feature
  • Material_removal_feature
  • Material_shape_modification
  • Thermal_isolation_removal_structure

EXPRESS specification:

*)
ENTITY shape_modification
 SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF (QUERY (dim <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'design intent') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (dim.relating_shape_aspect))) = 1;
  WR2: (SIZEOF (QUERY (pd<* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN 
       TYPEOF (pd)) AND
       (pd\property_definition.description = 'modification causal'))) = 1) OR
       (SIZEOF (QUERY (mcf <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'modification causal feature') |
       (SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_INTERFACE_TERMINAL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE'] *
       TYPEOF (mcf.relating_shape_aspect)) = 1) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM' IN
       TYPEOF (mcf.relating_shape_aspect.of_shape.definition)))) = 1);
  WR3: (NOT (SELF\shape_aspect.description IN ['electrical isolation removal',
         'thermal isolation removal'])) OR (SIZEOF(
          QUERY ( pd <* USEDIN(SELF,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'PROPERTY_DEFINITION.DEFINITION') | 
         (pd\property_definition.name = 'spacing requirement')  AND
         (SIZEOF(QUERY (pdr <* USEDIN(pd,
         'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
   'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION')|
         (pdr\property_definition_relationship.name = 'spacing requirement') AND
         ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'REQUIREMENTS_PROPERTY' IN
         TYPEOF(pdr.relating_property_definition)))) = 1) ))
                = 1);
  WR4: (NOT (SELF\shape_aspect.description IN ['electrical isolation removal',
       'thermal isolation removal'])) OR
       (SIZEOF (QUERY (di <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'design intent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (di.relating_shape_aspect)) AND
       (di.relating_shape_aspect\shape_aspect.description IN ['conductive filled area',
       'connected filled area']))) = 1);
  WR5: (NOT (SELF\shape_aspect.description = 'thermal isolation removal')) OR
       (SIZEOF (QUERY (pd<* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN 
       TYPEOF (pd)) AND
       (pd\property_definition.description = 'angular orientation requirement'))) = 1);
  WR6: (NOT (SELF\shape_aspect.description = 'thermal isolation removal')) OR
       (SIZEOF (QUERY (pd<* USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN 
       TYPEOF (pd)) AND
       (pd\property_definition.description = 'effective current capacity requirement'))) = 1);
  WR7: (NOT (SELF\shape_aspect.description = 'material addition feature')) OR
       (SIZEOF (QUERY (dim <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'material addition shape') |
       (dim.relating_shape_aspect\shape_aspect.description =
       'material addition feature template'))) = 1);
END_ENTITY; -- shape_modification
(*

Formal propositions:

WR1: The shape_modification shall be related to exactly one stratum_feature as the 'design intent'.

WR2: The shape_modification shall have exactly one requirements_property with a description of 'modification causal', or it shall be related to exactly one component_shape_aspect, component_terminal, component_interface_terminal, stratum_feature, or shape_aspect of a stratum as the 'modification causal feature'.

WR3: If the shape_modification has a description of 'electrical isolation removal' or 'thermal isolation removal', it shall have exactly one requirements_property with a description of 'spacing requirement'.

WR4: If the shape_modification has a description of 'electrical isolation removal' or 'thermal isolation removal', it shall be related to exactly one stratum_feature with a description of 'conductive filled area' or 'connected filled area' as the 'design intent'.

WR5: If the shape_modification has a description of 'thermal isolation removal', it shall have exactly one requirements_property with the description of 'angular orientation requirement'.

WR6: If the shape_modification has a description of 'thermal isolation removal', it shall have exactly one requirements_property with the description of 'effective current capacity requirement'.

WR7: If the shape_modification has a description of 'material addition feature', it shall be related to exactly one 'material addition feature template'.

5.2.3.1.333 shape_representation_relationship_with_transformation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A shape_representation_relationship_with_transformation is a shape_representation_relationship and a representation_relationship_with_transformation that implements the ARM concept of Component_part_2d_non_planar_geometric_representation_relationship.

EXPRESS specification:

*)
ENTITY shape_representation_relationship_with_transformation
  SUBTYPE OF (shape_representation_relationship, representation_relationship_with_transformation);
END_ENTITY; -- shape_representation_relationship_with_transformation 
(* 

5.2.3.1.334 shell_based_2d_wireframe_shape_representation

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A shell_based_2d_wireframe_shape_representation is a shape_representation that implements the ARM concept of Shell_based_2d_wireframe.

EXPRESS specification:

*)
ENTITY shell_based_2d_wireframe_shape_representation
  SUBTYPE OF (shape_representation);
WHERE
  WR1: SIZEOF (QUERY (it <* SELF\representation.items |
       NOT (SIZEOF ( 
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_2D'] *
       TYPEOF (it)) = 1))) = 0;
  WR2: SIZEOF (QUERY (it <* SELF\representation.items |
       SIZEOF ( 
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM'] * 
       TYPEOF (it)) = 1)) >= 1;
  WR3: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <* 
       sbwm\shell_based_wireframe_model.sbwm_boundary |                  
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (eloop <* QUERY (wsb <*
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_LOOP' IN TYPEOF (wsb)) | 
       NOT (SIZEOF (QUERY (el <* eloop\path.edge_list |
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_CURVE' IN
       TYPEOF (el.edge_element)))) = 0))) = 0))) = 0))) = 0;
  WR4: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
       sbwm\shell_based_wireframe_model.sbwm_boundary |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (eloop <* QUERY (wsb <*
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_LOOP' IN TYPEOF (wsb)) |
       NOT (SIZEOF (QUERY (pline_el <*  QUERY (el <* eloop\path.edge_list |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'POLYLINE' IN
       TYPEOF (el.edge_element\edge_curve.edge_geometry)) |
       NOT (SIZEOF (pline_el.edge_element\edge_curve.
       edge_geometry\polyline.points) > 2))) = 0))) = 0))) = 0))) = 0;
  WR5: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
       sbwm\shell_based_wireframe_model.sbwm_boundary |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (eloop <* QUERY (wsb <* 
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_LOOP' IN TYPEOF (wsb)) |
       NOT (SIZEOF (QUERY (el <* eloop\path.edge_list |
       NOT (valid_2d_wireframe_edge_curve
       (el.edge_element\edge_curve.edge_geometry,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN')))) =
       0))) = 0))) = 0))) = 0;
  WR6: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
       sbwm\shell_based_wireframe_model.sbwm_boundary |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (eloop <* QUERY (wsb <*
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_LOOP' IN TYPEOF (wsb)) |
       NOT (SIZEOF (QUERY (el <* eloop\path.edge_list |
       NOT (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_POINT' IN
       TYPEOF (el.edge_element.edge_start)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_POINT' IN
       TYPEOF (el.edge_element.edge_end))) )) = 0))) = 0))) = 0))) = 0;
  WR7: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
       sbwm\shell_based_wireframe_model.sbwm_boundary |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (eloop <* QUERY (wsb <*
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_LOOP' IN TYPEOF (wsb)) |
       NOT (SIZEOF (QUERY (el <* eloop\path.edge_list |
       NOT ((valid_wireframe_vertex_point 
       (el.edge_element.edge_start\vertex_point.vertex_geometry)) AND
       (valid_wireframe_vertex_point
       (el.edge_element.edge_end\vertex_point.vertex_geometry))))) =
       0))) = 0))) = 0))) = 0;
  WR8: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF (it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
       sbwm\shell_based_wireframe_model.sbwm_boundary |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (eloop <* QUERY (wsb <*
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_LOOP' IN TYPEOF (wsb)) |
       NOT (SIZEOF (QUERY (con_edges <* QUERY (el <* eloop\path.edge_list |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'CONIC' IN
       TYPEOF (el.edge_element\edge_curve.edge_geometry)) | 
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'AXIS2_PLACEMENT_2D' IN
       TYPEOF (con_edges.edge_element\edge_curve.
       edge_geometry\conic.position)))) = 0))) = 0))) = 0))) = 0;
  WR9: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
       TYPEOF(it)) |
       NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
       sbwm\shell_based_wireframe_model.sbwm_boundary |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
       NOT (SIZEOF (QUERY (vloop <* QUERY (wsb <*
       ws\wire_shell.wire_shell_extent |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_LOOP' IN TYPEOF (wsb)) |
       NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_POINT' IN
       TYPEOF (vloop\vertex_loop.loop_vertex)))) = 0))) = 0))) = 0;
  WR10: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
        TYPEOF(it)) |
        NOT (SIZEOF (QUERY (ws <* QUERY (sb <*
        sbwm\shell_based_wireframe_model.sbwm_boundary |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'WIRE_SHELL' IN TYPEOF (sb)) |
        NOT (SIZEOF (QUERY (vloop <* QUERY (wsb <*
        ws\wire_shell.wire_shell_extent |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_LOOP' IN TYPEOF (wsb)) |
        NOT (valid_wireframe_vertex_point (vloop\vertex_loop.
        loop_vertex\vertex_point.vertex_geometry)))) =
        0))) = 0))) = 0;
  WR11: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
        TYPEOF(it)) |
        NOT (SIZEOF (QUERY (vs <* QUERY (sb <*
        sbwm\shell_based_wireframe_model.sbwm_boundary |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_SHELL' IN TYPEOF (sb)) |
        NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_POINT' IN
        TYPEOF (vs\vertex_shell.vertex_shell_extent.loop_vertex)))) 
        = 0))) = 0;
  WR12: SIZEOF (QUERY (sbwm <* QUERY (it <* SELF\representation.items |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHELL_BASED_WIREFRAME_MODEL' IN
        TYPEOF(it)) |
        NOT (SIZEOF (QUERY (vs <* QUERY (sb <*
        sbwm\shell_based_wireframe_model.sbwm_boundary |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VERTEX_SHELL' IN TYPEOF (sb)) |
        NOT (valid_wireframe_vertex_point (vs\vertex_shell.
        vertex_shell_extent.loop_vertex\vertex_point.vertex_geometry))))
        = 0))) = 0;
  WR13: SIZEOF (QUERY (mi <* QUERY (it <* SELF\representation.items |
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MAPPED_ITEM' IN TYPEOF (it)) |
        NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
        'SHELL_BASED_2D_WIREFRAME_SHAPE_REPRESENTATION' IN
        TYPEOF(mi\mapped_item.mapping_source.mapped_representation)
        ))) = 0;
  WR14: SELF.context_of_items\geometric_representation_context.
        coordinate_space_dimension = 2;
END_ENTITY; -- shell_based_2d_wireframe_shape_representation
(*

Formal propositions:

WR1: The items in a shell_based_2d_wireframe_shape_representation shall be a shell_based_wireframe_model, a mapped_item, or an axis2_placement_2d.

WR2: At least one of the items in a shell_based_2d_wireframe_shape_representation shall be either a shell_based_wireframe_model or a mapped_item.

WR3: Every edge defined for an edge_loop in a shell_based_wireframe_model shall be an edge_curve.

WR4: Every polyline that underlies an edge in a shell_based_wireframe_model shall contain more than two distinct points.

WR5: The edge_geometry that underlies an edge for a shell_based_wireframe_model shall be a line, circle, ellipse, parabola, hyperbola, b_spline_curve, offset_curve_2d, polyline, or curve_replica and the curves that have a basis defined by other curves shall be defined consistently.

WR6: Every vertex defined as the start or end vertex for an edge in a shell_based_wireframe_model shall be a vertex_point.

WR7: The vertex_geometry that underlies the vertices that define the boundaries of the edges in an edge_loop for a shell_based_wireframe_model shall be a cartesian_point or point_replica, and the point_replica shall replicate either another point_replica or a cartesian_point.

WR8: The position of a conic that underlies an edge in an edge_loop for a shell_based_wireframe_model shall only be an axis2_placement_2d.

WR9: The vertex that defines the vertex_loop which is used as a bound in a shell_based_wireframe_model shall be a vertex_point.

WR10: The vertex that defines the vertex_loop which is used as a bound in a shell_based_wireframe_model shall be underlaid by a cartesian_point or point_replica, and the point_replica shall replicate either another point_replica or a cartesian_point.

WR11: The vertex that defines the vertex_loop which is used as the vertex_shell_extent for a vertex_shell in a shell_based_wireframe_model shall be a vertex_point.

WR12: The vertex that defines the vertex_loop which is used as the vertex_shell_extent for a vertex_shell in a shell_based_wireframe_model shall be underlaid by a cartesian_point or point_replica, and the point_replica shall replicate either another point_replica or a cartesian_point.

WR13: If there is a mapped_item in a shell_based_2d_wireframe_shape_representation, the source of the mapped_item shall be a shell_based_2d_wireframe_shape_representation.

WR14: The dimensionality of the shell_based_2d_wireframe_shape_representation is two.

5.2.3.1.335 signal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A signal is a characterized_object that implements the ARM concept of Signal.

EXPRESS specification:

*)
ENTITY signal
  SUBTYPE OF (characterized_object);
WHERE
  WR1: SIZEOF (QUERY (aca <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_CLASSIFICATION_ASSIGNMENT.ITEMS') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SIGNAL_CATEGORY' IN
       TYPEOF (aca.assigned_group))) >= 1;
  WR2: (SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       SIZEOF (QUERY (duc <* USEDIN (ada.assigned_document,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DOCUMENT_USAGE_CONSTRAINT.SOURCE') |
       duc\document_usage_constraint.subject_element = 'signal category')) = 1)) = 1);
  WR3: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) = 1;
END_ENTITY; -- signal
(*

Formal propositions:

WR1: The signal shall be classified in at least one signal_category.

WR2: The signal shall be referenced by exactly one document that has a usage constraint that identifies the 'signal category'.

WR3: The signal shall be referenced by exactly one document.

5.2.3.1.336 signal_category

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A signal_category is a group and an externally_defined_item that specifies the External_definition for a Signal_property.

EXPRESS specification:

*)
ENTITY signal_category
  SUBTYPE OF (group, externally_defined_item);
WHERE
  WR1: SELF\group.description IN ['signal characteristic category', 
       'signal property category'];
END_ENTITY; -- signal_category
(*

Formal propositions:

WR1: The signal_category shall have a group description of either 'signal characteristic category' or 'signal property category'.

5.2.3.1.337 solid_curve_font

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A solid_curve_font is a pre_defined_curve_font that implements the ARM concept of Solid_curve.

EXPRESS specification:

*)
ENTITY solid_curve_font
 SUBTYPE OF (pre_defined_curve_font);
END_ENTITY; -- solid_curve_font
(*

5.2.3.1.338 start_request

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A start_request is a formal notification of a desire to begin a new design for a product or group of s.

EXPRESS specification:

*)
ENTITY start_request
 SUBTYPE OF (action_request_assignment);
     items : SET [1:?] OF start_request_item;
END_ENTITY; -- start_request
(*

5.2.3.1.339 start_work

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A start_work identifies the s that have been fulfilled and, as a result, have established a new version of a product.

EXPRESS specification:

*)
ENTITY start_work
 SUBTYPE OF (action_assignment);
     items : SET [1:?] OF work_item;
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DIRECTED_ACTION' IN 
       TYPEOF (SELF.assigned_action);
END_ENTITY; -- start_work
(*

Formal propositions:

WR1: The start_work shall assign a directed_action.

5.2.3.1.340 statistical_dimensional_location

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A statistical_dimensional_location is a dimensional_location that implements the combination of the ARM concepts Statistical_dimensional_tolerance and Dimensional_location.

EXPRESS specification:

*)
ENTITY statistical_dimensional_location
 SUBTYPE OF (dimensional_location);
END_ENTITY; -- statistical_dimensional_location
(*

Informal propositions:

IP1: The statistical_dimensional_location shall have exactly one property_definition with a description of 'dimensional location property', and that property_definition shall be related to at most one property_definition, of a dimensional_location, with a description of 'dimensional location property' as the 'substitutable dimension'.

IP2: The statistical_dimensional_location shall have exactly one property_definition with a description of 'dimensional location property', and that property_definition shall relate to a requirements_property to specify the 'dimensional tolerance statistical control requirement'.

IP3: The statistical_dimensional_location shall have exactly one property_definition with a description of 'dimensional location property', and if that property_definition is related to a property_definition, of a dimensional_location, with a description of 'dimensional location property' as the 'substitutable dimension', that dimensional_location shall not be a statistical_dimensional_location.

IP4: The statistical_dimensional_location shall have exactly one property_definition with a description of 'dimensional location property', and if that property_definition is related to a property_definition, of a dimensional_location, with a description of 'dimensional location property' as the 'substitutable dimension', both the statistical_dimensional_location and the dimensional_location shall specify the same two shape_aspects as the related_shape_aspect and the relating_shape_aspect.

5.2.3.1.341 statistical_dimensional_size

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A statistical_dimensional_size is a dimensional_size_property that implements the combination of the ARM concepts Statistical_dimensional_tolerance and Dimensional_size.

EXPRESS specification:

*)
ENTITY statistical_dimensional_size
 SUBTYPE OF (dimensional_size_property);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DIMENSIONAL_SIZE' IN 
       TYPEOF (pdr.related_property_definition)) AND
       (pdr\property_definition_relationship.name = 'substitutable dimension'))) 
       <= 1))) <= 1;       
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN 
       TYPEOF (pdr.related_property_definition)) AND
       (pdr\property_definition_relationship.name = 
        'dimensional tolerance statistical control requirement')))
       <= 1))) <= 1;       
  WR3: (NOT(SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DIMENSIONAL_SIZE' IN 
       TYPEOF (pdr.related_property_definition)) AND
       (pdr\property_definition_relationship.name = 'substitutable dimension'))) 
       <= 1))) <= 1))
       OR (NOT(SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DIMENSIONAL_SIZE' IN 
       TYPEOF (pdr.related_property_definition)) AND
       (NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STATISTICAL_DIMENSIONAL_SIZE' IN 
       TYPEOF (pdr.related_property_definition))) AND
       (pdr\property_definition_relationship.name = 'substitutable dimension'))) 
       <= 1))) <= 1));     
END_ENTITY; -- statistical_dimensional_size
(*

Formal propositions:

WR1: The statistical_dimensional_size shall be related to at most one dimensional_size as the 'substitutable dimension'.

WR2: The statistical_dimensional_size shall relate to a requirements_property to specify the 'dimensional tolerance statistical control requirement'.

WR3: If the statistical_dimensional_size is related to a dimensional_size, as the 'substitutable dimension', that dimensional_size shall not be a statistical_dimensional_size.

Informal propositions:

IP1: If the statistical_dimensional_size is related to a dimensional_size as the 'substitutable dimension', both the statistical_dimensional_size and the dimensional_size shall apply to the same shape_aspect.

5.2.3.1.342 statistical_geometric_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A statistical_geometric_tolerance is a physical_unit_geometric_tolerance that implements the ARM concept of Statistical_geometric_tolerance.

EXPRESS specification:

*)
ENTITY statistical_geometric_tolerance
  SUBTYPE OF (physical_unit_geometric_tolerance);
WHERE
  WR1: SIZEOF(QUERY(gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') | 
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT_GEOMETRIC_TOLERANCE' IN
       TYPEOF(gtr.relating_geometric_tolerance)) AND
       (gtr\geometric_tolerance_relationship.name = 'substitutable geometric tolerance')
       )) <= 1;
  WR2: SIZEOF(QUERY(pdr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') | 
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN
       TYPEOF(pdr.related_property_definition)) AND
       (pdr\property_definition_relationship.name = 'geometric tolerance statistical control requirement')
       )) = 1;
  WR3: SIZEOF(QUERY(gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') | 
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STATISTICAL_GEOMETRIC_TOLERANCE' IN
       TYPEOF(gtr.relating_geometric_tolerance)) AND
       (gtr\geometric_tolerance_relationship.name = 'substitutable geometric tolerance')
       )) <= 0;
END_ENTITY; -- statistical_geometric_tolerance
(*

Formal propositions:

WR1: The statistical_geometric_tolerance shall be related to at most one physical_unit_geometric_tolerance as the 'substitutable geometric tolerance'.

WR2: The statistical_geometric_tolerance shall relate to exactly one requirements_property to specify the 'geometric tolerance statistical control requirement'.

WR3: The statistical_geometric_tolerance shall be related to exactly zero statistical_geometric_tolerance as the 'substitutable geometric tolerance'.

Informal propositions:

IP1: If the statistical_geometric_tolerance is related to exactly one physical_unit_geometric_tolerance as the 'substitutable geometric tolerance', the statistical_geometric_tolerance and the physical_unit_geometric_tolerance shall specify the same shape_aspect as their toleranced_shape_aspect.

5.2.3.1.343 stratum

A stratum is a product_definition that implements the ARM concepts of:
  • Design_layer_stratum
  • Documentation_layer_stratum
  • Stratum

EXPRESS specification:

*)
ENTITY stratum
 SUBTYPE OF (product_definition);
UNIQUE
  UR1: SELF\product_definition.id, SELF\product_definition.formation;
WHERE
  WR1: EXISTS(SELF\product_definition.name);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'technology usage') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
       TYPEOF (tu.relating_property_definition.definition))) = 1)) = 1;
  WR3: (SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       SIZEOF (QUERY (duc <* USEDIN (ada.assigned_document,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DOCUMENT_USAGE_CONSTRAINT.SOURCE') |
       duc\document_usage_constraint.subject_element = 'attachment region size')) = 1)) <= 1) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'stratum usage') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNAL_DEFINITION' IN 
       TYPEOF (tu.relating_property_definition))) = 1)) <= 1);
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = '3d bound volume shape')) <= 1))) 
       = 0;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (sr_pdr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION' IN 
       TYPEOF (pdr.used_representation)) |
       sr_pdr.used_representation\representation.name = 
                  'planar projected shape')) <= 1))) = 0;
  WR6: SIZEOF (QUERY (acu <* QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ASSEMBLY_COMPONENT_USAGE' IN
       TYPEOF (pdr)) |
       acu\product_definition_relationship.name = 'interconnect module stratum assembly relationship'
       )) >= 1;
  WR7: NOT(SELF\product_definition.name = 'design layer') OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'technology usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
       TYPEOF (tu.relating_property_definition.definition)) AND
       (tu.relating_property_definition.definition\characterized_object.description =
       'design layer'))) = 1)) = 1);
  WR8: NOT(SELF\product_definition.name = 'design layer') OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (sa <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAYER_CONNECTION_POINT' IN
       TYPEOF (sa))) >= 1)) >= 1);
  WR9: NOT(SELF\product_definition.name = 'documentation layer') OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (tu <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr\property_definition_relationship.name = 'technology usage') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
       TYPEOF (tu.relating_property_definition.definition)) AND
       (tu.relating_property_definition.definition\characterized_object.description =
       'documentation layer'))) = 1)) = 1);
  WR10: NOT(SELF\product_definition.name = 'design layer') OR
       ((NOT(SELF\product_definition.description = 'primary design layer stratum') OR 
       (SIZEOF(QUERY(imps <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (sa <* USEDIN (imps,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       SIZEOF (QUERY (sar <* USEDIN (sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN
       TYPEOF (sar.relating_shape_aspect)) AND 
        (sar.relating_shape_aspect\shape_aspect.description = 
       'interconnect module primary surface'))) >= 0)) >= 0)) = 1)) OR 
       (NOT (SELF\product_definition.description = 'non primary design layer stratum') OR
       (SIZEOF(QUERY(imps <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (QUERY (sa <* USEDIN (imps,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT.OF_SHAPE') |
       SIZEOF(QUERY (sar <* USEDIN (sa,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT' IN
       TYPEOF (sar.relating_shape_aspect)) AND
        (sar.relating_shape_aspect\shape_aspect.description =
       'interconnect module primary surface'))) >= 0)) >= 0)) = 0)));
END_ENTITY; -- stratum
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique in the context of the version of the product.

WR1: The name shall exist.

WR2: The stratum shall have exactly one property_definition that is related to a property_definition of a stratum_technology as the 'technology usage'.

WR3: The stratum shall be referenced by at most one document with a usage constraint that specifies the 'attachment region size', or it shall have at most one property that is related to an external_definition as the 'stratum usage'.

WR4: The stratum shall have at most one shape_representation with a name of '3d bound volume shape'.

WR5: The stratum shall have at most one shape_representation with a name of 'planar projected shape'.

WR6: The stratum shall be the component in at least one assembly_component_usage as the 'interconnect module stratum assembly relationship'.

WR7: If the stratum is a definition of a product that has a name of 'design layer', it shall have exactly one property_definition that is related to exactly one property_definition of a stratum_technology with a description of 'design layer' as the 'technology usage'.

WR8: If the stratum is a definition of a product that has a name of 'design layer', it shall have at least one layer_connection_point.

WR9: If the stratum is a definition of a product that has a name of 'documentation layer', it shall have exactly one property_definition that is related to exactly one property_definition of a stratum_technology with a description of 'documentation layer' as the 'technology usage'.

WR10: If the stratum is a definition of a product that has a name of 'design layer', then either the description shall be 'primary design layer stratum' and it shall be assigned to an interconnect module primary surface, or the description shall be 'non primary design layer stratum' and it shall not be assigned to an interconnect module primary surface.

5.2.3.1.344 stratum_concept_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_concept_relationship is a shape_aspect and a shape_aspect_relationship that implements the ARM concepts of:
  • Dielectric_crossover_area
  • Inter_stratum_join_implementation
  • Physical_network_supporting_stratum_feature_conductive_join
  • Stratum_concept_relationship
  • Stratum_feature_conductive_join

EXPRESS specification:

*)
ENTITY stratum_concept_relationship
  SUBTYPE OF (shape_aspect, shape_aspect_relationship);
WHERE
  WR1: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REQUIREMENTS_PROPERTY' IN
       TYPEOF (pd))) >= 1; 
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       SIZEOF (USEDIN (pd, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION')) = 1)) = 1;
  WR3: (NOT (SELF\shape_aspect_relationship.name = 
       'dielectric crossover area')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN 
       TYPEOF (SELF.relating_shape_aspect)) AND
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (SELF.related_shape_aspect)));
  WR4: (NOT (SELF\shape_aspect_relationship.name = 
       'dielectric crossover area')) OR
       (SIZEOF (QUERY (rdc <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'resulting dielectric crossover') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_FEATURE' IN
       TYPEOF (rdc.relating_shape_aspect)))) = 1);
  WR5: (NOT (SELF\shape_aspect_relationship.name = 
       'stratum feature conductive join')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN 
       TYPEOF (SELF.relating_shape_aspect)) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF.relating_shape_aspect)) AND
       (SELF.relating_shape_aspect\shape_aspect.description = 
       'stratum feature template component')));
  WR6: (NOT (SELF\shape_aspect_relationship.name = 
       'stratum feature conductive join')) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LAND' IN 
       TYPEOF (SELF.related_shape_aspect)) OR
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT' IN
       TYPEOF (SELF.related_shape_aspect)) AND
       (SELF.related_shape_aspect\shape_aspect.description = 
       'stratum feature template component')));
  WR7: (NOT (SELF\shape_aspect_relationship.name =
       'stratum feature conductive join')) OR
       (SIZEOF (QUERY (fj <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'features join') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PLATED_PASSAGE' IN
       TYPEOF (fj.related_shape_aspect)) AND
       (fj.related_shape_aspect\shape_aspect.description =
       'bonded conductive base blind via'))) <= 1);
  WR8: (NOT ((SELF\shape_aspect.description =
       'physical network supporting stratum feature conductive join') AND
       (SELF\shape_aspect_relationship.name =
       'stratum feature conductive join'))) OR
       (SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name =
       'inter stratum join'))) = 1);
END_ENTITY; -- stratum_concept_relationship
(*

Formal propositions:

WR1: The stratum_concept_relationship shall have at least one requirements_property.

WR2: The stratum_concept_relationship shall have exactly one property_definition that is represented.

WR3: If the stratum_concept_relationship has a shape_aspect_relationship name of 'dielectric crossover area', it shall relate two stratum_features.

WR4: If the stratum_concept_relationship has a shape_aspect_relationship name of 'dielectric crossover area', the stratum_concept_relationship shall be related to exactly one stratum_feature as a 'resulting dielectric crossover'.

WR5: If the stratum_concept_relationship has a shape_aspect_relationship name of 'stratum feature conductive join', it shall have a relating_shape_aspect that is either a land or a component_definition with a description of 'stratum feature template component'.

WR6: If the stratum_concept_relationship has a shape_aspect_relationship name of 'stratum feature conductive join', it shall have a related_shape_aspect that is either a land or a component_definition with a description of 'stratum feature template component'.

WR7: If the stratum_concept_relationship has a shape_aspect_relationship name of 'stratum feature conductive join', the stratum_concept_relationship shall relate to at most one plated_passage that has a description of 'bonded conductive base blind via' to specify the 'features join'.

WR8: If the stratum_concept_relationship has a shape_aspect description of 'physical network supporting stratum feature conductive join' and a shape_aspect_relationship name of 'stratum feature conductive join', the stratum_concept_relationship shall be related, as the 'join implementation', to exactly one join_shape_aspect that has a name of 'inter stratum join'.

5.2.3.1.345 stratum_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_feature is a shape_aspect that implements the ARM concepts of:
  • Conductive_filled_area
  • Conductor
  • Connected_filled_area
  • Stratum_feature

EXPRESS specification:

*)
ENTITY stratum_feature
  SUPERTYPE OF (fiducial_stratum_feature)
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM' IN
       TYPEOF (SELF.of_shape.definition);
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'feature of size') AND
       (it\descriptive_representation_item.description IN 
             ['true', 'false']))) = 1)) = 1))) = 0;
  WR3: (NOT(EXISTS(SELF\shape_aspect.description))) OR
       (NOT (SELF\shape_aspect.description = 'conductor') OR
       (SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name = 
       'intra stratum join'))) = 1));
  WR4: (NOT(EXISTS(SELF\shape_aspect.description))) OR
       (NOT (SELF\shape_aspect.description = 'connected filled area') OR
       (SIZEOF (QUERY (ji <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'join implementation') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'JOIN_SHAPE_ASPECT' IN
       TYPEOF (ji.relating_shape_aspect)) AND
       (ji.relating_shape_aspect\shape_aspect.name = 
       'intra stratum join'))) = 1));
  WR5: (NOT(EXISTS(SELF\shape_aspect.description))) OR
       (NOT (SELF\shape_aspect.description = 'conductor') OR
       (SELF\shape_aspect.of_shape.definition.name = 'design layer'));
  WR6: (NOT(EXISTS(SELF\shape_aspect.description))) OR
       (NOT (SELF\shape_aspect.description = 'connected filled area') OR
       (SELF\shape_aspect.of_shape.definition.name = 'design layer'));
END_ENTITY; -- stratum_feature
(*

Formal propositions:

WR1: The stratum_feature shall be an aspect of the shape of a stratum.

WR2: The stratum_feature shall have exactly one representation that specifies if the stratum_feature is a 'feature of size'.

WR3: If the stratum_feature has a description of 'conductor', it shall be related to exactly one join_shape_aspect with a name of 'intra stratum join' as the 'join implementation'.

WR4: If the stratum_feature has a description of 'connected filled area', it shall be related to exactly one join_shape_aspect with a name of 'intra stratum join' as the 'join implementation'.

WR5: If the stratum_feature has a description of 'conductor', it shall be related to a 'design layer'.

WR6: If the stratum_feature has a description of 'connected filled area ', it shall be related to a 'design layer'.

5.2.3.1.346 stratum_occurrence_specific_padstack_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_occurrence_specific_padstack_definition is a product_definition that implements the ARM concepts of: Stratum_occurrence_specific_padstack_definition

EXPRESS specification:

*)
ENTITY stratum_occurrence_specific_padstack_definition 
 SUBTYPE OF (padstack_definition);
END_ENTITY; -- stratum_occurrence_specific_padstack_definition 
(*

5.2.3.1.347 stratum_surface

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_surface is a shape_aspect that implements the ARM concepts of Stratum_surface and Stratum_average_surface.

EXPRESS specification:

*)
ENTITY stratum_surface
  SUBTYPE OF (shape_aspect);
WHERE
    WR1: SELF\shape_aspect.description IN ['primary surface',
         'secondary surface', 'average surface']; 
    WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
         'STRATUM' IN TYPEOF(SELF\shape_aspect.of_shape.definition);
END_ENTITY; -- stratum_surface
(*

Formal propositions:

WR1: The stratum_surface shall have a description of 'primary surface', 'secondary surface', or 'average surface'.

WR2: The stratum_surface shall be the shape of a stratum.

5.2.3.1.348 stratum_technology

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_technology is a characterized_object that implements the ARM concepts of:
  • Design_layer_technology
  • Documentation_layer_technology
  • Stratum_technology

EXPRESS specification:

*)
ENTITY stratum_technology
  SUBTYPE OF (characterized_object);
UNIQUE
  UR1: SELF\characterized_object.name;
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MATERIAL_DESIGNATION.DEFINITIONS')) = 1;
  WR2: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'stiffness class representation')) <= 1))) = 0;
  WR3: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation')) = 1))) = 1;
  WR4: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (scr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 'stratum class representation') |
       NOT (SIZEOF (QUERY (it <* scr.used_representation.items | 
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM'
       IN TYPEOF (it)) AND
       (it\representation_item.name = 'laminate stiffness class') AND
       (it\descriptive_representation_item.description IN ['fluid like', 'conformal coat', 
       'stiff laminate']))) = 1))) = 0))) = 0;
  WR5: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT ({2 <= SIZEOF (pcr.used_representation.items) 
        <= 8}))) = 0))) = 0;
  WR6: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items | 
       NOT (it\representation_item.name IN ['layer purpose', 
       'layer position', 
       'maximum feature size requirement', 
       'minimum finished feature spacing', 
       'minimum finished feature size', 
       'maximum thickness',  
       'minimum thickness']))) = 0))) = 0))) = 0;
  WR7: NOT(EXISTS(SELF\characterized_object.description)) OR
       (NOT (SELF\characterized_object.description = 'design layer') OR 
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'minimum finished feature size'))) = 1))) = 0))) = 0));
  WR8: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'maximum thickness'))) = 1))) = 0))) = 0;
  WR9: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'minimum thickness'))) = 1))) = 0))) = 0;
 WR10: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'maximum feature size requirement'))) <= 1))) = 0))) = 0;
 WR11: SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'minimum finished feature spacing'))) <= 1))) = 0))) = 0;
 WR12: NOT(EXISTS(SELF\characterized_object.description)) OR
       ((NOT (SELF\characterized_object.description = 'documentation layer')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'layer purpose'))) = 1))) = 0))) = 0));
 WR13: NOT(EXISTS(SELF\characterized_object.description)) OR
       ((NOT (SELF\characterized_object.description = 'design layer')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] *
       TYPEOF (it)) = 2) AND
       (it\representation_item.name = 'minimum finished feature spacing'))) = 1))) = 0))) = 0));
 WR14: NOT(EXISTS(SELF\characterized_object.description)) OR
       ((NOT (SELF\characterized_object.description = 'design layer')) OR
       (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'layer purpose') AND
       (it\descriptive_representation_item.description IN ['power or ground', 'other signal', 
       'lands only']))) = 1))) = 0))) = 0));
 WR15:  SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pcr <* QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       pdr.used_representation\representation.name = 
       'physical characteristics representation') |
       NOT (SIZEOF (QUERY (it <* pcr.used_representation.items |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'DESCRIPTIVE_REPRESENTATION_ITEM' IN
       TYPEOF (it)) AND
       (it\representation_item.name = 'layer position') AND
       (it\descriptive_representation_item.description IN [
        'primary', 
        'secondary', 
        'internal', 
        'external', 
        'all']))) = 1))) = 0))) = 0;
 WR16: NOT(EXISTS(SELF\characterized_object.description)) OR
        (SELF\characterized_object.description IN [
         'design layer',
         'documentation layer']);
END_ENTITY; -- stratum_technology
(*

Formal propositions:

Formal propositions:

WR1: The name shall be unique.

WR1: The stratum_technology shall have exactly one material designation.

WR2: The stratum_technology shall have at most one representation with a name of 'stiffness class representation'.

WR3: The stratum_technology shall have exactly one representation with a name of 'physical characteristics representation'.

WR4: Exactly one item in the representation with a name of 'stiffness class representation' shall be a descriptive_representation_item with a name of 'laminate stiffness class' and a description of 'fluid like', 'conformal coat', or 'stiff laminate'.

WR5: The stratum_technology shall have at least two and at most eight items in its representation with a name of 'physical characteristics representation'.

WR6: The items in the representation with a name of 'physical characteristics representation' of a stratum_technology shall have a name of either 'documentation layer purpose', 'design layer purpose', 'design layer position', 'maximum feature size requirement', 'minimum finished feature spacing', 'minimum finished feature size', 'maximum stratum thickness', or 'minimum stratum thickness'.

WR7: Exactly one item in the representation with a name of 'physical characteristics representation' of a stratum_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum finished feature size'.

WR8: Exactly one item in the representation with a name of 'physical characteristics representation' of a stratum_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'maximum stratum thickness'.

WR9: Exactly one item in the representation with a name of 'physical characteristics representation' of a stratum_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum stratum thickness'.

WR10: At most one item in the representation with a name of 'physical characteristics representation' of a stratum_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'maximum feature size requirement'.

WR11: At most one item in the representation with a name of 'physical characteristics representation' of a stratum_technology shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum finished feature spacing'.

WR12: If the stratum_technology has a description of 'documentation layer', exactly one item in its representation with a name of 'physical characteristics representation' shall be a descriptive_representation_item with a name of 'layer purpose'.

WR13: If the stratum_technology has a description of 'design layer', exactly one item in its representation with a name of 'physical characteristics representation' shall be a measure_representation_item and a length_measure_with_unit with a name of 'minimum finished feature spacing'.

WR14: If the stratum_technology has a description of 'design layer', exactly one item in its representation with a name of 'physical characteristics representation' shall be a descriptive_representation_item with a name of 'layer purpose' and a description of 'power or ground', 'other signal', or 'lands only'.

WR15: If the stratum_technology has a description of 'design layer', exactly one item in its representation with a name of 'physical characteristics representation' shall be a descriptive_representation_item with a name of 'layer position' and a description of 'primary', 'secondary', 'all', 'external' or 'internal'.

WR16: If the description attribute exists, it shall be either 'design layer' or 'documentation layer'.

5.2.3.1.349 stratum_technology_link

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_technology_link is a property_definition_relationship that implements the ARM concept of Stratum_technology_link

EXPRESS specification:

*)
ENTITY stratum_technology_link
  SUPERTYPE OF ( printed_part_template_link)
  SUBTYPE OF (property_definition, property_definition_relationship);
WHERE
  WR1: SELF\property_definition_relationship.related_property_definition.definition :<>:
       SELF\property_definition_relationship.relating_property_definition.definition;
  WR2: (SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\property_definition_relationship ||
       SELF\stratum_technology_link || SELF\property_definition)) = 0) OR
        ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_LINK' IN TYPEOF(SELF));
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
    TYPEOF(SELF\property_definition_relationship.related_property_definition.definition);
  WR4: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRATUM_TECHNOLOGY' IN 
    TYPEOF(SELF\property_definition_relationship.relating_property_definition.definition);
  WR5: SELF\property_definition.name = '';
  WR6: SELF\property_definition.description = '';
  WR7: SELF\property_definition_relationship.name = '';
  WR8: SELF\property_definition_relationship.description = '';
  WR9: ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PART_TEMPLATE_DEFINITION' IN TYPEOF(SELF\property_definition.definition)) AND
       (SELF\property_definition.definition.description = 'printed part template');
 WR10: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATING_PROPERTY_DEFINITION') |
       pdr.name = 'precedent stratum technology link')) <= 1; 
 WR11: SIZEOF (QUERY (pdr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_RELATIONSHIP.RELATED_PROPERTY_DEFINITION') |
       pdr.name = 'precedent stratum technology link')) <= 1; 
END_ENTITY; -- stratum_technology_link
(*

Formal propositions:

WR1: The stratum_technology_link shall not relate to the same property_definition definition through the related and relating attributes.

WR2: The stratum_technology_link shall not be any other subtype of property_definition_relationship or property_definition.

WR3: The stratum_technology_link shall reference only a stratum_technology through the related attribute.

WR4: The stratum_technology_link shall reference only a stratum_technology through the relating attribute.

WR5: The stratum_technology_link name inherited from property_definition shall be blank.

WR6: The stratum_technology_link description inherited from property_definition shall be blank.

WR7: The stratum_technology_link name inherited from property_definition_relationship shall be blank.

WR8: The stratum_technology_link description inherited from property_definition_relationship shall be blank.

WR9: The stratum_technology_link shall be referenced exactly once by a part_template_definition that has a description of 'printed part template'.

WR10: The stratum_technology_link shall be referenced as a relating_property_definition no more than once by another stratum_technology_link.

WR11: The stratum_technology_link shall be referenced as a related_property_definition no more than once by another stratum_technology_link.

NOTE: The stratum_technology_link that is not referenced as a related_property_definition but that is referenced by a relating_property_definition attribute of a property_definition_relationship with a name of 'precedent stratum technology link' is considered the initial link. The stratum_technology itself has no instance information and the sequence is only defined for printed part template purposes. The actual stackup in the interconnect is not formally constrained in this standard.

5.2.3.1.350 stratum_type_independent_padstack_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A stratum_type_independent_padstack_definition is a product_definition that implements the ARM concepts of: Stratum_type_independent_padstack_definition

EXPRESS specification:

*)
ENTITY stratum_type_independent_padstack_definition 
 SUBTYPE OF (padstack_definition);
END_ENTITY; -- stratum_type_independent_padstack_definition 
(*

5.2.3.1.351 structured_text_representation_context

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A structured_text_representation_context is a context that implements the ARM concept of Structured_text in association with the structured_text_representation_item.

EXPRESS specification:

*)
ENTITY structured_text_representation_context
  SUBTYPE OF (representation_context);
WHERE
  WR1: SIZEOF (QUERY (rep <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION.CONTEXT_OF_ITEMS') | NOT (
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRUCTURED_TEXT_REPRESENTATION_ITEM' IN
       TYPEOF (rep)))) = 0;
END_ENTITY; -- structured_text_representation_context
(*

Formal propositions:

WR1: The structured_text_representation_context shall only be a context for representations that contain structured_text_representation_items.

5.2.3.1.352 structured_text_representation_item

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A structured_text_representation_item is a representation and a descriptive_representation_item that implements the ARM concept of Structured_text.

EXPRESS specification:

*)
ENTITY structured_text_representation_item
  SUBTYPE OF (representation, descriptive_representation_item);
WHERE
  WR1: SIZEOF (QUERY (rr <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'REPRESENTATION_RELATIONSHIP.REP_2') |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'STRUCTURED_TEXT_REPRESENTATION_ITEM' IN
       TYPEOF (rr.rep_1) ))<= 1;
  WR2: SIZEOF (USEDIN (SELF, 
        'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'APPLIED_DOCUMENT_REFERENCE.ITEMS')) >= 1;
  WR3: (SIZEOF (QUERY (it <* SELF\representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EXTERNALLY_DEFINED_REPRESENTATION_ITEM' IN 
       TYPEOF (it))) = 1); 
END_ENTITY; -- structured_text_representation_item
(*

Formal propositions:

WR1: The structured_text_representation_item shall relate to at most one structured_text_representation_item through a representation_relationship.

WR2: The structured_text_representation_item shall be referenced by at least one document.

WR3: The structured_text_representation_item shall contain exactly one externally_defined_representation_item.

5.2.3.1.353 supplied_part_relationship

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A supplied_part_relationship relates the identifications of two s and specifies that one is the identification used by the internal design organization and the other is the identification used by a supplier.

EXPRESS specification:

*)
ENTITY supplied_part_relationship
 SUBTYPE OF (product_definition_relationship);
WHERE
  WR1: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE' IN
       TYPEOF (SELF.related_product_definition.formation);
  WR2: NOT ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION' IN ROLESOF (SELF));
END_ENTITY; -- supplied_part_relationship
(*

Formal propositions:

WR1: The supplied_part_relationship shall have a related_product_definition in which the source is specified.

WR2: The supplied_part_relationship shall not be the definition of a product_definition_shape.

5.2.3.1.354 surface_prepped_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A surface_prepped_terminal is a package_terminal that implements the ARM concept of Surface_prepped_terminal.

EXPRESS specification:

*)
ENTITY surface_prepped_terminal
   SUBTYPE OF (altered_package_terminal);
WHERE
WR2: (SIZEOF (QUERY (ada <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_DOCUMENT_REFERENCE.ITEMS') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EE_SPECIFICATION' IN
       TYPEOF (ada.assigned_document)) AND
       (ada.assigned_document.kind\document_type.product_data_type =
       'surface finish specification'))) = 1);
END_ENTITY; -- surface_prepped_terminal
(*

Formal propositions:

WR1: The surface_prepped_terminal shall have exactly one document_reference where the assigned_document is an ee_specification with a product_data_type of 'surface finish specification'.

5.2.3.1.355 surface_profile_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A surface_profile_tolerance is a physical_unit_geometric_tolerance that implements the ARM concepts of:
  • Composite_surface_profile_locating_tolerance
  • Composite_surface_profile_refinement_tolerance
  • Profile_of_any_surface_tolerance
  • Profile_of_any_surface_tolerance_with_referenced_datum_system
  • Profile_of_any_surface_tolerance_without_referenced_datum_system

EXPRESS specification:

*)
ENTITY surface_profile_tolerance
  SUBTYPE OF (physical_unit_geometric_tolerance);
WHERE
  WR1: (NOT(SELF\geometric_tolerance.name = 
               'surface profile refinement'))
       OR (SIZEOF(QUERY(gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATED_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'SURFACE_PROFILE_TOLERANCE' IN 
             TYPEOF(gtr.relating_geometric_tolerance))
       AND ((gtr.relating_geometric_tolerance\geometric_tolerance.name = 
           'surface profile locating')
       OR (gtr.relating_geometric_tolerance\geometric_tolerance.name = 
               'surface profile refinement'))
       AND (gtr\geometric_tolerance_relationship.name = 'surface profile refining control')
       )) = 1);
  WR2: (NOT(SELF\geometric_tolerance.name = 'surface profile locating'))
       OR (SIZEOF(QUERY(gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'SURFACE_PROFILE_TOLERANCE' IN 
               TYPEOF(gtr.related_geometric_tolerance))
       AND (gtr.related_geometric_tolerance\geometric_tolerance.name = 
               'surface profile refinement')
       AND (gtr\geometric_tolerance_relationship.name = 'surface profile refining control')
       )) = 1);
  WR3: (NOT((NOT(
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'GEOMETRIC_TOLERANCE_WITH_SPECIFIED_DATUM_SYSTEM' IN TYPEOF(SELF)))
       AND(SELF\geometric_tolerance.name = 'surface profile refinement')))
       OR (SIZEOF(QUERY(gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'SURFACE_PROFILE_TOLERANCE' IN 
             TYPEOF(gtr.related_geometric_tolerance))
       AND (gtr.related_geometric_tolerance\geometric_tolerance.name = 
              'surface profile refinement')
       AND (gtr\geometric_tolerance_relationship.name = 'surface profile refining control')
       )) = 0);
  WR4: (NOT(SELF\geometric_tolerance.name = 
            'surface profile refinement'))
       OR (SIZEOF(QUERY(gtr <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'GEOMETRIC_TOLERANCE_RELATIONSHIP.RELATING_GEOMETRIC_TOLERANCE') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'SURFACE_PROFILE_TOLERANCE' IN 
            TYPEOF(gtr.related_geometric_tolerance))
       AND (gtr.related_geometric_tolerance\geometric_tolerance.name = 
            'surface profile refinement')
       AND (gtr\geometric_tolerance_relationship.name = 'surface profile refining control')
       )) = 1);
  WR5: NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' + 
       'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
END_ENTITY; -- surface_profile_tolerance
(*

Formal propositions:

WR1: If the surface_profile_tolerance has a name of 'surface profile refinement', it shall be related as the 'surface profile refining control' to exactly one surface_profile_tolerance with a name of either 'surface profile locating' or 'surface profile refinement'.

WR2: If the surface_profile_tolerance has a name of 'surface profile locating', it shall relate to exactly one surface_profile_tolerance with a name of 'surface profile refinement' to specify the 'surface profile refining control'.

WR3: If the surface_profile_tolerance is not a geometric_tolerance_with_specified_datum_system and has a name of 'surface profile refinement', it shall not relate to a surface_profile_tolerance with a name of 'surface profile refinement' to specify the 'surface profile refining control'.

WR4: If the surface_profile_tolerance has a name of 'surface profile refinement', it shall relate to at most one surface_profile_tolerance with a name of 'surface profile refinement' to specify the 'surface profile refining control'.

WR5: The surface_profile_tolerance shall not be a modified_geometric_tolerance.

Informal propositions:

IP1: If surface_profile_tolerance is a geometric_tolerance_with_specified_datum_system, it shall have a name of either 'surface profile', 'surface profile refinement', or 'surface profile locating'; otherwise, it shall have the name of either 'surface profile' or 'surface profile refinement'.

IP2: If the surface_profile_tolerance has a name of 'surface profile refinement', it shall be related as the 'surface profile refining control' to exactly one surface_profile_tolerance with a name of either 'surface profile locating' or 'surface profile refinement'. Both of these surface_profile_tolerances shall specify the same shape_aspect as the toleranced_shape_aspect.

IP3: If the surface_profile_tolerance has a name of 'surface profile refinement' and it is related as the 'surface profile refining control' to exactly one surface_profile_tolerance with a name of 'surface profile refinement', it shall either not reference a datum_system or it shall have less physical_unit_datum in its referenced datum_system than the datum_system referenced by the surface_profile_tolerance to which it is related as the 'surface profile refining control'.

IP4: If the surface_profile_tolerance has a name of 'surface profile refinement' and it is related as the 'surface profile refining control' to exactly one surface_profile_tolerance with a name of 'surface profile locating', it shall either not reference a datum_system or it shall have less than or an equal number of physical_unit_datum in its referenced datum_system than the datum_system referenced by the surface_profile_tolerance to which it is related as the 'surface profile refining control'.

IP5: If the surface_profile_tolerance has a name of 'surface profile refinement' and it is a geometric_tolerance_with_specified_datum_system, the physical_unit_datum of its referenced datum_system shall be physical_unit_datum of the datum_system of the surface_profile_tolerance to which it is related as the 'surface profile refining control' and shall be assigned the same precedence.

IP6: If the surface_profile_tolerance has a name of 'surface profile refinement' and it is a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property without material conditions' to specify its 'referenced datum system definition', the surface_profile_tolerance to which it is related as the 'surface profile refining control' shall also be a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property without material conditions' to specify its 'referenced datum system definition'.

IP7: If the surface_profile_tolerance has a name of 'surface profile refinement' and it is a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property with material conditions' to specify its 'referenced datum system definition', the surface_profile_tolerance to which it is related as the 'surface profile refining control' shall also be a geometric_tolerance_with_specified_datum_system that relates to a property_definition of a datum_system that has the description of 'datum system property with material conditions' to specify its 'referenced datum system definition', and each of these property_definition shall relate to property_definition with a description of 'datum feature material condition property' to specify their 'applied material condition property'. These property_definition shall be applied to physical_unit_datum_features in the context of the datum_systems referenced by each of the surface_profile_tolerance. The name of the property_definition applied to each of the physical_unit_datum_feature in the context of the datum_system referenced by this surface_profile_tolerance shall be the same as the name of the property_definition applied to the same physical_unit_datum_feature in the context of the datum_system referenced by the surface_profile_tolerance to which this surface_profile_tolerance is related as the 'surface profile refining control'.

IP8: If the surface_profile_tolerance has a name of 'surface profile refinement', it shall specify a measure_with_unit as its magnitude that is less than the measure_with_unit specified as the magnitude of the surface_profile_tolerance to which it is related as the 'surface profile refining control'.

IP9: If the surface_profile_tolerance has a name of 'surface profile refinement', there shall exist a property_definition that has a description of 'true profile' that is related as the 'basic profile' to a property_definition of the tolerance_zone_boundary of this surface_profile_tolerance and to a property_definition of the tolerance_zone_boundary of the surface_profile_tolerance that this surface_profile_tolerance is related to as the 'surface profile refining control', and these property_definition shall have the description of 'boundary zone definition with specified size' and a name of either 'profile boundary' or 'profile boundary with offsets'.

IP10: The toleranced_shape_aspect of the surface_profile_tolerance shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP11: The tolerance_zone_boundary of the surface_profile_tolerance shall have a property_definition with a description of 'boundary zone definition with specified size' and a name of either 'profile boundary' or 'profile boundary with offsets'.

5.2.3.1.356 symmetry_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A symmetry_tolerance is a geometric_tolerance_with_specified_datum_system that implements the ARM concept of Symmetry_tolerance.

EXPRESS specification:

*)
ENTITY symmetry_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'symmetry';
END_ENTITY; -- symmetry_tolerance
(*

Formal propositions:

WR1: The name for the symmetry_tolerance shall be 'symmetry'.

Informal propositions:

IP1: The toleranced_shape_aspect of the symmetry_tolerance shall either be a centre_of_symmetry with a description of 'plane', or a composite_shape_aspect in which the 'composing' shape_aspects are all of type centre_of_symmetry with a description of 'plane'.

IP2: The symmetry_tolerance shall have at most two physical_unit_datum in its referenced datum_system.

IP3: The symmetry_tolerance shall have at least one physical_unit_datum in its referenced datum_system that has description of 'plane'.

IP4: The tolerance_zone_boundary of the symmetry_tolerance shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

5.2.3.1.357 table_representation_item

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A table_representation_item is a compound_representation_item that implements the ARM concept of Characteristic_data_table.

EXPRESS specification:

*)
ENTITY table_representation_item
  SUBTYPE OF (compound_representation_item);
WHERE
  WR1: SIZEOF (USEDIN (SELF, 
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'APPLIED_GROUP_ASSIGNMENT.ITEMS')) > 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LIST_REPRESENTATION_ITEM'
       IN TYPEOF(SELF\compound_representation_item.item_element);
END_ENTITY; -- table_representation_item
(*

Formal propositions:

WR1: The table_representation_item shall be referenced by exactly one applied_document_reference.

WR2: The item_element attribute shall be a list_representation_item.

5.2.3.1.358 template_material_cross_section_boundary

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A template_material_cross_section_boundary is a shape_aspect that implements the ARM concepts of: Template_material_cross_section_boundary

EXPRESS specification:

*)
ENTITY template_material_cross_section_boundary
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: SIZEOF(TYPEOF(SELF) - TYPEOF(SELF\shape_aspect ||
       SELF\template_material_cross_section_boundary)) = 0;
  WR2: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRINTED_PART_TEMPLATE_MATERIAL' IN TYPEOF 
       (SELF.of_shape\property_definition.definition);
  WR3: SELF\shape_aspect.description IN
       ['top', 'left', 'right', 'bottom'];
END_ENTITY; -- template_material_cross_section_boundary
(*

Formal propositions:

WR1: The template_material_cross_section_boundary shall not participate in a complex instance.

WR2: The template_material_cross_section_boundary shall be an aspect of a printed_part_template_material.

WR3: The land_physical_template description shall only be 'top', 'bottom', 'left' or 'right'.

5.2.3.1.359 template_stratum_assignment

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A template_stratum_assignment relates a specific part_template_definition to a specific stratum for the purposes of binding them for one or more padstack definition.

EXPRESS specification:

*)
ENTITY template_stratum_assignment
 SUBTYPE OF (shape_aspect_relationship);
END_ENTITY; -- template_stratum_assignment
(*

5.2.3.1.360 tertiary_orientation_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A tertiary_orientation_feature is a physical_unit_datum_feature that implements the ARM concept of Tertiary_orientation_feature.

EXPRESS specification:

*)
ENTITY tertiary_orientation_feature
 SUBTYPE OF (physical_unit_datum_feature);
WHERE
 WR1:SIZEOF ((TYPEOF (SELF)) * 
      ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRIMARY_ORIENTATION_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SECONDARY_ORIENTATION_FEATURE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SEATING_PLANE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'VIEWING_PLANE',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PHYSICAL_UNIT_DATUM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'COMPONENT_SHAPE_ASPECT']) = 0;
 WR2: SELF.product_definitional = TRUE;
 WR3: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated body vertical extent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_BOTTOM_SURFACE' IN
       TYPEOF (it.relating_shape_aspect))
       )) <= 1;
 WR4: SIZEOF (QUERY (it <* QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT') |
       sar\shape_aspect_relationship.name = 'associated body vertical extent') |
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PACKAGE_BODY_TOP_SURFACE' IN
       TYPEOF (it.relating_shape_aspect))
       )) <= 1;
END_ENTITY; -- tertiary_orientation_feature
(*

Formal propositions:

WR1: The tertiary_orientation_feature shall not be a primary_orientation_feature, a secondary_orientation_feature, a seating_plane, a viewing_plane, a component_shape_aspect, or a physical_unit_datum.

WR2: A tertiary_orientation_feature shall be on the surface of the product.

WR3: A tertiary_orientation_feature shall be associated with no more than one package_body_bottom_surface.

WR4: A tertiary_orientation_feature shall be associated with no more than one package_body_top_surface.

5.2.3.1.361 test_point_part_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A test_point_part_feature is a part_tooling_feature that implements the ARM concept of Fiducial_part_feature.

EXPRESS specification:

*)
ENTITY test_point_part_feature
 SUBTYPE OF (part_tooling_feature);
END_ENTITY; -- test_point_part_feature
(*

5.2.3.1.362 thermal_component

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A thermal_component is a component_definition that implements the ARM concept of Thermal_component.

EXPRESS specification:

*)
ENTITY thermal_component
  SUBTYPE OF (component_definition);
END_ENTITY; -- thermal_component
(*

5.2.3.1.363 thermal_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A thermal_component_shape_aspect is a component_shape_aspect that implements the ARM concept of Thermal_component.

EXPRESS specification:

*)
ENTITY thermal_component_shape_aspect
  SUBTYPE OF (component_shape_aspect);
END_ENTITY; -- thermal_component_shape_aspect
(*

5.2.3.1.364 thermal_feature

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A thermal_feature is a shape_aspect that implements the ARM concept of Thermal_feature.

EXPRESS specification:

*)
ENTITY thermal_feature
 SUBTYPE OF (shape_aspect);
END_ENTITY; -- thermal_feature
(*

5.2.3.1.365 thermal_isolation_component_shape_aspect

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A thermal_isolation_component_shape_aspect is a filled_area_material_removal_component_shape_aspect that implements the ARM concept of Thermal_isolation_laminate_component.

EXPRESS specification:

*)
ENTITY thermal_isolation_component_shape_aspect
  SUBTYPE OF (filled_area_material_removal_component_shape_aspect);
END_ENTITY; -- thermal_isolation_component_shape_aspect
(*

5.2.3.1.366 thermal_isolation_removal_template_definition

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A thermal_isolation_removal_template_definition is a part_template_definition that implements the ARM concept of Thermal_isolation_removal_template .

EXPRESS specification:

*)
ENTITY thermal_isolation_removal_template_definition
  SUBTYPE OF (part_template_definition);
(*
WHERE
  WR1: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TEXT_LITERAL' IN
       TYPEOF (it))) = 1)) = 1))) = 0);
  WR2: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 
         'maximum font vertical extent'))) = 1
       )) = 1))) = 0);
  WR3: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       SIZEOF (QUERY (it <* pdr.used_representation.items |
       (SIZEOF (
       ['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM',
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_MEASURE_WITH_UNIT'] * 
       TYPEOF (it)) = 2) AND (it\representation_item.name = 
         'maximum font horizontal extent'))) = 1
       )) = 1))) = 0);
*)
END_ENTITY; -- thermal_isolation_removal_template_definition
(*

5.2.3.1.367 thermal_network

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A thermal_network is a functional_unit that implements the ARM concept of Thermal_network_definition.

EXPRESS specification:

*)
ENTITY thermal_network
  SUBTYPE OF (functional_unit);
END_ENTITY; -- thermal_network
(*

5.2.3.1.368 tolerance_zone_boundary

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A tolerance_zone_boundary is a shape_aspect that implements the ARM concepts of:
  • Conical_tolerance_zone_boundary
  • Tolerance_zone_boundary
  • Tolerance_zone_circular_or_cylindrical_or_spherical_boundary

EXPRESS specification:

*)
ENTITY tolerance_zone_boundary
  SUBTYPE OF (shape_aspect);
WHERE
  WR1: (NOT(SELF\shape_aspect.description = 'conical'))
       OR (NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                'TOLERANCE_ZONE_EXPLICIT_OPPOSING_BOUNDARY_SET'
                IN TYPEOF(SELF))
           OR('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'TOLERANCE_ZONE_IMPLICIT_OPPOSING_BOUNDARY_SET'
               IN TYPEOF(SELF))));
  WR2: (NOT(SELF\shape_aspect.description = 
                 'circular or cylindrical or spherical'))
       OR (NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
                'TOLERANCE_ZONE_EXPLICIT_OPPOSING_BOUNDARY_SET'
                IN TYPEOF(SELF))
           OR('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
               'TOLERANCE_ZONE_IMPLICIT_OPPOSING_BOUNDARY_SET'
               IN TYPEOF(SELF))));
  WR3: SELF\shape_aspect.product_definitional = False;
  WR4: NOT(('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
           'TOLERANCE_ZONE_EXPLICIT_OPPOSING_BOUNDARY_SET'
           IN TYPEOF(SELF))
       AND ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
           'TOLERANCE_ZONE_IMPLICIT_OPPOSING_BOUNDARY_SET'
           IN TYPEOF(SELF)));
    WR5: SIZEOF(QUERY(pd <* USEDIN(SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') | (pd\property_definition.description = 
       'boundary zone definition with specified size') OR 
       (pd\property_definition.description = 'conical tolerance zone boundary')
       )) = 1;
  WR6: SIZEOF(USEDIN(SELF, 
            'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'TOLERANCE_ZONE_DEFINITION.BOUNDARIES')) = 1;
END_ENTITY; -- tolerance_zone_boundary
(*

Formal propositions:

WR1: If the description of the tolerance_zone_boundary is 'conical', it shall not be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

WR2: If the description of the tolerance_zone_boundary is 'circular or cylindrical or spherical', it shall not be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

WR3: The tolerance_zone_boundary shall not lie on the boundary of the shape of the product.

WR4: The tolerance_zone_boundary shall not be both a tolerance_zone_explicit_opposing_boundary_set and a tolerance_zone_implicit_opposing_boundary_set.

WR5: The tolerance_zone_boundary shall have exactly one property_definition that has the description of either 'boundary zone definition with specified size' or 'conical tolerance zone boundary'.

WR6: The tolerance_zone_boundary shall be specified as the boundaries by exactly one tolerance_zone_definition.

Informal propositions:

IP1: If the description of the tolerance_zone_boundary is 'conical', the tolerance_zone_boundary shall relate to exactly two shape_aspect to specify the 'conical tolerance zone boundary and surface'.

IP2: If the description of the tolerance_zone_boundary is 'circular or cylindrical or spherical', the tolerance_zone_boundary shall have exactly one property_definition with a description of 'boundary zone definition with specified size', and that property_definition shall be represented by exactly one representation that has a name of 'diametrical boundary size'.

5.2.3.1.369 tolerance_zone_explicit_opposing_boundary_set

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A tolerance_zone_explicit_opposing_boundary_set is a tolerance_zone_boundary that implements the ARM concepts of Tolerance_zone_explicit_opposing_boundary_set and Tolerance_zone_opposing_boundary_set.

EXPRESS specification:

*)
ENTITY tolerance_zone_explicit_opposing_boundary_set
  SUBTYPE OF (tolerance_zone_boundary);
END_ENTITY; -- tolerance_zone_explicit_opposing_boundary_set
(*

Informal propositions:

IP1: The tolerance_zone_explicit_opposing_boundary_set shall relate to exactly two shape_aspect instances that have a description of 'tolerance zone boundary member' to specify the 'zone boundary member'.

IP2: The tolerance_zone_explicit_opposing_boundary_set shall have exactly one property_definition with a description of 'boundary zone definition with specified size', and that property_definition shall be represented by exactly one representation that has a name of 'opposing boundary set size'.

5.2.3.1.370 tolerance_zone_implicit_opposing_boundary_set

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A tolerance_zone_implicit_opposing_boundary_set is a tolerance_zone_boundary that implements the ARM concept of Tolerance_zone_implicit_opposing_boundary_set.

EXPRESS specification:

*)
ENTITY tolerance_zone_implicit_opposing_boundary_set
  SUBTYPE OF (tolerance_zone_boundary);
END_ENTITY; -- tolerance_zone_implicit_opposing_boundary_set
(*

Informal propositions:

IP1: The tolerance_zone_implicit_opposing_boundary_set shall have exactly one property_definition with a description of 'boundary zone definition with specified size', and that property_definition shall be represented by exactly one representation that has a name of 'opposing boundary set size'.

5.2.3.1.371 total_runout_tolerance

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A total_runout_tolerance is a geometric_tolerance_with_specified_datum_system that implements the ARM concept of Total_runout_tolerance.

EXPRESS specification:

*)
ENTITY total_runout_tolerance
  SUBTYPE OF (geometric_tolerance_with_specified_datum_system);
WHERE
  WR1: SELF\geometric_tolerance.name = 'total runout';
  WR2: NOT('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
           'MODIFIED_GEOMETRIC_TOLERANCE' IN TYPEOF(SELF));
END_ENTITY; -- total_runout_tolerance
(*

Formal propositions:

WR1: The name for the total_runout_tolerance shall be 'total runout'.

WR2: The total_runout_tolerance shall not be a modified_geometric_tolerance.

Informal propositions:

IP1: The toleranced_shape_aspect of the total_runout_tolerance shall either be a part_template_definition, lie on the boundary of the shape of the product, or be a composite_shape_aspect the 'composing' shape_aspects of which are all of type part_template_definition.

IP2: The total_runout_tolerance shall have at most two physical_unit_datum instances in its referenced datum_system.

IP3: The total_runout_tolerance shall have at least one physical_unit_datum in its referenced datum_system that has a description of 'axis'.

IP4: The total_runout_tolerance shall relate to exactly one property_definition that has the description of 'datum system property without material conditions' to specify the 'referenced datum system definition'.

IP5: The tolerance_zone_boundary of the total_runout_tolerance shall be either a tolerance_zone_explicit_opposing_boundary_set or a tolerance_zone_implicit_opposing_boundary_set.

5.2.3.1.372 usage_view_connection_zone_terminal_shape_relationship

A usage_view_connection_zone_terminal_shape_relationship is a representation and a representation_relationship_with_transformation that implements the ARM concept of Usage_view_connection_zone_terminal_shape_relationship.

EXPRESS specification:

*)
ENTITY usage_view_connection_zone_terminal_shape_relationship
  SUBTYPE OF (representation, representation_relationship_with_transformation);
UNIQUE
  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
WHERE
  WR1: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'] *
       TYPEOF (SELF.rep_1)) = 1;
  WR2: SIZEOF (['ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_REPRESENTATION'] *
       TYPEOF (SELF.rep_2)) = 1;
  WR3: SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\representation_relationship_with_transformation || 
       SELF\usage_view_connection_zone_terminal_shape_relationship))) = 0;
  WR4: SELF\representation_relationship.rep_1 <> 
       SELF\representation_relationship.rep_2;
END_ENTITY; -- usage_view_connection_zone_terminal_shape_relationship 
(* 

Formal propositions:

Formal propositions:

WR1: The combination of rep_1 and rep_2 shall be unique within a population of usage_view_connection_zone_terminal_shape_relationship.

WR1: The usage_view_connection_zone_terminal_shape_relationship shall reference a shape_representation as its rep_1.

WR2: The usage_view_connection_zone_terminal_shape_relationship shall reference a shape_representation as its rep_2.

WR3: The usage_view_connection_zone_terminal_shape_relationship shall only be a representation, representation_relationship, or representation_relationship_with_transformation in addition to itself.

WR4: The usage_view_connection_zone_terminal_shape_relationship rep_1 shall not be the rep_2.

5.2.3.1.373 viewing_plane

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
The viewing_plane is a shape_aspect that implements the ARM concept of Viewing_plane.

EXPRESS specification:

*)
ENTITY viewing_plane
  SUBTYPE OF (shape_aspect);
  WHERE
    wr1: SELF\shape_aspect.description = 'affected plane';
    wr2: (SIZEOF(QUERY ( pd <* USEDIN (SELF,
             'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
             'PROPERTY_DEFINITION.' + 'DEFINITION') | (pd\property_definition.description = 
             'viewing plane property')))) =1;
    wr3: NOT SELF\shape_aspect.product_definitional;
END_ENTITY; -- viewing_plane
(*

Formal propositions:

WR1: The viewing_plane shall have a description of 'affected plane'.

WR2: The viewing_plane shall have exactly one property_definition that has the description of 'viewing plane property'.

WR3: The viewing_plane shall not lie on the boundary of the shape of the product.

5.2.3.1.374 volume_shape_intersection

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A volume_shape_intersection is a representation and a shape_representation_relationship that implements the ARM concept of Volume_shape_intersection.

EXPRESS specification:

*)
ENTITY volume_shape_intersection
  SUPERTYPE OF (ONEOF(edge_segment_cross_section,
              pre_defined_parallel_datum_axis_symbol_3d_2d_relationship,
              pre_defined_perpendicular_datum_axis_symbol_3d_2d_relationship,
              pre_defined_perpendicular_datum_plane_symbol_3d_2d_relationship))
  SUBTYPE OF (representation, 
              shape_representation_relationship, 
              representation_relationship_with_transformation);
UNIQUE
  UR1: SELF\representation_relationship.rep_1, SELF\representation_relationship.rep_2;
WHERE
  WR1: SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2;
  WR2: (SIZEOF(TYPEOF(SELF) - (TYPEOF(SELF\representation ||
       SELF\representation_relationship || 
       SELF\shape_representation_relationship || 
       SELF\representation_relationship_with_transformation || 
       SELF\volume_shape_intersection))) = 0)  OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'EDGE_SEGMENT_CROSS_SECTION' IN TYPEOF (SELF)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRE_DEFINED_PARALLEL_DATUM_AXIS_SYMBOL_3D_2D_RELATIONSHIP' IN TYPEOF (SELF)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRE_DEFINED_PERPENDICULAR_DATUM_AXIS_SYMBOL_3D_2D_RELATIONSHIP' IN TYPEOF (SELF)) OR
       ('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PRE_DEFINED_PERPENDICULAR_DATUM_PLANE_SYMBOL_3D_2D_RELATIONSHIP' IN TYPEOF (SELF));
  WR3: 'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'ITEM_DEFINED_TRANSFORMATION' IN TYPEOF 
       (SELF\representation_relationship_with_transformation.transformation_operator);

END_ENTITY; -- volume_shape_intersection 
(* 

Formal propositions:

Formal propositions:

WR1: The combination of rep_1 and rep_2 shall be unique within a population of volume_shape_intersection.

WR1: The volume_shape_intersection rep_1 shall not be rep_2.

WR2: The volume_shape_intersection shall not be a complex subtype of other than its direct supertypes.

WR3: The volume_shape_intersection shall reference an item_defined_transformation.

5.2.3.1.375 wire_terminal

NOTE: The local rules for this entity have not been fully updated to agree with the changes in clause 4.2.
A wire_terminal is a package_terminal that implements the ARM concept of Wire_terminal.

EXPRESS specification:

*)
ENTITY wire_terminal
   SUBTYPE OF (package_terminal);
WHERE
WR1: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (SIZEOF (QUERY (it <* pdr.used_representation.items |
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM') IN TYPEOF (it))
       AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_UNIT') IN
   TYPEOF (it\measure_with_unit.unit_component)))) = 2))) = 1)) )) = 0);
 WR2: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (SIZEOF (QUERY (it <* pdr.used_representation.items | (
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) AND
       (it\representation_item.name = 'maximum wire terminal length')
       AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_UNIT') IN
        TYPEOF (it\measure_with_unit.unit_component)))) = 1
                                               ))) = 1)) )) = 0);
 WR3: (SIZEOF (QUERY (pd <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION.DEFINITION') |
       (NOT (SIZEOF (QUERY (pdr <* USEDIN (pd,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION') |
       (SIZEOF (QUERY (it <* pdr.used_representation.items | (
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'MEASURE_REPRESENTATION_ITEM' IN TYPEOF (it)) AND
       (it\representation_item.name = 'minimum wire terminal length')
       AND
       (('ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'LENGTH_UNIT') IN
       TYPEOF (it\measure_with_unit.unit_component)))) = 1)))
                                                     = 1)) )) = 0);
 WR4: (SIZEOF (QUERY (sar <* USEDIN (SELF,
       'ELECTRONIC_ASSEMBLY_INTERCONNECT_AND_PACKAGING_DESIGN.' +
       'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT') |
       (sar\shape_aspect_relationship.name  = 'internal connection zone') AND
       (sar.related_shape_aspect\shape_aspect.description = 'connection zone'))) = 1);
END_ENTITY; -- wire_terminal
(*

Formal propositions:

WR1: The wire_terminal shall have a representation that contains exactly two length_measure_with_units.

WR2: The wire_terminal shall have a representation that contains exactly one length_measure_with_unit with a name of 'maximum wire terminal length'.

WR3: The wire_terminal shall have a representation that contains exactly one length_measure_with_unit with a name of 'minimum wire terminal length'.

WR4: The wire_terminal shall be related to exactly one shape_aspect with a description of 'connection zone' as the 'internal connection zone'.

5.2.3.2 Imported entity modifications

5.2.3.2.1 action

The base definition of the action entity is given in ISO 10303-41.

The definition of action is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the action entity:

5.2.3.2.2 action_assignment

The base definition of the action_assignment entity is given in ISO 10303-41.

The definition of action_assignment is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the action_assignment entity:

5.2.3.2.3 action_directive

The base definition of the action_directive entity is given in ISO 10303-41.

The definition of action_directive is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the action_directive entity:

5.2.3.2.4 action_request_assignment

The base definition of the action_request_assignment entity is given in ISO 10303-41.

The definition of action_request_assignment is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the action_request_assignment entity:

5.2.3.2.5 action_request_status

The base definition of the action_request_status entity is given in ISO 10303-41.

The definition of action_request_status is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the action_request_status entity:

5.2.3.2.6 address

The base definition of the address entity is given in ISO 10303-41.

The definition of address is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the address entity:

5.2.3.2.7 alternate_product_relationship

The base definition of the alternate_product_relationship entity is given in ISO 10303-44.

The definition of alternate_product_relationship is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the alternate_product_relationship entity:

5.2.3.2.8 angular_size

The base definition of the angular_size entity is given in ISO 10303-47.

The definition of angular_size is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the angular_size entity:

5.2.3.2.9 annotation_fill_area_occurrence

The base definition of the annotation_fill_area_occurrence entity is given in ISO 10303-46.

The definition of annotation_fill_area_occurrence is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the annotation_fill_area_occurrence entity:

5.2.3.2.10 application_context

The base definition of the application_context entity is given in ISO 10303-41.

The definition of application_context is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the application_context entity:

5.2.3.2.11 application_protocol_definition

The base definition of the application_protocol_definition entity is given in ISO 10303-41.

The definition of application_protocol_definition is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the application_protocol_definition entity:

5.2.3.2.12 approval

The base definition of the approval entity is given in ISO 10303-41.

The definition of approval is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the approval entity:

5.2.3.2.13 approval_assignment

The base definition of the approval_assignment entity is given in ISO 10303-41.

The definition of approval_assignment is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the approval_assignment entity:

5.2.3.2.14 approval_date_time

The base definition of the approval_date_time entity is given in ISO 10303-41.

The definition of approval_date_time is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the approval_date_time entity:

5.2.3.2.15 approval_person_organization

The base definition of the approval_person_organization entity is given in ISO 10303-41.

The definition of approval_person_organization is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the approval_person_organization entity:

5.2.3.2.16 approval_status

The base definition of the approval_status entity is given in ISO 10303-41.

The definition of approval_status is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the approval_status entity:

5.2.3.2.17 assembly_component_usage

The base definition of the assembly_component_usage entity is given in ISO 10303-44.

The definition of assembly_component_usage is modified as follows:

5.2.3.2.18 assembly_component_usage_substitute

The base definition of the assembly_component_usage_substitute entity is given in ISO 10303-44.

The definition of assembly_component_usage_substitute is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the assembly_component_usage_substitute entity:

5.2.3.2.19 centre_of_symmetry

The base definition of the centre_of_symmetry entity is given in ISO 10303-47.

The definition of centre_of_symmetry is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the centre_of_symmetry entity:

5.2.3.2.20 certification_type

The base definition of the certification_type entity is given in ISO 10303-41.

The definition of certification_type is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the certification_type entity:

5.2.3.2.21 characterized_object

The base definition of the characterized_object entity is given in ISO 10303-41.

The definition of characterized_object is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the characterized_object entity:

5.2.3.2.22 composite_shape_aspect

The base definition of the composite_shape_aspect entity is given in ISO 10303-47.

The definition of composite_shape_aspect is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the composite_shape_aspect entity:

5.2.3.2.23 configuration_effectivity

The base definition of the configuration_effectivity entity is given in ISO 10303-44.

The definition of configuration_effectivity is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the configuration_effectivity entity:

5.2.3.2.24 configuration_item

The base definition of the configuration_item entity is given in ISO 10303-44.

The definition of configuration_item is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the configuration_item entity:

5.2.3.2.25 contract

The base definition of the contract entity is given in ISO 10303-41.

The definition of contract is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the contract entity:

5.2.3.2.26 contract_type

The base definition of the contract_type entity is given in ISO 10303-41.

The definition of contract_type is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the contract_type entity:

5.2.3.2.27 curve_style

The base definition of the curve_style entity is given in ISO 10303-46.

The definition of curve_style is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the curve_style entity:

5.2.3.2.28 date

The base definition of the date entity is given in ISO 10303-41.

The definition of date is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the date entity:

5.2.3.2.29 date_and_time

The base definition of the date_and_time entity is given in ISO 10303-41.

The definition of date_and_time is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the date_and_time entity:

5.2.3.2.30 date_role

The base definition of the date_role entity is given in ISO 10303-41.

The definition of date_role is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the date_role entity:

5.2.3.2.31 date_time_role

The base definition of the date_time_role entity is given in ISO 10303-41.

The definition of date_time_role is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the date_time_role entity:

5.2.3.2.32 derived_shape_aspect

The base definition of the derived_shape_aspect entity is given in ISO 10303-47.

The definition of derived_shape_aspect is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the derived_shape_aspect entity:

5.2.3.2.33 descriptive_representation_item

The base definition of the descriptive_representation_item entity is given in ISO 10303-45.

The definition of descriptive_representation_item is modified as follows:

5.2.3.2.34 dimensional_location

The base definition of the dimensional_location entity is given in ISO 10303-47.

The definition of dimensional_location is modified as follows:

5.2.3.2.35 dimensional_size

The base definition of the dimensional_size entity is given in ISO 10303-47.

The definition of dimensional_size is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the dimensional_size entity:

5.2.3.2.36 directed_action

The base definition of the directed_action entity is given in ISO 10303-41.

The definition of directed_action is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the directed_action entity:

5.2.3.2.37 document

The base definition of the document entity is given in ISO 10303-41.

The definition of document is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the document entity:

5.2.3.2.38 document_type

The base definition of the document_type entity is given in ISO 10303-41.

The definition of document_type is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the document_type entity:

5.2.3.2.39 externally_defined_item

The base definition of the externally_defined_item entity is given in ISO 10303-41.

The definition of externally_defined_item is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the externally_defined_item entity:

5.2.3.2.40 externally_defined_text_font

The base definition of the externally_defined_text_font entity is given in ISO 10303-46.

The definition of externally_defined_text_font is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the externally_defined_text_font entity:

5.2.3.2.41 geometric_tolerance

The base definition of the geometric_tolerance entity is given in ISO 10303-47.

The definition of geometric_tolerance is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the geometric_tolerance entity:

5.2.3.2.42 global_unit_assigned_context

The base definition of the global_unit_assigned_context entity is given in ISO 10303-41.

The definition of global_unit_assigned_context is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the global_unit_assigned_context entity:

5.2.3.2.43 group

The base definition of the group entity is given in ISO 10303-41.

The definition of group is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the group entity:

5.2.3.2.44 make_from_usage_option

The base definition of the make_from_usage_option entity is given in ISO 10303-44.

The definition of make_from_usage_option is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the make_from_usage_option entity:

5.2.3.2.46 material_designation

The base definition of the material_designation entity is given in ISO 10303-45.

The definition of material_designation is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the material_designation entity:

5.2.3.2.47 measure_qualification

The base definition of the measure_qualification entity is given in ISO 10303-45.

The definition of measure_qualification is modified as follows:

5.2.3.2.48 modified_geometric_tolerance

The base definition of the modified_geometric_tolerance entity is given in ISO 10303-47.

The definition of modified_geometric_tolerance is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the modified_geometric_tolerance entity:

5.2.3.2.49 named_unit

The base definition of the named_unit entity is given in ISO 10303-41.

The definition of named_unit is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the named_unit entity:

5.2.3.2.50 next_assembly_usage_occurrence

The base definition of the next_assembly_usage_occurrence entity is given in ISO 10303-44.

The definition of next_assembly_usage_occurrence is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the next_assembly_usage_occurrence entity:

5.2.3.2.51 organization_role

The base definition of the organization_role entity is given in ISO 10303-41.

The definition of organization_role is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the organization_role entity:

5.2.3.2.52 parametric_representation_context

The base definition of the parametric_representation_context entity is given in ISO 10303-43.

The definition of parametric_representation_context is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the parametric_representation_context entity:

5.2.3.2.53 person_and_organization_role

The base definition of the person_and_organization_role entity is given in ISO 10303-41.

The definition of person_and_organization_role is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the person_and_organization_role entity:

5.2.3.2.54 plus_minus_tolerance

The base definition of the plus_minus_tolerance entity is given in ISO 10303-47.

The definition of plus_minus_tolerance is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the plus_minus_tolerance entity:

5.2.3.2.55 pre_defined_item

The base definition of the pre_defined_item entity is given in ISO 10303-41.

The definition of pre_defined_item is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the pre_defined_item entity:

5.2.3.2.56 product

The base definition of the product entity is given in ISO 10303-41.

The definition of product is modified as follows:

5.2.3.2.57 product_concept

The base definition of the product_concept entity is given in ISO 10303-44.

The definition of product_concept is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_concept entity:

5.2.3.2.58 product_definition

The base definition of the product_definition entity is given in ISO 10303-41.

The definition of product_definition is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_definition entity:

5.2.3.2.59 product_definition_formation

The base definition of the product_definition_formation entity is given in ISO 10303-41.

The definition of product_definition_formation is modified as follows:

5.2.3.2.60 product_definition_formation_relationship

The base definition of the product_definition_formation_relationship entity is given in ISO 10303-41.

The definition of product_definition_formation_relationship is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_definition_formation_relationship entity:

5.2.3.2.61 product_definition_relationship

The base definition of the product_definition_relationship entity is given in ISO 10303-41.

The definition of product_definition_relationship is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_definition_relationship entity:

5.2.3.2.62 product_definition_usage

The base definition of the product_definition_usage entity is given in ISO 10303-44.

The definition of product_definition_usage is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_definition_usage entity:

5.2.3.2.63 product_definition_with_associated_documents

The base definition of the product_definition_with_associated_documents entity is given in ISO 10303-41.

The definition of product_definition_with_associated_documents is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_definition_with_associated_documents entity:

5.2.3.2.64 product_material_composition_relationship

The base definition of the product_material_composition_relationship entity is given in ISO 10303-45.

The definition of product_material_composition_relationship is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the product_material_composition_relationship entity:

5.2.3.2.65 projected_zone_definition

The base definition of the projected_zone_definition entity is given in ISO 10303-47.

The definition of projected_zone_definition is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the projected_zone_definition entity:

5.2.3.2.66 promissory_usage_occurrence

The base definition of the promissory_usage_occurrence entity is given in ISO 10303-44.

The definition of promissory_usage_occurrence is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the promissory_usage_occurrence entity:

5.2.3.2.67 property_definition

The base definition of the property_definition entity is given in ISO 10303-41.

The definition of property_definition is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the property_definition entity:

5.2.3.2.68 property_definition_relationship

The base definition of the property_definition_relationship entity is given in ISO 10303-45.

The definition of property_definition_relationship is modified as follows:

5.2.3.2.69 property_definition_representation

The base definition of the property_definition_representation entity is given in ISO 10303-41.

The definition of property_definition_representation is modified as follows:

5.2.3.2.71 representation_context

The base definition of the representation_context entity is given in ISO 10303-43.

The definition of representation_context is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the representation_context entity:

5.2.3.2.72 representation_item

The base definition of the representation_item entity is given in ISO 10303-43.

The definition of representation_item is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the representation_item entity:

5.2.3.2.73 representation_relationship

The base definition of the representation_relationship entity is given in ISO 10303-43.

The definition of representation_relationship is modified as follows:

5.2.3.2.74 runout_zone_definition

The base definition of the runout_zone_definition entity is given in ISO 10303-47.

The definition of runout_zone_definition is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the runout_zone_definition entity:

5.2.3.2.75 runout_zone_orientation

The base definition of the runout_zone_orientation entity is given in ISO 10303-47.

The definition of runout_zone_orientation is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the runout_zone_orientation entity:

5.2.3.2.76 runout_zone_orientation_reference_direction

The base definition of the runout_zone_orientation_reference_direction entity is given in ISO 10303-47.

The definition of runout_zone_orientation_reference_direction is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the runout_zone_orientation_reference_direction entity:

5.2.3.2.77 security_classification

The base definition of the security_classification entity is given in ISO 10303-41.

The definition of security_classification is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the security_classification entity:

5.2.3.2.78 security_classification_level

The base definition of the security_classification_level entity is given in ISO 10303-41.

The definition of security_classification_level is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the security_classification_level entity:

5.2.3.2.80 shape_aspect_deriving_relationship

The base definition of the shape_aspect_deriving_relationship entity is given in ISO 10303-47.

The definition of shape_aspect_deriving_relationship is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the shape_aspect_deriving_relationship entity:

5.2.3.2.81 shape_aspect_relationship

The base definition of the shape_aspect_relationship entity is given in ISO 10303-41.

The definition of shape_aspect_relationship is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the shape_aspect_relationship entity:

5.2.3.2.82 shape_dimension_representation

The base definition of the shape_dimension_representation entity is given in ISO 10303-47.

The definition of shape_dimension_representation is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the shape_dimension_representation entity:

5.2.3.2.84 shape_representation_relationship

The base definition of the shape_representation_relationship entity is given in ISO 10303-41.

The definition of shape_representation_relationship is modified as follows:

5.2.3.2.85 specified_higher_usage_occurrence

The base definition of the specified_higher_usage_occurrence entity is given in ISO 10303-44.

The definition of specified_higher_usage_occurrence is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the specified_higher_usage_occurrence entity:

5.2.3.2.86 text_literal

The base definition of the text_literal entity is given in ISO 10303-46.

The definition of text_literal is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the text_literal entity:

5.2.3.2.87 tolerance_value

The base definition of the tolerance_value entity is given in ISO 10303-47.

The definition of tolerance_value is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the tolerance_value entity:

5.2.3.2.88 tolerance_zone

The base definition of the tolerance_zone entity is given in ISO 10303-47.

The definition of tolerance_zone is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the tolerance_zone entity:

5.2.3.2.89 tolerance_zone_definition

The base definition of the tolerance_zone_definition entity is given in ISO 10303-47.

The definition of tolerance_zone_definition is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the tolerance_zone_definition entity:

5.2.3.2.90 tolerance_zone_form

The base definition of the tolerance_zone_form entity is given in ISO 10303-47.

The definition of tolerance_zone_form is modified as follows:

Associated global rules:

The following global rule(s) defined in this part of ISO 10303 apply to the tolerance_zone_form entity:

5.2.3.2.91 versioned_action_request

The base definition of the versioned_action_request entity is given in ISO 10303-41.

The definition of versioned_action_request is modified as follows: