1(*
2  $Id: mim_lf.exp,v 1.27 2013/10/30 23:30:29 thomasrthurman Exp $
3ISO TC184/SC4/WG12 N8324 - ISO/TS 10303-442 AP242 managed model based 3d engineering - EXPRESS MIM Long form
4*)
5
6(* ===================================================================================== *)
7(* Long form schema generated by The EXPRESS Data Manager  compiler version 9.8.3B 20121030*)
8(* Tue Feb 19 18:44:31 2013                                                                *)
9(* The schema is converted from ISO10303 P11-2003 to ISO10303 P11-1994                     *)
10(* ===================================================================================== *)
11
12
13(* Pretty print generated by the EXPRESS Pretty Printer exppp,
14part of STEPcode (formerly NIST's SCL). exppp version:
15git commit id: v0.7-241-g5de98bb, build timestamp 30 Oct 2013 16:43
16
17*)
18
19SCHEMA Ap242_managed_model_based_3d_engineering_mim_LF;
20
21  CONSTANT
22    deprecated_constructed_data_types        : SET OF STRING :=
23                                                [ 'approved_item', 'certified_item', 'change_request_item', 'contracted_item',
24                                                  'cc_classified_item' , 'date_time_item', 'cc_person_organization_item',
25                                                  'cc_specified_item' , 'start_request_item', 'work_item'];
26    deprecated_entity_data_types             : SET OF STRING :=
27                                                [ 'cc_design_approval', 'cc_design_certification', 'cc_design_contract',
28                                                  'cc_design_date_and_time_assignment' ,
29                                                  'cc_design_person_and_organization_assignment' ,
30                                                  'cc_design_security_classification' , 'cc_design_specification_reference',
31                                                  'change' , 'change_request', 'design_context', 'design_make_from_relationship',
32                                                  'mechanical_context' , 'product_category_relationship', 'start_request',
33                                                  'start_work' , 'supplied_part_relationship'];
34    deprecated_interfaced_data_types         : SET OF STRING :=
35                                                [ 'document_with_class', 'ordinal_date',
36                                                  'product_definition_formation_with_specified_source' ,
37                                                  'week_of_year_and_day_date' ];
38    dummy_gri                                : geometric_representation_item :=
39                                                representation_item( '' ) || geometric_representation_item(  );
40    dummy_tri                                : topological_representation_item :=
41                                                representation_item( '' ) || topological_representation_item(  );
42    pre_defined_picture_representation_types : SET [0 : ?] OF STRING :=
43                                                [ 'JPEG', 'PNG', 'TIFF', 'BMP', 'GIF'];
44    schema_prefix                            : STRING :=
45                                                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.';
46    the_binarys                              : elementary_space :=
47                                                make_elementary_space( es_binarys );
48    the_booleans                             : elementary_space :=
49                                                make_elementary_space( es_booleans );
50    the_complex_numbers                      : elementary_space :=
51                                                make_elementary_space( es_complex_numbers );
52    the_complex_tuples                       : extended_tuple_space :=
53                                                make_extended_tuple_space( the_zero_tuple_space, the_complex_numbers );
54    the_empty_maths_tuple                    : maths_tuple :=
55                                                [];
56    the_empty_space                          : finite_space :=
57                                                make_finite_space( [] );
58    the_generics                             : elementary_space :=
59                                                make_elementary_space( es_generics );
60    the_integer_tuples                       : extended_tuple_space :=
61                                                make_extended_tuple_space( the_zero_tuple_space, the_integers );
62    the_integers                             : elementary_space :=
63                                                make_elementary_space( es_integers );
64    the_logicals                             : elementary_space :=
65                                                make_elementary_space( es_logicals );
66    the_maths_spaces                         : elementary_space :=
67                                                make_elementary_space( es_maths_spaces );
68    the_neg1_one_interval                    : finite_real_interval :=
69                                                make_finite_real_interval( -1, closed, 1, closed );
70    the_neghalfpi_halfpi_interval            : finite_real_interval :=
71                                                make_finite_real_interval( ( -0.5 ) * PI, closed, 0.5 * PI, closed );
72    the_negpi_pi_interval                    : finite_real_interval :=
73                                                make_finite_real_interval( -PI, open, PI, closed );
74    the_nonnegative_reals                    : real_interval_from_min :=
75                                                make_real_interval_from_min( 0, closed );
76    the_numbers                              : elementary_space :=
77                                                make_elementary_space( es_numbers );
78    the_real_tuples                          : extended_tuple_space :=
79                                                make_extended_tuple_space( the_zero_tuple_space, the_reals );
80    the_reals                                : elementary_space :=
81                                                make_elementary_space( es_reals );
82    the_strings                              : elementary_space :=
83                                                make_elementary_space( es_strings );
84    the_tuples                               : extended_tuple_space :=
85                                                make_extended_tuple_space( the_zero_tuple_space, the_generics );
86    the_zero_pi_interval                     : finite_real_interval :=
87                                                make_finite_real_interval( 0, closed, PI, closed );
88    the_zero_tuple_space                     : listed_product_space :=
89                                                make_listed_product_space( [] );
90  END_CONSTANT;
91
92  TYPE absorbed_dose_measure = REAL;
93  END_TYPE;
94
95  TYPE acceleration_measure = REAL;
96  END_TYPE;
97
98  TYPE action_items = SELECT
99    ( action,
100     action_directive,
101     action_method,
102     action_property,
103     action_relationship,
104     action_request_solution,
105     alternate_product_relationship,
106     applied_action_assignment,
107     applied_classification_assignment,
108     applied_person_and_organization_assignment,
109     approval_status,
110     assembly_component_usage_substitute,
111     certification,
112     certification_item,
113     characterized_object,
114     class,
115     class_system,
116     classification_item,
117     configuration_design,
118     configuration_effectivity,
119     configuration_item,
120     configured_effectivity_assignment,
121     contract,
122     document_file,
123     document_reference_item,
124     draughting_model,
125     drawing_revision,
126     evaluated_characteristic,
127     executed_action,
128     general_property,
129     identification_item,
130     material_designation,
131     mechanical_design_geometric_presentation_representation,
132     organization,
133     organization_relationship,
134     organizational_project,
135     person_and_organization,
136     presentation_area,
137     product,
138     product_concept,
139     product_concept_feature,
140     product_concept_feature_association,
141     product_concept_feature_category,
142     product_concept_feature_category_usage,
143     product_definition,
144     product_definition_formation,
145     product_definition_formation_relationship,
146     product_definition_relationship,
147     product_definition_substitute,
148     property_definition,
149     requirement_assigned_item,
150     requirement_for_action_resource,
151     resource_property,
152     security_classification,
153     security_classification_level,
154     shape_aspect,
155     shape_representation,
156     versioned_action_request );
157  END_TYPE;
158
159  TYPE action_method_items = SELECT
160    ( action,
161     action_method,
162     action_property,
163     applied_action_assignment,
164     configuration_design,
165     contract,
166     document_file,
167     event_occurrence,
168     organization,
169     organizational_project,
170     person,
171     person_and_organization,
172     product,
173     product_concept,
174     product_definition,
175     product_definition_formation,
176     product_definition_formation_relationship,
177     product_definition_relationship,
178     property_definition );
179  END_TYPE;
180
181  TYPE action_request_item = SELECT
182    ( action,
183     action_method,
184     action_property,
185     action_relationship,
186     alternate_product_relationship,
187     assembly_component_usage_substitute,
188     configuration_design,
189     configuration_effectivity,
190     configuration_item,
191     configured_effectivity_assignment,
192     document_file,
193     draughting_model,
194     drawing_revision,
195     general_property,
196     material_designation,
197     mechanical_design_geometric_presentation_representation,
198     organizational_project,
199     presentation_area,
200     product,
201     product_concept,
202     product_concept_feature,
203     product_concept_feature_association,
204     product_concept_feature_category,
205     product_concept_feature_category_usage,
206     product_definition,
207     product_definition_formation,
208     product_definition_formation_relationship,
209     product_definition_relationship,
210     product_definition_substitute,
211     property_definition,
212     resource_property,
213     shape_aspect,
214     shape_representation,
215     versioned_action_request );
216  END_TYPE;
217
218  TYPE actuated_direction = ENUMERATION OF
219    ( bidirectional,
220     positive_only,
221     negative_only,
222     not_actuated );
223  END_TYPE;
224
225  TYPE ahead_or_behind = ENUMERATION OF
226    ( ahead,
227     exact,
228     behind );
229  END_TYPE;
230
231  TYPE amount_of_substance_measure = REAL;
232  END_TYPE;
233
234  TYPE angle_direction_reference_select = SELECT
235    ( direction,
236     curve,
237     point_path );
238  END_TYPE;
239
240  TYPE angle_direction_reference_with_a2p3d_select = SELECT
241    ( angle_direction_reference_select,
242     axis2_placement_3d );
243  END_TYPE;
244
245  TYPE angle_relator = ENUMERATION OF
246    ( equal,
247     large,
248     small );
249  END_TYPE;
250
251  TYPE annotation_plane_element = SELECT
252    ( draughting_callout,
253     styled_item );
254  END_TYPE;
255
256  TYPE annotation_representation_select = SELECT
257    ( draughting_model,
258     presentation_area,
259     presentation_view,
260     symbol_representation );
261  END_TYPE;
262
263  TYPE annotation_symbol_occurrence_item = SELECT
264    ( annotation_symbol,
265     defined_symbol );
266  END_TYPE;
267
268  TYPE annotation_text_occurrence_item = SELECT
269    ( text_literal,
270     annotation_text,
271     annotation_text_character,
272     defined_character_glyph,
273     composite_text );
274  END_TYPE;
275
276  TYPE approval_item = SELECT
277    ( action,
278     action_directive,
279     action_property,
280     action_request_solution,
281     alternate_product_relationship,
282     applied_action_assignment,
283     applied_classification_assignment,
284     applied_usage_right,
285     assembly_component_usage_substitute,
286     certification,
287     class,
288     class_system,
289     configuration_design,
290     configuration_effectivity,
291     configuration_item,
292     configured_effectivity_assignment,
293     contract,
294     date,
295     directed_action,
296     document,
297     document_file,
298     draughting_model,
299     drawing_revision,
300     effectivity,
301     executed_action,
302     frozen_assignment,
303     general_property,
304     general_property_relationship,
305     group,
306     group_relationship,
307     information_usage_right,
308     material_designation,
309     mechanical_design_geometric_presentation_representation,
310     organizational_project,
311     presentation_area,
312     product,
313     product_concept,
314     product_concept_feature,
315     product_concept_feature_association,
316     product_concept_feature_category,
317     product_concept_feature_category_usage,
318     product_definition,
319     product_definition_formation,
320     product_definition_formation_relationship,
321     product_definition_relationship,
322     product_definition_substitute,
323     property_definition,
324     representation,
325     requirement_assignment,
326     resource_property,
327     security_classification,
328     shape_aspect_relationship,
329     shape_representation,
330     versioned_action_request );
331  END_TYPE;
332
333  TYPE approved_item = SELECT
334    ( certification,
335     change,
336     change_request,
337     configuration_effectivity,
338     configuration_item,
339     contract,
340     product,
341     security_classification,
342     start_request,
343     start_work );
344  END_TYPE;
345
346  TYPE area_measure = REAL;
347  END_TYPE;
348
349  TYPE area_or_view = SELECT
350    ( presentation_area,
351     presentation_view );
352  END_TYPE;
353
354  TYPE area_unit_type = ENUMERATION OF
355    ( circular,
356     rectangular,
357     square );
358  END_TYPE;
359
360  TYPE atom_based_tuple = LIST OF atom_based_value;
361  END_TYPE;
362
363  TYPE atom_based_value = SELECT
364    ( maths_atom,
365     atom_based_tuple );
366  END_TYPE;
367
368  TYPE attribute_classification_item = SELECT
369    ( action_directive,
370     action_method,
371     action_property,
372     action_property_representation,
373     action_relationship,
374     action_request_solution,
375     action_request_status,
376     alternate_product_relationship,
377     applied_action_assignment,
378     applied_action_request_assignment,
379     applied_approval_assignment,
380     applied_certification_assignment,
381     applied_document_reference,
382     applied_document_usage_constraint_assignment,
383     applied_effectivity_assignment,
384     applied_event_occurrence_assignment,
385     applied_external_identification_assignment,
386     applied_identification_assignment,
387     applied_organization_assignment,
388     applied_organizational_project_assignment,
389     applied_person_and_organization_assignment,
390     approval,
391     approval_person_organization,
392     approval_relationship,
393     approval_status,
394     certification,
395     context_dependent_unit,
396     contract,
397     date_and_time_assignment,
398     date_assignment,
399     derived_unit,
400     descriptive_representation_item,
401     document_file,
402     document_relationship,
403     effectivity,
404     event_occurrence_relationship,
405     executed_action,
406     general_property,
407     general_property_relationship,
408     group,
409     group_relationship,
410     information_right,
411     information_usage_right,
412     language,
413     measure_representation_item,
414     measure_with_unit,
415     named_unit,
416     organization_relationship,
417     organizational_address,
418     organizational_project_relationship,
419     person_and_organization,
420     person_and_organization_address,
421     product,
422     product_category,
423     product_concept,
424     product_concept_context,
425     product_definition,
426     product_definition_context,
427     product_definition_formation,
428     product_definition_formation_relationship,
429     product_definition_relationship,
430     property_definition,
431     property_definition_relationship,
432     property_definition_representation,
433     representation,
434     representation_context,
435     representation_item,
436     security_classification,
437     time_interval_relationship,
438     uncertainty_measure_with_unit,
439     usage_association,
440     versioned_action_request );
441  END_TYPE;
442
443  TYPE attribute_identifier = identifier;
444  WHERE
445    wr1: validate_attribute_id( SELF );
446  END_TYPE;
447
448  TYPE attribute_language_item = SELECT
449    ( action,
450     actuated_kinematic_pair,
451     alternate_product_relationship,
452     application_context,
453     applied_certification_assignment,
454     applied_document_reference,
455     applied_document_usage_constraint_assignment,
456     applied_external_identification_assignment,
457     applied_identification_assignment,
458     applied_organizational_project_assignment,
459     applied_security_classification_assignment,
460     approval,
461     approval_relationship,
462     approval_status,
463     assembly_component_usage_substitute,
464     attribute_value_assignment,
465     certification,
466     certification_type,
467     configuration_design,
468     configuration_item,
469     contract,
470     data_environment,
471     date_role,
472     date_time_role,
473     descriptive_representation_item,
474     document_relationship,
475     document_usage_role,
476     draughting_title,
477     effectivity,
478     effectivity_relationship,
479     event_occurrence,
480     external_source,
481     general_property,
482     general_property_relationship,
483     geometric_representation_item,
484     geometric_tolerance,
485     group,
486     group_relationship,
487     identification_role,
488     information_right,
489     information_usage_right,
490     kinematic_pair,
491     make_from_usage_option,
492     mapped_item,
493     multi_language_attribute_assignment,
494     name_assignment,
495     object_role,
496     organization_relationship,
497     organization_role,
498     organizational_project,
499     organizational_project_relationship,
500     organizational_project_role,
501     person_and_organization,
502     person_and_organization_role,
503     presentation_layer_assignment,
504     process_product_association,
505     product,
506     product_concept,
507     product_concept_feature,
508     product_concept_feature_association,
509     product_concept_relationship,
510     product_definition,
511     product_definition_context,
512     product_definition_formation,
513     product_definition_formation_relationship,
514     product_definition_relationship,
515     product_definition_shape,
516     product_definition_substitute,
517     product_related_product_category,
518     property_definition,
519     property_definition_relationship,
520     representation,
521     representation_relationship,
522     requirement_for_action_resource,
523     resource_property,
524     resource_requirement_type,
525     security_classification,
526     security_classification_assignment,
527     shape_aspect,
528     shape_aspect_relationship,
529     shape_representation,
530     styled_item,
531     time_interval_role,
532     topological_representation_item,
533     uncertainty_measure_with_unit,
534     uncertainty_qualifier,
535     usage_association,
536     versioned_action_request,
537     versioned_action_request_relationship );
538  END_TYPE;
539
540  TYPE attribute_type = SELECT
541    ( label,
542     text );
543  END_TYPE;
544
545  TYPE axial_geometry_constraint_element = SELECT
546    ( point,
547     line,
548     circle,
549     plane,
550     cylindrical_surface,
551     conical_surface,
552     spherical_surface,
553     toroidal_surface,
554     surface_of_revolution,
555     sphere,
556     right_circular_cone,
557     right_circular_cylinder,
558     torus,
559     revolved_face_solid,
560     revolved_area_solid );
561  END_TYPE;
562
563  TYPE axis2_placement = SELECT
564    ( axis2_placement_2d,
565     axis2_placement_3d );
566  END_TYPE;
567
568  TYPE b_spline_curve_form = ENUMERATION OF
569    ( polyline_form,
570     circular_arc,
571     elliptic_arc,
572     parabolic_arc,
573     hyperbolic_arc,
574     unspecified );
575  END_TYPE;
576
577  TYPE b_spline_or_composite_curve_select = SELECT
578    ( b_spline_curve,
579     composite_curve );
580  END_TYPE;
581
582  TYPE b_spline_or_rectangular_composite_surface_select = SELECT
583    ( b_spline_surface,
584     rectangular_composite_surface );
585  END_TYPE;
586
587  TYPE b_spline_surface_form = ENUMERATION OF
588    ( plane_surf,
589     cylindrical_surf,
590     conical_surf,
591     spherical_surf,
592     toroidal_surf,
593     surf_of_revolution,
594     ruled_surf,
595     generalised_cone,
596     quadric_surf,
597     surf_of_linear_extrusion,
598     unspecified );
599  END_TYPE;
600
601  TYPE base_solid_select = SELECT
602    ( solid_model,
603     csg_primitive,
604     boolean_result );
605  WHERE
606    wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN TYPEOF( SELF ) ) );
607  END_TYPE;
608
609  TYPE blend_end_condition_select = SELECT
610    ( point_on_curve,
611     edge_curve,
612     vertex );
613  END_TYPE;
614
615  TYPE blend_radius_variation_type = ENUMERATION OF
616    ( linear_blend,
617     cubic_blend,
618     unspecified_blend );
619  END_TYPE;
620
621  TYPE boolean_operand = SELECT
622    ( boolean_result,
623     csg_primitive,
624     half_space_2d,
625     half_space_solid,
626     solid_model );
627  END_TYPE;
628
629  TYPE boolean_operand_2d = SELECT
630    ( bounded_primitive_2d,
631     boolean_result_2d );
632  END_TYPE;
633
634  TYPE boolean_operator = ENUMERATION OF
635    ( union,
636     intersection,
637     difference );
638  END_TYPE;
639
640  TYPE boolean_value = BOOLEAN;
641  END_TYPE;
642
643  TYPE bounded_primitive_2d = SELECT
644    ( area_with_outer_boundary,
645     circular_area,
646     elliptic_area,
647     path_area_with_parameters,
648     polygonal_area,
649     rectangular_area );
650  END_TYPE;
651
652  TYPE box_characteristic_select = SELECT
653    ( box_height,
654     box_width,
655     box_slant_angle,
656     box_rotate_angle );
657  END_TYPE;
658
659  TYPE box_height = positive_ratio_measure;
660  END_TYPE;
661
662  TYPE box_rotate_angle = plane_angle_measure;
663  END_TYPE;
664
665  TYPE box_slant_angle = plane_angle_measure;
666  END_TYPE;
667
668  TYPE box_width = positive_ratio_measure;
669  END_TYPE;
670
671  TYPE camera_model_d3_multi_clipping_interection_select = SELECT
672    ( camera_model_d3_multi_clipping_union,
673     plane );
674  END_TYPE;
675
676  TYPE camera_model_d3_multi_clipping_union_select = SELECT
677    ( camera_model_d3_multi_clipping_intersection,
678     plane );
679  END_TYPE;
680
681  TYPE capacitance_measure = REAL;
682  END_TYPE;
683
684  TYPE category_usage_item = SELECT
685    ( product_class );
686  END_TYPE;
687
688  TYPE cc_classified_item = SELECT
689    ( assembly_component_usage,
690     product_definition_formation );
691  END_TYPE;
692
693  TYPE cc_person_organization_item = SELECT
694    ( change,
695     change_request,
696     configuration_item,
697     contract,
698     product,
699     product_definition,
700     product_definition_formation,
701     security_classification,
702     start_request,
703     start_work );
704  END_TYPE;
705
706  TYPE cc_specified_item = SELECT
707    ( product_definition,
708     shape_aspect );
709  END_TYPE;
710
711  TYPE celsius_temperature_measure = REAL;
712  END_TYPE;
713
714  TYPE central_or_parallel = ENUMERATION OF
715    ( central,
716     parallel );
717  END_TYPE;
718
719  TYPE certification_item = SELECT
720    ( alternate_product_relationship,
721     make_from_usage_option,
722     product_definition,
723     product_definition_formation,
724     product_definition_formation_relationship,
725     product_definition_relationship );
726  END_TYPE;
727
728  TYPE certified_item = SELECT
729    ( supplied_part_relationship );
730  END_TYPE;
731
732  TYPE chained_representation_link = SELECT
733    ( mapped_item,
734     representation_context,
735     representation_relationship );
736  END_TYPE;
737
738  TYPE change_management_object = SELECT
739    ( action,
740     action_items,
741     action_relationship,
742     class,
743     event_occurrence,
744     project_item );
745  END_TYPE;
746
747  TYPE change_relationship_select = SELECT
748    ( action_relationship,
749     product_definition_formation_relationship,
750     product_definition_relationship,
751     shape_aspect_relationship );
752  END_TYPE;
753
754  TYPE change_request_item = SELECT
755    ( product_definition_formation );
756  END_TYPE;
757
758  TYPE character_spacing_select = SELECT
759    ( length_measure,
760     ratio_measure,
761     measure_with_unit,
762     descriptive_measure );
763  END_TYPE;
764
765  TYPE character_style_select = SELECT
766    ( character_glyph_style_stroke,
767     character_glyph_style_outline,
768     text_style_for_defined_font );
769  END_TYPE;
770
771  TYPE characterized_action_definition = SELECT
772    ( action,
773     action_method,
774     action_method_relationship,
775     action_relationship );
776  END_TYPE;
777
778  TYPE characterized_definition = SELECT
779    ( characterized_object,
780     characterized_product_definition,
781     shape_definition );
782  END_TYPE;
783
784  TYPE characterized_material_property = SELECT
785    ( material_property_representation,
786     product_material_composition_relationship );
787  END_TYPE;
788
789  TYPE characterized_product_composition_value = SELECT
790    ( measure_with_unit );
791  END_TYPE;
792
793  TYPE characterized_product_definition = SELECT
794    ( product_definition,
795     product_definition_relationship );
796  END_TYPE;
797
798  TYPE characterized_resource_definition = SELECT
799    ( action_resource,
800     action_resource_requirement );
801  END_TYPE;
802
803  TYPE class_usage_effectivity_context_item = SELECT
804    ( product_definition );
805  END_TYPE;
806
807  TYPE classification_item = SELECT
808    ( action,
809     action_directive,
810     action_method,
811     action_property,
812     action_relationship,
813     action_request_solution,
814     action_request_status,
815     address,
816     alternate_product_relationship,
817     applied_action_assignment,
818     applied_action_request_assignment,
819     applied_approval_assignment,
820     applied_certification_assignment,
821     applied_contract_assignment,
822     applied_date_and_time_assignment,
823     applied_date_assignment,
824     applied_document_reference,
825     applied_document_usage_constraint_assignment,
826     applied_effectivity_assignment,
827     applied_event_occurrence_assignment,
828     applied_external_identification_assignment,
829     applied_identification_assignment,
830     applied_organization_assignment,
831     applied_organizational_project_assignment,
832     applied_person_and_organization_assignment,
833     applied_security_classification_assignment,
834     approval,
835     approval_person_organization,
836     approval_relationship,
837     approval_status,
838     assembly_component_usage_substitute,
839     calendar_date,
840     certification,
841     characterized_class,
842     characterized_object,
843     class,
844     classified_item,
845     configuration_item,
846     context_dependent_unit,
847     contract,
848     conversion_based_unit,
849     date_and_time,
850     date_and_time_assignment,
851     date_assignment,
852     derived_unit,
853     descriptive_representation_item,
854     directed_action,
855     document_file,
856     document_relationship,
857     document_type,
858     effectivity,
859     event_occurrence,
860     executed_action,
861     feature_definition,
862     general_feature,
863     general_property,
864     general_property_relationship,
865     group,
866     identification_assignment,
867     information_right,
868     information_usage_right,
869     language,
870     material_designation,
871     measure_representation_item,
872     measure_with_unit,
873     multi_language_attribute_assignment,
874     named_unit,
875     organization,
876     organization_relationship,
877     organizational_address,
878     organizational_project,
879     organizational_project_relationship,
880     person,
881     person_and_organization_address,
882     plus_minus_tolerance,
883     process_operation,
884     product,
885     product_concept,
886     product_concept_feature,
887     product_concept_feature_category,
888     product_definition,
889     product_definition_context,
890     product_definition_formation,
891     product_definition_formation_relationship,
892     product_definition_relationship,
893     property_definition,
894     property_definition_representation,
895     representation,
896     representation_context,
897     representation_item,
898     resource_property,
899     security_classification,
900     security_classification_level,
901     shape_aspect,
902     uncertainty_measure_with_unit,
903     usage_association,
904     versioned_action_request );
905  END_TYPE;
906
907  TYPE classified_item = SELECT
908    ( product,
909     product_definition,
910     product_definition_formation );
911  END_TYPE;
912
913  TYPE closed_or_open_shell_select = SELECT
914    ( closed_shell,
915     open_shell );
916  END_TYPE;
917
918  TYPE common_datum_list = LIST [2 : ?] OF datum_reference_element;
919  WHERE
920    wr1: ( SIZEOF( QUERY ( dre <* SELF | ( dre\shape_aspect.of_shape <> SELF[1]\shape_aspect.of_shape ) ) ) = 0 );
921  END_TYPE;
922
923  TYPE compound_inner_area_boundary = SELECT
924    ( set_inner_area_boundary );
925  END_TYPE;
926
927  TYPE compound_item_definition = SELECT
928    ( list_representation_item,
929     set_representation_item );
930  END_TYPE;
931
932  TYPE conductance_measure = REAL;
933  END_TYPE;
934
935  TYPE configuration_design_item = SELECT
936    ( product_definition,
937     product_definition_formation );
938  END_TYPE;
939
940  TYPE configured_effectivity_context_item = SELECT
941    ( product_concept_feature_association );
942  END_TYPE;
943
944  TYPE configured_effectivity_item = SELECT
945    ( action_relationship,
946     process_plan,
947     product_definition,
948     product_process_plan );
949  END_TYPE;
950
951  TYPE constraint_group_member = SELECT
952    ( explicit_constraint,
953     simultaneous_constraint_group );
954  END_TYPE;
955
956  TYPE constructive_geometry_representation_or_shape_represenation = SELECT
957    ( constructive_geometry_representation,
958     shape_representation );
959  END_TYPE;
960
961  TYPE context_dependent_measure = REAL;
962  END_TYPE;
963
964  TYPE contract_item = SELECT
965    ( action_directive,
966     alternate_product_relationship,
967     directed_action,
968     drawing_revision,
969     executed_action,
970     information_usage_right,
971     organization,
972     person_and_organization,
973     product,
974     product_definition_formation );
975  END_TYPE;
976
977  TYPE contracted_item = SELECT
978    ( product_definition_formation );
979  END_TYPE;
980
981  TYPE count_measure = NUMBER;
982  END_TYPE;
983
984  TYPE csg_2d_area_select = SELECT
985    ( axis2_placement_2d,
986     csg_primitive_solid_2d );
987  END_TYPE;
988
989  TYPE csg_2d_shape_select = SELECT
990    ( mapped_item,
991     axis2_placement_2d,
992     csg_solid_2d );
993  END_TYPE;
994
995  TYPE csg_primitive = SELECT
996    ( block,
997     bounded_primitive_2d,
998     right_angular_wedge,
999     right_circular_cone,
1000     right_circular_cylinder,
1001     sphere,
1002     torus );
1003  END_TYPE;
1004
1005  TYPE csg_select = SELECT
1006    ( boolean_result,
1007     csg_primitive );
1008  END_TYPE;
1009
1010  TYPE csg_select_2d = SELECT
1011    ( bounded_primitive_2d,
1012     boolean_result_2d );
1013  END_TYPE;
1014
1015  TYPE current_element_assignment_select = SELECT
1016    ( modify_element,
1017     add_element );
1018  END_TYPE;
1019
1020  TYPE curve_font_or_scaled_curve_font_select = SELECT
1021    ( curve_style_font_select,
1022     curve_style_font_and_scaling );
1023  END_TYPE;
1024
1025  TYPE curve_on_surface = SELECT
1026    ( composite_curve_on_surface,
1027     pcurve,
1028     surface_curve );
1029  END_TYPE;
1030
1031  TYPE curve_or_annotation_curve_occurrence = SELECT
1032    ( curve,
1033     annotation_curve_occurrence );
1034  END_TYPE;
1035
1036  TYPE curve_or_curve_set = SELECT
1037    ( curve,
1038     geometric_curve_set );
1039  END_TYPE;
1040
1041  TYPE curve_or_render = SELECT
1042    ( curve_style,
1043     curve_style_rendering );
1044  END_TYPE;
1045
1046  TYPE curve_or_surface_constraint_element = SELECT
1047    ( curve,
1048     surface );
1049  END_TYPE;
1050
1051  TYPE curve_style_font_select = SELECT
1052    ( curve_style_font,
1053     pre_defined_curve_font,
1054     externally_defined_curve_font );
1055  END_TYPE;
1056
1057  TYPE curves_or_area = ENUMERATION OF
1058    ( curves,
1059     area );
1060  END_TYPE;
1061
1062  TYPE date_and_time_item = SELECT
1063    ( action,
1064     action_directive,
1065     action_method,
1066     action_property,
1067     action_relationship,
1068     action_request_solution,
1069     alternate_product_relationship,
1070     applied_action_assignment,
1071     applied_classification_assignment,
1072     applied_organization_assignment,
1073     applied_person_and_organization_assignment,
1074     applied_security_classification_assignment,
1075     approval_person_organization,
1076     approval_status,
1077     assembly_component_usage_substitute,
1078     certification,
1079     class,
1080     class_system,
1081     configuration_design,
1082     configuration_item,
1083     configured_effectivity_assignment,
1084     contract,
1085     data_quality_definition,
1086     directed_action,
1087     document,
1088     document_file,
1089     draughting_model,
1090     drawing_revision,
1091     effectivity,
1092     event_occurrence,
1093     executed_action,
1094     general_property,
1095     information_usage_right,
1096     material_designation,
1097     mechanical_design_geometric_presentation_representation,
1098     organization_relationship,
1099     organizational_project,
1100     person_and_organization,
1101     presentation_area,
1102     product,
1103     product_concept,
1104     product_concept_feature,
1105     product_concept_feature_association,
1106     product_concept_feature_category,
1107     product_concept_feature_category_usage,
1108     product_definition,
1109     product_definition_formation,
1110     product_definition_formation_relationship,
1111     product_definition_relationship,
1112     product_definition_substitute,
1113     property_definition,
1114     requirement_for_action_resource,
1115     resource_property,
1116     rule_action,
1117     security_classification,
1118     security_classification_level,
1119     shape_representation,
1120     versioned_action_request );
1121  END_TYPE;
1122
1123  TYPE date_item = SELECT
1124    ( action,
1125     action_directive,
1126     action_method,
1127     action_property,
1128     action_relationship,
1129     action_request_solution,
1130     alternate_product_relationship,
1131     applied_action_assignment,
1132     applied_classification_assignment,
1133     applied_organization_assignment,
1134     applied_person_and_organization_assignment,
1135     applied_security_classification_assignment,
1136     approval_person_organization,
1137     approval_status,
1138     assembly_component_usage_substitute,
1139     certification,
1140     class,
1141     class_system,
1142     configuration_design,
1143     configuration_item,
1144     configured_effectivity_assignment,
1145     contract,
1146     data_quality_definition,
1147     directed_action,
1148     document,
1149     document_file,
1150     draughting_model,
1151     drawing_revision,
1152     effectivity,
1153     event_occurrence,
1154     executed_action,
1155     general_property,
1156     information_usage_right,
1157     material_designation,
1158     mechanical_design_geometric_presentation_representation,
1159     organization_relationship,
1160     organizational_project,
1161     person_and_organization,
1162     presentation_area,
1163     product,
1164     product_concept,
1165     product_concept_feature,
1166     product_concept_feature_association,
1167     product_concept_feature_category,
1168     product_concept_feature_category_usage,
1169     product_definition,
1170     product_definition_formation,
1171     product_definition_formation_relationship,
1172     product_definition_relationship,
1173     product_definition_substitute,
1174     property_definition,
1175     requirement_for_action_resource,
1176     resource_property,
1177     security_classification,
1178     security_classification_level,
1179     shape_representation,
1180     versioned_action_request );
1181  END_TYPE;
1182
1183  TYPE date_time_item = SELECT
1184    ( approval_person_organization,
1185     certification,
1186     change,
1187     change_request,
1188     contract,
1189     product_definition,
1190     security_classification,
1191     start_request,
1192     start_work );
1193  END_TYPE;
1194
1195  TYPE date_time_or_event_occurrence = SELECT
1196    ( date_time_select,
1197     event_occurrence );
1198  END_TYPE;
1199
1200  TYPE date_time_select = SELECT
1201    ( date,
1202     date_and_time,
1203     local_time );
1204  END_TYPE;
1205
1206  TYPE datum_or_common_datum = SELECT
1207    ( common_datum_list,
1208     datum );
1209  END_TYPE;
1210
1211  TYPE datum_reference_modifier = SELECT
1212    ( datum_reference_modifier_with_value,
1213     simple_datum_reference_modifier );
1214  END_TYPE;
1215
1216  TYPE datum_reference_modifier_type = ENUMERATION OF
1217    ( circular_or_cylindrical,
1218     distance,
1219     projected,
1220     spherical );
1221  END_TYPE;
1222
1223  TYPE datum_system_or_reference = SELECT
1224    ( datum_reference,
1225     datum_system );
1226  END_TYPE;
1227
1228  TYPE day_in_month_number = INTEGER;
1229  WHERE
1230    wr1: ( ( 1 <= SELF ) AND ( SELF <= 31 ) );
1231  END_TYPE;
1232
1233  TYPE day_in_week_number = INTEGER;
1234  WHERE
1235    wr1: ( ( 1 <= SELF ) AND ( SELF <= 7 ) );
1236  END_TYPE;
1237
1238  TYPE day_in_year_number = INTEGER;
1239  WHERE
1240    wr1: ( ( 1 <= SELF ) AND ( SELF <= 366 ) );
1241  END_TYPE;
1242
1243  TYPE defined_glyph_select = SELECT
1244    ( pre_defined_character_glyph,
1245     externally_defined_character_glyph );
1246  END_TYPE;
1247
1248  TYPE defined_symbol_select = SELECT
1249    ( pre_defined_symbol,
1250     externally_defined_symbol );
1251  END_TYPE;
1252
1253  TYPE derived_property_select = SELECT
1254    ( property_definition,
1255     action_property,
1256     resource_property );
1257  END_TYPE;
1258
1259  TYPE description_attribute_select = SELECT
1260    ( action_request_solution,
1261     application_context,
1262     approval_role,
1263     configuration_design,
1264     context_dependent_shape_representation,
1265     date_role,
1266     date_time_role,
1267     effectivity,
1268     external_source,
1269     organization_role,
1270     organizational_project,
1271     person_and_organization,
1272     person_and_organization_role,
1273     property_definition_representation,
1274     representation );
1275  END_TYPE;
1276
1277  TYPE descriptive_measure = STRING;
1278  END_TYPE;
1279
1280  TYPE detailed_report_type = ENUMERATION OF
1281    ( measured_element,
1282     inferior_quality_element );
1283  END_TYPE;
1284
1285  TYPE dimension_count = INTEGER;
1286  WHERE
1287    wr1: ( SELF > 0 );
1288  END_TYPE;
1289
1290  TYPE dimension_extent_usage = ENUMERATION OF
1291    ( origin,
1292     target );
1293  END_TYPE;
1294
1295  TYPE dimensional_characteristic = SELECT
1296    ( dimensional_location,
1297     dimensional_size );
1298  END_TYPE;
1299
1300  TYPE direction_count_select = SELECT
1301    ( u_direction_count,
1302     v_direction_count );
1303  END_TYPE;
1304
1305  TYPE document_identifier_assigned_item = SELECT
1306    ( document );
1307  END_TYPE;
1308
1309  TYPE document_reference_item = SELECT
1310    ( action_directive,
1311     action_method,
1312     action_relationship,
1313     applied_action_assignment,
1314     applied_external_identification_assignment,
1315     approval,
1316     assembly_component_usage,
1317     certification,
1318     characterized_class,
1319     characterized_object,
1320     class,
1321     class_system,
1322     configuration_design,
1323     configuration_item,
1324     contract,
1325     descriptive_representation_item,
1326     dimensional_size,
1327     executed_action,
1328     externally_conditioned_data_quality_criterion,
1329     externally_defined_dimension_definition,
1330     externally_defined_item,
1331     feature_definition,
1332     general_property,
1333     group,
1334     group_relationship,
1335     information_right,
1336     information_usage_right,
1337     material_designation,
1338     measure_representation_item,
1339     organization,
1340     organizational_project,
1341     person,
1342     presentation_area,
1343     process_plan,
1344     product,
1345     product_category,
1346     product_concept,
1347     product_concept_feature,
1348     product_concept_feature_category,
1349     product_definition,
1350     product_definition_context,
1351     product_definition_formation,
1352     product_definition_formation_relationship,
1353     product_definition_process,
1354     product_definition_relationship,
1355     product_definition_substitute,
1356     product_related_product_category,
1357     property_definition,
1358     representation,
1359     representation_item,
1360     resource_requirement_type,
1361     retention,
1362     rule_set,
1363     security_classification,
1364     shape_aspect,
1365     shape_aspect_relationship,
1366     usage_association,
1367     versioned_action_request );
1368  END_TYPE;
1369
1370  TYPE dose_equivalent_measure = REAL;
1371  END_TYPE;
1372
1373  TYPE draughting_callout_element = SELECT
1374    ( annotation_curve_occurrence,
1375     annotation_fill_area_occurrence,
1376     annotation_symbol_occurrence,
1377     annotation_text_occurrence,
1378     tessellated_annotation_occurrence );
1379  END_TYPE;
1380
1381  TYPE draughting_model_item_association_select = SELECT
1382    ( annotation_occurrence,
1383     draughting_callout );
1384  END_TYPE;
1385
1386  TYPE draughting_model_item_definition = SELECT
1387    ( applied_action_assignment,
1388     applied_action_method_assignment,
1389     applied_action_request_assignment,
1390     applied_approval_assignment,
1391     applied_certification_assignment,
1392     applied_classification_assignment,
1393     applied_contract_assignment,
1394     applied_date_and_time_assignment,
1395     applied_date_assignment,
1396     applied_document_reference,
1397     applied_document_usage_constraint_assignment,
1398     applied_effectivity_assignment,
1399     applied_event_occurrence_assignment,
1400     applied_external_identification_assignment,
1401     applied_group_assignment,
1402     applied_identification_assignment,
1403     applied_ineffectivity_assignment,
1404     applied_name_assignment,
1405     applied_organization_assignment,
1406     applied_organizational_project_assignment,
1407     applied_person_and_organization_assignment,
1408     applied_security_classification_assignment,
1409     applied_time_interval_assignment,
1410     applied_usage_right,
1411     dimensional_size,
1412     geometric_tolerance,
1413     product_definition_relationship,
1414     product_definition_shape,
1415     property_definition,
1416     shape_aspect,
1417     shape_aspect_relationship );
1418  END_TYPE;
1419
1420  TYPE draughting_model_item_select = SELECT
1421    ( mapped_item,
1422     styled_item,
1423     axis2_placement,
1424     camera_model,
1425     draughting_callout );
1426  END_TYPE;
1427
1428  TYPE draughting_subfigure_representation_item = SELECT
1429    ( annotation_occurrence,
1430     draughting_callout,
1431     axis2_placement );
1432  END_TYPE;
1433
1434  TYPE draughting_symbol_representation_item = SELECT
1435    ( annotation_curve_occurrence,
1436     annotation_symbol_occurrence,
1437     annotation_fill_area_occurrence,
1438     annotation_text_occurrence,
1439     axis2_placement );
1440  END_TYPE;
1441
1442  TYPE draughting_titled_item = SELECT
1443    ( drawing_revision,
1444     drawing_sheet_revision );
1445  END_TYPE;
1446
1447  TYPE edge_or_curve = SELECT
1448    ( curve,
1449     edge );
1450  END_TYPE;
1451
1452  TYPE effectivity_item = SELECT
1453    ( action,
1454     action_method,
1455     action_method_relationship,
1456     action_property,
1457     action_relationship,
1458     assembly_component_usage_substitute,
1459     class,
1460     class_system,
1461     configuration_design,
1462     configuration_item,
1463     configured_effectivity_assignment,
1464     document_file,
1465     draughting_model,
1466     drawing_revision,
1467     general_property,
1468     material_designation,
1469     mechanical_design_geometric_presentation_representation,
1470     presentation_area,
1471     product,
1472     product_concept,
1473     product_concept_feature,
1474     product_concept_feature_association,
1475     product_concept_feature_category,
1476     product_concept_feature_category_usage,
1477     product_definition,
1478     product_definition_formation,
1479     product_definition_formation_relationship,
1480     product_definition_relationship,
1481     product_definition_substitute,
1482     property_definition,
1483     requirement_for_action_resource,
1484     resource_property,
1485     security_classification,
1486     shape_aspect,
1487     shape_representation );
1488  END_TYPE;
1489
1490  TYPE electric_charge_measure = REAL;
1491  END_TYPE;
1492
1493  TYPE electric_current_measure = REAL;
1494  END_TYPE;
1495
1496  TYPE electric_potential_measure = REAL;
1497  END_TYPE;
1498
1499  TYPE elementary_function_enumerators = ENUMERATION OF
1500    ( ef_and,
1501     ef_or,
1502     ef_not,
1503     ef_xor,
1504     ef_negate_i,
1505     ef_add_i,
1506     ef_subtract_i,
1507     ef_multiply_i,
1508     ef_divide_i,
1509     ef_mod_i,
1510     ef_exponentiate_i,
1511     ef_eq_i,
1512     ef_ne_i,
1513     ef_gt_i,
1514     ef_lt_i,
1515     ef_ge_i,
1516     ef_le_i,
1517     ef_abs_i,
1518     ef_max_i,
1519     ef_min_i,
1520     ef_if_i,
1521     ef_negate_r,
1522     ef_reciprocal_r,
1523     ef_add_r,
1524     ef_subtract_r,
1525     ef_multiply_r,
1526     ef_divide_r,
1527     ef_mod_r,
1528     ef_exponentiate_r,
1529     ef_exponentiate_ri,
1530     ef_eq_r,
1531     ef_ne_r,
1532     ef_gt_r,
1533     ef_lt_r,
1534     ef_ge_r,
1535     ef_le_r,
1536     ef_abs_r,
1537     ef_max_r,
1538     ef_min_r,
1539     ef_acos_r,
1540     ef_asin_r,
1541     ef_atan2_r,
1542     ef_cos_r,
1543     ef_exp_r,
1544     ef_ln_r,
1545     ef_log2_r,
1546     ef_log10_r,
1547     ef_sin_r,
1548     ef_sqrt_r,
1549     ef_tan_r,
1550     ef_if_r,
1551     ef_form_c,
1552     ef_rpart_c,
1553     ef_ipart_c,
1554     ef_negate_c,
1555     ef_reciprocal_c,
1556     ef_add_c,
1557     ef_subtract_c,
1558     ef_multiply_c,
1559     ef_divide_c,
1560     ef_exponentiate_c,
1561     ef_exponentiate_ci,
1562     ef_eq_c,
1563     ef_ne_c,
1564     ef_conjugate_c,
1565     ef_abs_c,
1566     ef_arg_c,
1567     ef_cos_c,
1568     ef_exp_c,
1569     ef_ln_c,
1570     ef_sin_c,
1571     ef_sqrt_c,
1572     ef_tan_c,
1573     ef_if_c,
1574     ef_subscript_s,
1575     ef_eq_s,
1576     ef_ne_s,
1577     ef_gt_s,
1578     ef_lt_s,
1579     ef_ge_s,
1580     ef_le_s,
1581     ef_subsequence_s,
1582     ef_concat_s,
1583     ef_size_s,
1584     ef_format,
1585     ef_value,
1586     ef_like,
1587     ef_if_s,
1588     ef_subscript_b,
1589     ef_eq_b,
1590     ef_ne_b,
1591     ef_gt_b,
1592     ef_lt_b,
1593     ef_ge_b,
1594     ef_le_b,
1595     ef_subsequence_b,
1596     ef_concat_b,
1597     ef_size_b,
1598     ef_if_b,
1599     ef_subscript_t,
1600     ef_eq_t,
1601     ef_ne_t,
1602     ef_concat_t,
1603     ef_size_t,
1604     ef_entuple,
1605     ef_detuple,
1606     ef_insert,
1607     ef_remove,
1608     ef_if_t,
1609     ef_sum_it,
1610     ef_product_it,
1611     ef_add_it,
1612     ef_subtract_it,
1613     ef_scalar_mult_it,
1614     ef_dot_prod_it,
1615     ef_sum_rt,
1616     ef_product_rt,
1617     ef_add_rt,
1618     ef_subtract_rt,
1619     ef_scalar_mult_rt,
1620     ef_dot_prod_rt,
1621     ef_norm_rt,
1622     ef_sum_ct,
1623     ef_product_ct,
1624     ef_add_ct,
1625     ef_subtract_ct,
1626     ef_scalar_mult_ct,
1627     ef_dot_prod_ct,
1628     ef_norm_ct,
1629     ef_if,
1630     ef_ensemble,
1631     ef_member_of );
1632  END_TYPE;
1633
1634  TYPE elementary_space_enumerators = ENUMERATION OF
1635    ( es_numbers,
1636     es_complex_numbers,
1637     es_reals,
1638     es_integers,
1639     es_logicals,
1640     es_booleans,
1641     es_strings,
1642     es_binarys,
1643     es_maths_spaces,
1644     es_maths_functions,
1645     es_generics );
1646  END_TYPE;
1647
1648  TYPE energy_measure = REAL;
1649  END_TYPE;
1650
1651  TYPE event_occurrence_item = SELECT
1652    ( action,
1653     action_directive,
1654     action_method,
1655     action_property,
1656     action_request_solution,
1657     alternate_product_relationship,
1658     applied_action_assignment,
1659     applied_classification_assignment,
1660     assembly_component_usage_substitute,
1661     certification,
1662     class,
1663     class_system,
1664     configuration_design,
1665     configuration_effectivity,
1666     configuration_item,
1667     configured_effectivity_assignment,
1668     contract,
1669     draughting_model,
1670     drawing_revision,
1671     executed_action,
1672     general_property,
1673     material_designation,
1674     mechanical_design_geometric_presentation_representation,
1675     organization_relationship,
1676     organizational_project,
1677     person_and_organization,
1678     presentation_area,
1679     product,
1680     product_concept,
1681     product_concept_feature,
1682     product_concept_feature_association,
1683     product_concept_feature_category,
1684     product_concept_feature_category_usage,
1685     product_definition_formation,
1686     product_definition_formation_relationship,
1687     product_definition_relationship,
1688     product_definition_substitute,
1689     property_definition,
1690     requirement_for_action_resource,
1691     resource_property,
1692     security_classification_level,
1693     shape_representation );
1694  END_TYPE;
1695
1696  TYPE expression_extension_select = SELECT
1697    ( expression_extension_string,
1698     expression_extension_numeric );
1699  END_TYPE;
1700
1701  TYPE extension_options = ENUMERATION OF
1702    ( eo_none,
1703     eo_cont,
1704     eo_cont_right,
1705     eo_cont_left );
1706  END_TYPE;
1707
1708  TYPE external_identification_item = SELECT
1709    ( action_relationship,
1710     action_request_status,
1711     applied_organization_assignment,
1712     applied_person_and_organization_assignment,
1713     approval,
1714     approval_status,
1715     assembly_bond_definition,
1716     date_and_time_assignment,
1717     date_assignment,
1718     document_file,
1719     external_source,
1720     externally_defined_class,
1721     externally_defined_context_dependent_unit,
1722     externally_defined_conversion_based_unit,
1723     externally_defined_general_property,
1724     externally_defined_picture_representation_item,
1725     externally_defined_representation_item,
1726     generic_product_definition_reference,
1727     organizational_address,
1728     product_definition,
1729     security_classification,
1730     trimmed_curve,
1731     versioned_action_request );
1732  END_TYPE;
1733
1734  TYPE face_or_surface = SELECT
1735    ( face,
1736     surface );
1737  END_TYPE;
1738
1739  TYPE fill_area_style_tile_shape_select = SELECT
1740    ( fill_area_style_tile_curve_with_style,
1741     fill_area_style_tile_coloured_region,
1742     fill_area_style_tile_symbol_with_style,
1743     pre_defined_tile,
1744     externally_defined_tile );
1745  END_TYPE;
1746
1747  TYPE fill_style_select = SELECT
1748    ( fill_area_style_colour,
1749     externally_defined_tile_style,
1750     fill_area_style_tiles,
1751     externally_defined_hatch_style,
1752     fill_area_style_hatching );
1753  END_TYPE;
1754
1755  TYPE font_select = SELECT
1756    ( pre_defined_text_font,
1757     externally_defined_text_font,
1758     text_font );
1759  END_TYPE;
1760
1761  TYPE force_measure = REAL;
1762  END_TYPE;
1763
1764  TYPE founded_item_select = SELECT
1765    ( founded_item,
1766     representation_item );
1767  END_TYPE;
1768
1769  TYPE frequency_measure = REAL;
1770  END_TYPE;
1771
1772  TYPE generalized_surface_select = SELECT
1773    ( surface,
1774     face_surface,
1775     surfaced_open_shell );
1776  END_TYPE;
1777
1778  TYPE geometric_constraint_element = SELECT
1779    ( point,
1780     curve,
1781     surface,
1782     vector,
1783     direction );
1784  END_TYPE;
1785
1786  TYPE geometric_item_specific_usage_select = SELECT
1787    ( shape_aspect,
1788     shape_aspect_relationship );
1789  END_TYPE;
1790
1791  TYPE geometric_model_item = SELECT
1792    ( connected_face_set,
1793     edge_loop,
1794     geometric_representation_item );
1795  END_TYPE;
1796
1797  TYPE geometric_set_select = SELECT
1798    ( curve,
1799     point,
1800     surface );
1801  END_TYPE;
1802
1803  TYPE geometric_tolerance_modifier = ENUMERATION OF
1804    ( any_cross_section,
1805     common_zone,
1806     each_radial_element,
1807     free_state,
1808     least_material_requirement,
1809     line_element,
1810     major_diameter,
1811     maximum_material_requirement,
1812     minor_diameter,
1813     not_convex,
1814     pitch_diameter,
1815     reciprocity_requirement,
1816     separate_requirement,
1817     statistical_tolerance,
1818     tangent_plane );
1819  END_TYPE;
1820
1821  TYPE geometric_tolerance_target = SELECT
1822    ( dimensional_location,
1823     dimensional_size,
1824     product_definition_shape,
1825     shape_aspect );
1826  END_TYPE;
1827
1828  TYPE groupable_item = SELECT
1829    ( applied_identification_assignment,
1830     applied_name_assignment,
1831     component_feature,
1832     geometric_representation_item,
1833     group_relationship,
1834     mapped_item,
1835     package_product_concept_feature,
1836     product_concept_feature,
1837     product_definition,
1838     product_definition_formation,
1839     property_definition_representation,
1840     representation,
1841     representation_item,
1842     representation_relationship_with_transformation,
1843     shape_aspect,
1844     shape_aspect_relationship,
1845     shape_representation_relationship,
1846     styled_item,
1847     topological_representation_item );
1848  WHERE
1849    wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP' IN TYPEOF( SELF ) ) );
1850  END_TYPE;
1851
1852  TYPE hour_in_day = INTEGER;
1853  WHERE
1854    wr1: ( ( 0 <= SELF ) AND ( SELF < 24 ) );
1855  END_TYPE;
1856
1857  TYPE id_attribute_select = SELECT
1858    ( action,
1859     address,
1860     application_context,
1861     dimensional_size,
1862     geometric_tolerance,
1863     group,
1864     organizational_project,
1865     product_category,
1866     property_definition,
1867     representation,
1868     shape_aspect,
1869     shape_aspect_relationship );
1870  END_TYPE;
1871
1872  TYPE identification_item = SELECT
1873    ( action,
1874     action_directive,
1875     action_method,
1876     action_property,
1877     applied_identification_assignment,
1878     approval_status,
1879     characterized_class,
1880     class,
1881     class_system,
1882     configuration_item,
1883     contract,
1884     dimensional_size,
1885     document_file,
1886     document_type,
1887     draughting_model,
1888     effectivity,
1889     general_property,
1890     group,
1891     group_relationship,
1892     information_right,
1893     information_usage_right,
1894     material_designation,
1895     measure_representation_item,
1896     mechanical_design_geometric_presentation_representation,
1897     organization,
1898     organizational_project,
1899     person_and_organization,
1900     presentation_area,
1901     product,
1902     product_category,
1903     product_class,
1904     product_concept,
1905     product_concept_feature,
1906     product_concept_feature_category,
1907     product_definition,
1908     product_definition_formation,
1909     product_definition_relationship,
1910     product_identification,
1911     property_definition,
1912     property_definition_relationship,
1913     representation,
1914     rule_set,
1915     security_classification,
1916     security_classification_level,
1917     shape_aspect_relationship,
1918     shape_representation,
1919     usage_association,
1920     versioned_action_request );
1921  END_TYPE;
1922
1923  TYPE identifier = STRING;
1924  END_TYPE;
1925
1926  TYPE illuminance_measure = REAL;
1927  END_TYPE;
1928
1929  TYPE inductance_measure = REAL;
1930  END_TYPE;
1931
1932  TYPE input_selector = positive_integer;
1933  END_TYPE;
1934
1935  TYPE inspected_ecdq_element_select = inspected_element_select;
1936  END_TYPE;
1937
1938  TYPE inspected_element_select = SELECT
1939    ( assembly_component_usage,
1940     axis2_placement_3d,
1941     b_spline_or_composite_curve_select,
1942     b_spline_or_rectangular_composite_surface_select,
1943     cartesian_transformation_operator_3d,
1944     closed_or_open_shell_select,
1945     connected_face_set,
1946     curve,
1947     direction,
1948     edge_curve,
1949     edge_loop,
1950     face_surface,
1951     global_uncertainty_assigned_context,
1952     global_unit_assigned_context,
1953     group,
1954     manifold_solid_brep,
1955     placement,
1956     point,
1957     presentation_layer_assignment,
1958     representation_item,
1959     styled_item,
1960     surface,
1961     vertex_point );
1962  END_TYPE;
1963
1964  TYPE inspected_shape_element_select = inspected_element_select;
1965  END_TYPE;
1966
1967  TYPE instance_usage_context_select = SELECT
1968    ( product_definition_relationship,
1969     product_definition_usage );
1970  END_TYPE;
1971
1972  TYPE internal_or_reflected_shape_aspect = SELECT
1973    ( shape_aspect,
1974     identifier );
1975  END_TYPE;
1976
1977  TYPE interpolation_type = ENUMERATION OF
1978    ( undefined_interpolation_type,
1979     discontinuous_interpolation_type,
1980     synchronous_interpolation_type,
1981     linear_interpolation_type );
1982  END_TYPE;
1983
1984  TYPE invisibility_context = SELECT
1985    ( draughting_model,
1986     presentation_representation,
1987     presentation_set );
1988  END_TYPE;
1989
1990  TYPE invisible_item = SELECT
1991    ( draughting_callout,
1992     presentation_layer_assignment,
1993     representation,
1994     styled_item );
1995  END_TYPE;
1996
1997  TYPE ir_usage_item = action_items;
1998  END_TYPE;
1999
2000  TYPE item_identified_representation_usage_definition = SELECT
2001    ( applied_action_assignment,
2002     applied_action_method_assignment,
2003     applied_action_request_assignment,
2004     applied_approval_assignment,
2005     applied_certification_assignment,
2006     applied_classification_assignment,
2007     applied_contract_assignment,
2008     applied_date_and_time_assignment,
2009     applied_date_assignment,
2010     applied_document_reference,
2011     applied_document_usage_constraint_assignment,
2012     applied_effectivity_assignment,
2013     applied_event_occurrence_assignment,
2014     applied_external_identification_assignment,
2015     applied_group_assignment,
2016     applied_identification_assignment,
2017     applied_ineffectivity_assignment,
2018     applied_name_assignment,
2019     applied_organization_assignment,
2020     applied_organizational_project_assignment,
2021     applied_person_and_organization_assignment,
2022     applied_security_classification_assignment,
2023     applied_time_interval_assignment,
2024     applied_usage_right,
2025     dimensional_size,
2026     general_property,
2027     geometric_tolerance,
2028     product_definition_relationship,
2029     property_definition,
2030     property_definition_relationship,
2031     shape_aspect,
2032     shape_aspect_relationship );
2033  END_TYPE;
2034
2035  TYPE item_identified_representation_usage_select = SELECT
2036    ( representation_item,
2037     list_representation_item,
2038     set_representation_item );
2039  END_TYPE;
2040
2041  TYPE kinematic_analysis_definition = SELECT
2042    ( interpolated_configuration_sequence,
2043     prescribed_path );
2044  END_TYPE;
2045
2046  TYPE kinematic_link_representation_items = SELECT
2047    ( curve,
2048     point,
2049     rigid_placement,
2050     surface );
2051  END_TYPE;
2052
2053  TYPE kinematic_result = SELECT
2054    ( interpolated_configuration_sequence,
2055     resulting_path );
2056  END_TYPE;
2057
2058  TYPE kinematic_topology_representation_select = SELECT
2059    ( kinematic_topology_structure,
2060     kinematic_topology_directed_structure,
2061     kinematic_topology_network_structure );
2062  END_TYPE;
2063
2064  TYPE knot_type = ENUMERATION OF
2065    ( uniform_knots,
2066     quasi_uniform_knots,
2067     piecewise_bezier_knots,
2068     unspecified );
2069  END_TYPE;
2070
2071  TYPE label = STRING;
2072  END_TYPE;
2073
2074  TYPE layered_item = SELECT
2075    ( presentation_representation,
2076     representation_item );
2077  END_TYPE;
2078
2079  TYPE length_measure = REAL;
2080  END_TYPE;
2081
2082  TYPE limit_condition = ENUMERATION OF
2083    ( maximum_material_condition,
2084     least_material_condition,
2085     regardless_of_feature_size );
2086  END_TYPE;
2087
2088  TYPE linear_geometry_constraint_element = SELECT
2089    ( line,
2090     plane,
2091     direction,
2092     vector );
2093  END_TYPE;
2094
2095  TYPE link_or_shape_representation = SELECT
2096    ( kinematic_link_representation,
2097     shape_representation );
2098  END_TYPE;
2099
2100  TYPE list_of_reversible_topology_item = LIST [0 : ?] OF reversible_topology_item;
2101  END_TYPE;
2102
2103  TYPE list_representation_item = LIST [1 : ?] OF representation_item;
2104  END_TYPE;
2105
2106  TYPE location_in_aggregate_item = LIST [1 : ?] OF integer_representation_item;
2107  END_TYPE;
2108
2109  TYPE location_of_extreme_value_select = SELECT
2110    ( inspected_shape_element_select,
2111     b_spline_surface_knot_locator,
2112     b_spline_curve_knot_locator,
2113     b_spline_curve_segment,
2114     b_spline_surface_strip,
2115     b_spline_surface_patch,
2116     composite_curve_transition_locator,
2117     rectangular_composite_surface_transition_locator,
2118     boundary_curve_of_b_spline_or_rectangular_composite_surface,
2119     oriented_edge,
2120     face_bound,
2121     point_on_edge_curve,
2122     point_on_face_surface,
2123     subedge,
2124     subface );
2125  END_TYPE;
2126
2127  TYPE luminous_flux_measure = REAL;
2128  END_TYPE;
2129
2130  TYPE luminous_intensity_measure = REAL;
2131  END_TYPE;
2132
2133  TYPE magnetic_flux_density_measure = REAL;
2134  END_TYPE;
2135
2136  TYPE magnetic_flux_measure = REAL;
2137  END_TYPE;
2138
2139  TYPE marker_select = SELECT
2140    ( marker_type,
2141     pre_defined_marker );
2142  END_TYPE;
2143
2144  TYPE marker_type = ENUMERATION OF
2145    ( dot,
2146     x,
2147     plus,
2148     asterisk,
2149     ring,
2150     square,
2151     triangle );
2152  END_TYPE;
2153
2154  TYPE mass_measure = REAL;
2155  END_TYPE;
2156
2157  TYPE maths_atom = SELECT
2158    ( maths_simple_atom,
2159     maths_enum_atom );
2160  END_TYPE;
2161
2162  TYPE maths_binary = BINARY;
2163  END_TYPE;
2164
2165  TYPE maths_boolean = BOOLEAN;
2166  END_TYPE;
2167
2168  TYPE maths_enum_atom = SELECT
2169    ( elementary_space_enumerators,
2170     ordering_type,
2171     elementary_function_enumerators,
2172     open_closed,
2173     space_constraint_type,
2174     repackage_options,
2175     extension_options );
2176  END_TYPE;
2177
2178  TYPE maths_expression = SELECT
2179    ( atom_based_value,
2180     maths_tuple,
2181     generic_expression );
2182  END_TYPE;
2183
2184  TYPE maths_function_select = SELECT
2185    ( maths_function,
2186     elementary_function_enumerators );
2187  END_TYPE;
2188
2189  TYPE maths_integer = INTEGER;
2190  END_TYPE;
2191
2192  TYPE maths_logical = LOGICAL;
2193  END_TYPE;
2194
2195  TYPE maths_number = NUMBER;
2196  END_TYPE;
2197
2198  TYPE maths_real = REAL;
2199  END_TYPE;
2200
2201  TYPE maths_simple_atom = SELECT
2202    ( maths_number,
2203     maths_real,
2204     maths_integer,
2205     maths_logical,
2206     maths_boolean,
2207     maths_string,
2208     maths_binary );
2209  END_TYPE;
2210
2211  TYPE maths_space_or_function = SELECT
2212    ( maths_space,
2213     maths_function );
2214  END_TYPE;
2215
2216  TYPE maths_string = STRING;
2217  END_TYPE;
2218
2219  TYPE maths_tuple = LIST [0 : ?] OF maths_value;
2220  END_TYPE;
2221
2222  TYPE maths_value = SELECT
2223    ( atom_based_value,
2224     maths_tuple,
2225     generic_expression );
2226  WHERE
2227    constancy: ( ( NOT ( 'GENERIC_EXPRESSION' IN stripped_typeof( SELF ) ) ) OR expression_is_constant( SELF ) );
2228  END_TYPE;
2229
2230  TYPE measure_value = SELECT
2231    ( absorbed_dose_measure,
2232     dose_equivalent_measure,
2233     radioactivity_measure,
2234     acceleration_measure,
2235     amount_of_substance_measure,
2236     area_measure,
2237     celsius_temperature_measure,
2238     context_dependent_measure,
2239     count_measure,
2240     descriptive_measure,
2241     capacitance_measure,
2242     electric_charge_measure,
2243     conductance_measure,
2244     electric_current_measure,
2245     electric_potential_measure,
2246     energy_measure,
2247     magnetic_flux_density_measure,
2248     force_measure,
2249     frequency_measure,
2250     illuminance_measure,
2251     inductance_measure,
2252     length_measure,
2253     luminous_flux_measure,
2254     luminous_intensity_measure,
2255     magnetic_flux_measure,
2256     mass_measure,
2257     numeric_measure,
2258     non_negative_length_measure,
2259     parameter_value,
2260     plane_angle_measure,
2261     positive_length_measure,
2262     positive_plane_angle_measure,
2263     positive_ratio_measure,
2264     power_measure,
2265     pressure_measure,
2266     ratio_measure,
2267     resistance_measure,
2268     solid_angle_measure,
2269     thermodynamic_temperature_measure,
2270     time_measure,
2271     velocity_measure,
2272     volume_measure );
2273  END_TYPE;
2274
2275  TYPE measured_value_select = SELECT
2276    ( boolean_value,
2277     measure_value,
2278     plane_angle_and_ratio_pair,
2279     plane_angle_and_length_pair );
2280  END_TYPE;
2281
2282  TYPE mechanical_design_and_draughting_relationship_select = SELECT
2283    ( draughting_model,
2284     mechanical_design_geometric_presentation_representation,
2285     mechanical_design_presentation_representation_with_draughting,
2286     mechanical_design_shaded_presentation_representation,
2287     shape_representation );
2288  END_TYPE;
2289
2290  TYPE mechanical_design_geometric_presentation_area_items = SELECT
2291    ( axis2_placement,
2292     mapped_item );
2293  END_TYPE;
2294
2295  TYPE mechanical_design_geometric_presentation_representation_items = SELECT
2296    ( axis2_placement,
2297     camera_model_d3,
2298     mapped_item,
2299     styled_item );
2300  END_TYPE;
2301
2302  TYPE mechanical_design_shaded_presentation_area_items = SELECT
2303    ( axis2_placement,
2304     mapped_item );
2305  END_TYPE;
2306
2307  TYPE mechanical_design_shaded_presentation_representation_items = SELECT
2308    ( axis2_placement,
2309     camera_model_d3,
2310     mapped_item,
2311     styled_item );
2312  END_TYPE;
2313
2314  TYPE message = STRING;
2315  END_TYPE;
2316
2317  TYPE minute_in_hour = INTEGER;
2318  WHERE
2319    wr1: ( ( 0 <= SELF ) AND ( SELF <= 59 ) );
2320  END_TYPE;
2321
2322  TYPE month_in_year_number = INTEGER;
2323  WHERE
2324    wr1: ( ( 1 <= SELF ) AND ( SELF <= 12 ) );
2325  END_TYPE;
2326
2327  TYPE multi_language_attribute_item = SELECT
2328    ( action,
2329     action_directive,
2330     action_method,
2331     action_property,
2332     action_relationship,
2333     actuated_kinematic_pair,
2334     alternate_product_relationship,
2335     application_context,
2336     applied_certification_assignment,
2337     applied_document_reference,
2338     applied_document_usage_constraint_assignment,
2339     applied_external_identification_assignment,
2340     applied_identification_assignment,
2341     applied_organizational_project_assignment,
2342     approval,
2343     approval_relationship,
2344     approval_status,
2345     assembly_component_usage_substitute,
2346     attribute_value_assignment,
2347     certification,
2348     certification_type,
2349     colour,
2350     configuration_design,
2351     configuration_item,
2352     contract,
2353     data_environment,
2354     date_role,
2355     date_time_role,
2356     descriptive_representation_item,
2357     document_relationship,
2358     document_usage_role,
2359     draughting_title,
2360     effectivity,
2361     effectivity_relationship,
2362     event_occurrence,
2363     external_source,
2364     general_property,
2365     general_property_relationship,
2366     geometric_representation_item,
2367     geometric_tolerance,
2368     group,
2369     group_relationship,
2370     identification_role,
2371     information_right,
2372     information_usage_right,
2373     kinematic_pair,
2374     make_from_usage_option,
2375     mapped_item,
2376     name_assignment,
2377     object_role,
2378     organization_relationship,
2379     organization_role,
2380     organizational_project,
2381     organizational_project_relationship,
2382     organizational_project_role,
2383     person_and_organization,
2384     person_and_organization_role,
2385     presentation_layer_assignment,
2386     process_product_association,
2387     product,
2388     product_concept,
2389     product_concept_feature,
2390     product_concept_feature_association,
2391     product_concept_relationship,
2392     product_definition,
2393     product_definition_context,
2394     product_definition_formation,
2395     product_definition_formation_relationship,
2396     product_definition_relationship,
2397     product_definition_shape,
2398     product_definition_substitute,
2399     product_related_product_category,
2400     property_definition,
2401     property_definition_relationship,
2402     representation,
2403     representation_relationship,
2404     requirement_for_action_resource,
2405     resource_property,
2406     resource_requirement_type,
2407     security_classification,
2408     security_classification_assignment,
2409     shape_aspect,
2410     shape_aspect_relationship,
2411     shape_representation,
2412     styled_item,
2413     time_interval_role,
2414     topological_representation_item,
2415     uncertainty_measure_with_unit,
2416     uncertainty_qualifier,
2417     usage_association,
2418     versioned_action_request,
2419     versioned_action_request_relationship );
2420  END_TYPE;
2421
2422  TYPE multi_or_next_assembly_usage_occurrence = SELECT
2423    ( multi_level_reference_designator,
2424     next_assembly_usage_occurrence );
2425  END_TYPE;
2426
2427  TYPE name_attribute_select = SELECT
2428    ( action_request_solution,
2429     address,
2430     configuration_design,
2431     context_dependent_shape_representation,
2432     derived_unit,
2433     effectivity,
2434     person_and_organization,
2435     product_definition,
2436     product_definition_substitute,
2437     property_definition_representation );
2438  END_TYPE;
2439
2440  TYPE name_item = SELECT
2441    ( assembly_component_usage,
2442     external_class_library,
2443     group,
2444     group_relationship,
2445     product,
2446     product_definition );
2447  END_TYPE;
2448
2449  TYPE non_negative_length_measure = length_measure;
2450  WHERE
2451    wr1: ( SELF >= 0 );
2452  END_TYPE;
2453
2454  TYPE nonnegative_integer = INTEGER;
2455  WHERE
2456    nonnegativity: ( SELF >= 0 );
2457  END_TYPE;
2458
2459  TYPE null_style = ENUMERATION OF
2460    ( null );
2461  END_TYPE;
2462
2463  TYPE numeric_measure = NUMBER;
2464  END_TYPE;
2465
2466  TYPE one_or_two = positive_integer;
2467  WHERE
2468    in_range: ( ( SELF = 1 ) OR ( SELF = 2 ) );
2469  END_TYPE;
2470
2471  TYPE open_closed = ENUMERATION OF
2472    ( open,
2473     closed );
2474  END_TYPE;
2475
2476  TYPE ordering_type = ENUMERATION OF
2477    ( by_rows,
2478     by_columns );
2479  END_TYPE;
2480
2481  TYPE organization_item = SELECT
2482    ( action,
2483     action_directive,
2484     action_method,
2485     action_property,
2486     action_relationship,
2487     action_request_solution,
2488     alternate_product_relationship,
2489     applied_action_assignment,
2490     applied_classification_assignment,
2491     applied_identification_assignment,
2492     applied_organization_assignment,
2493     applied_person_and_organization_assignment,
2494     applied_security_classification_assignment,
2495     approval,
2496     approval_status,
2497     assembly_component_usage_substitute,
2498     certification,
2499     class,
2500     class_system,
2501     configuration_design,
2502     configuration_effectivity,
2503     configuration_item,
2504     configured_effectivity_assignment,
2505     contract,
2506     data_quality_definition,
2507     document_file,
2508     document_type,
2509     draughting_model,
2510     drawing_revision,
2511     effectivity,
2512     event_occurrence,
2513     executed_action,
2514     general_property,
2515     information_usage_right,
2516     material_designation,
2517     mechanical_design_geometric_presentation_representation,
2518     organization,
2519     organization_relationship,
2520     organizational_project,
2521     person_and_organization,
2522     presentation_area,
2523     product,
2524     product_concept,
2525     product_concept_feature,
2526     product_concept_feature_association,
2527     product_concept_feature_category,
2528     product_concept_feature_category_usage,
2529     product_definition,
2530     product_definition_formation,
2531     product_definition_formation_relationship,
2532     product_definition_relationship,
2533     product_definition_substitute,
2534     property_definition,
2535     requirement_for_action_resource,
2536     resource_property,
2537     rule_action,
2538     security_classification,
2539     security_classification_level,
2540     shape_representation,
2541     versioned_action_request );
2542  END_TYPE;
2543
2544  TYPE orientation_basis_select = SELECT
2545    ( axis2_placement_3d,
2546     min_and_major_ply_orientation_basis );
2547  END_TYPE;
2548
2549  TYPE parallel_offset_type = ENUMERATION OF
2550    ( curve_2d_offset,
2551     curve_3d_offset,
2552     surface_offset );
2553  END_TYPE;
2554
2555  TYPE parameter_value = REAL;
2556  END_TYPE;
2557
2558  TYPE path_or_composite_curve = SELECT
2559    ( composite_curve,
2560     path );
2561  END_TYPE;
2562
2563  TYPE pcurve_or_surface = SELECT
2564    ( pcurve,
2565     surface );
2566  END_TYPE;
2567
2568  TYPE person_and_organization_item = SELECT
2569    ( action,
2570     action_directive,
2571     action_method,
2572     action_property,
2573     action_relationship,
2574     action_request_solution,
2575     alternate_product_relationship,
2576     applied_action_assignment,
2577     applied_classification_assignment,
2578     applied_identification_assignment,
2579     applied_organization_assignment,
2580     applied_person_and_organization_assignment,
2581     applied_security_classification_assignment,
2582     approval,
2583     approval_status,
2584     assembly_component_usage_substitute,
2585     certification,
2586     class,
2587     class_system,
2588     configuration_design,
2589     configuration_effectivity,
2590     configuration_item,
2591     configured_effectivity_assignment,
2592     contract,
2593     data_quality_definition,
2594     document_file,
2595     document_type,
2596     draughting_model,
2597     drawing_revision,
2598     event_occurrence,
2599     executed_action,
2600     general_property,
2601     information_usage_right,
2602     material_designation,
2603     mechanical_design_geometric_presentation_representation,
2604     organization,
2605     organization_relationship,
2606     organizational_project,
2607     person_and_organization,
2608     presentation_area,
2609     product,
2610     product_concept,
2611     product_concept_feature,
2612     product_concept_feature_association,
2613     product_concept_feature_category,
2614     product_concept_feature_category_usage,
2615     product_definition,
2616     product_definition_formation,
2617     product_definition_formation_relationship,
2618     product_definition_relationship,
2619     product_definition_substitute,
2620     property_definition,
2621     requirement_for_action_resource,
2622     resource_property,
2623     rule_action,
2624     security_classification,
2625     security_classification_level,
2626     shape_representation,
2627     versioned_action_request );
2628  END_TYPE;
2629
2630  TYPE person_organization_select = SELECT
2631    ( person,
2632     organization,
2633     person_and_organization );
2634  END_TYPE;
2635
2636  TYPE picture_representation_item_select = SELECT
2637    ( styled_item,
2638     planar_box,
2639     axis2_placement_2d );
2640  END_TYPE;
2641
2642  TYPE planar_curve_select = SELECT
2643    ( line,
2644     conic,
2645     trimmed_curve,
2646     pcurve,
2647     surface_curve );
2648  WHERE
2649    wr1: ( SELF\geometric_representation_item.dim = 3 );
2650    wr2: check_curve_planarity( SELF );
2651  END_TYPE;
2652
2653  TYPE plane_angle_measure = REAL;
2654  END_TYPE;
2655
2656  TYPE plane_or_planar_box = SELECT
2657    ( plane,
2658     planar_box );
2659  END_TYPE;
2660
2661  TYPE point_and_vector_member = SELECT
2662    ( point,
2663     direction );
2664  END_TYPE;
2665
2666  TYPE point_and_vector_members = LIST [2 : 3] OF point_and_vector_member;
2667  END_TYPE;
2668
2669  TYPE point_curve_or_surface_constraint_element = SELECT
2670    ( point,
2671     curve,
2672     surface );
2673  END_TYPE;
2674
2675  TYPE point_path_members = LIST [1 : ?] OF point_and_vector;
2676  END_TYPE;
2677
2678  TYPE point_placement_shape_representation_item = SELECT
2679    ( compound_representation_item,
2680     mapped_item,
2681     axis2_placement_3d );
2682  END_TYPE;
2683
2684  TYPE positive_integer = nonnegative_integer;
2685  WHERE
2686    positivity: ( SELF > 0 );
2687  END_TYPE;
2688
2689  TYPE positive_length_measure = non_negative_length_measure;
2690  WHERE
2691    wr1: ( SELF > 0 );
2692  END_TYPE;
2693
2694  TYPE positive_plane_angle_measure = plane_angle_measure;
2695  WHERE
2696    wr1: ( SELF > 0 );
2697  END_TYPE;
2698
2699  TYPE positive_ratio_measure = ratio_measure;
2700  WHERE
2701    wr1: ( SELF > 0 );
2702  END_TYPE;
2703
2704  TYPE power_measure = REAL;
2705  END_TYPE;
2706
2707  TYPE preferred_ordering = ENUMERATION OF
2708    ( extremity_order,
2709     detected_order );
2710  END_TYPE;
2711
2712  TYPE preferred_surface_curve_representation = ENUMERATION OF
2713    ( curve_3d,
2714     pcurve_s1,
2715     pcurve_s2 );
2716  END_TYPE;
2717
2718  TYPE presentable_text = STRING;
2719  WHERE
2720    wr1: control_characters_free( SELF );
2721  END_TYPE;
2722
2723  TYPE presentation_representation_select = SELECT
2724    ( presentation_representation,
2725     presentation_set );
2726  END_TYPE;
2727
2728  TYPE presentation_size_assignment_select = SELECT
2729    ( presentation_view,
2730     presentation_area,
2731     area_in_set );
2732  END_TYPE;
2733
2734  TYPE presentation_style_select = SELECT
2735    ( point_style,
2736     curve_style,
2737     surface_style_usage,
2738     symbol_style,
2739     fill_area_style,
2740     text_style,
2741     externally_defined_style,
2742     null_style );
2743  END_TYPE;
2744
2745  TYPE presented_item_select = SELECT
2746    ( action,
2747     action_method,
2748     action_relationship,
2749     product_concept,
2750     product_concept_feature,
2751     product_concept_feature_category,
2752     product_definition,
2753     product_definition_formation,
2754     product_definition_relationship );
2755  END_TYPE;
2756
2757  TYPE pressure_measure = REAL;
2758  END_TYPE;
2759
2760  TYPE previous_element_assignment_select = SELECT
2761    ( modify_element,
2762     delete_element );
2763  END_TYPE;
2764
2765  TYPE product_definition_or_assembly_relationship = SELECT
2766    ( assembly_component_usage,
2767     product_definition );
2768  END_TYPE;
2769
2770  TYPE product_definition_or_breakdown_element_usage = SELECT
2771    ( product_definition,
2772     product_definition_usage );
2773  END_TYPE;
2774
2775  TYPE product_definition_or_product_definition_relationship = SELECT
2776    ( product_definition,
2777     product_definition_usage );
2778  END_TYPE;
2779
2780  TYPE product_definition_or_reference = SELECT
2781    ( product_definition,
2782     generic_product_definition_reference );
2783  END_TYPE;
2784
2785  TYPE product_or_formation_or_definition = SELECT
2786    ( product,
2787     product_definition_formation,
2788     product_definition );
2789  END_TYPE;
2790
2791  TYPE product_space = SELECT
2792    ( uniform_product_space,
2793     listed_product_space );
2794  END_TYPE;
2795
2796  TYPE project_item = SELECT
2797    ( assembly_component_usage,
2798     configuration_item,
2799     executed_action,
2800     product,
2801     product_concept,
2802     product_definition,
2803     product_definition_formation );
2804  END_TYPE;
2805
2806  TYPE property_or_shape_select = SELECT
2807    ( property_definition,
2808     shape_definition );
2809  END_TYPE;
2810
2811  TYPE property_variable_rep_select = SELECT
2812    ( dimensional_size,
2813     representation );
2814  END_TYPE;
2815
2816  TYPE radial_geometry_constraint_element = SELECT
2817    ( circle,
2818     cylindrical_surface,
2819     conical_surface,
2820     spherical_surface,
2821     right_circular_cylinder,
2822     right_circular_cone,
2823     sphere );
2824  END_TYPE;
2825
2826  TYPE radioactivity_measure = REAL;
2827  END_TYPE;
2828
2829  TYPE ratio_measure = REAL;
2830  END_TYPE;
2831
2832  TYPE real_interval = SELECT
2833    ( real_interval_from_min,
2834     real_interval_to_max,
2835     finite_real_interval,
2836     elementary_space );
2837  WHERE
2838    wr1: ( ( NOT ( 'ELEMENTARY_SPACE' IN stripped_typeof( SELF ) ) ) OR ( SELF\elementary_space.space_id = es_reals ) );
2839  END_TYPE;
2840
2841  TYPE rendering_properties_select = SELECT
2842    ( surface_style_reflectance_ambient,
2843     surface_style_transparent );
2844  END_TYPE;
2845
2846  TYPE repackage_options = ENUMERATION OF
2847    ( ro_nochange,
2848     ro_wrap_as_tuple,
2849     ro_unwrap_tuple );
2850  END_TYPE;
2851
2852  TYPE represented_definition = SELECT
2853    ( general_property,
2854     property_definition,
2855     property_definition_relationship,
2856     shape_aspect,
2857     shape_aspect_relationship );
2858  END_TYPE;
2859
2860  TYPE requirement_assigned_item = SELECT
2861    ( assembly_joint,
2862     configuration_item,
2863     descriptive_representation_item,
2864     product,
2865     product_class,
2866     product_definition,
2867     product_definition_formation,
2868     product_definition_relationship,
2869     representation,
2870     shape_aspect );
2871  END_TYPE;
2872
2873  TYPE requirement_satisfaction_item = SELECT
2874    ( requirement_assigned_item );
2875  END_TYPE;
2876
2877  TYPE requirement_source_item = SELECT
2878    ( characterized_object,
2879     group,
2880     group_relationship,
2881     product,
2882     product_definition,
2883     product_definition_formation,
2884     product_definition_relationship,
2885     shape_aspect );
2886  END_TYPE;
2887
2888  TYPE resistance_measure = REAL;
2889  END_TYPE;
2890
2891  TYPE reversible_topology = SELECT
2892    ( reversible_topology_item,
2893     list_of_reversible_topology_item,
2894     set_of_reversible_topology_item );
2895  END_TYPE;
2896
2897  TYPE reversible_topology_item = SELECT
2898    ( edge,
2899     path,
2900     face,
2901     face_bound,
2902     closed_shell,
2903     open_shell );
2904  END_TYPE;
2905
2906  TYPE rigid_placement = SELECT
2907    ( axis2_placement_3d,
2908     su_parameters );
2909  END_TYPE;
2910
2911  TYPE role_select = SELECT
2912    ( action_assignment,
2913     action_request_assignment,
2914     approval_assignment,
2915     approval_date_time,
2916     certification_assignment,
2917     contract_assignment,
2918     document_reference,
2919     effectivity_assignment,
2920     group_assignment,
2921     name_assignment,
2922     security_classification_assignment );
2923  END_TYPE;
2924
2925  TYPE rule_superseded_item = SELECT
2926    ( product_definition_formation );
2927  END_TYPE;
2928
2929  TYPE second_in_minute = REAL;
2930  WHERE
2931    wr1: ( ( 0 <= SELF ) AND ( SELF <= 60 ) );
2932  END_TYPE;
2933
2934  TYPE security_classification_item = SELECT
2935    ( action,
2936     action_directive,
2937     action_property,
2938     applied_action_assignment,
2939     assembly_component_usage,
2940     assembly_component_usage_substitute,
2941     class_system,
2942     configuration_design,
2943     configuration_effectivity,
2944     configured_effectivity_assignment,
2945     document,
2946     document_file,
2947     draughting_model,
2948     drawing_revision,
2949     executed_action,
2950     general_property,
2951     make_from_usage_option,
2952     material_designation,
2953     mechanical_design_geometric_presentation_representation,
2954     organizational_project,
2955     presentation_area,
2956     product,
2957     product_concept,
2958     product_concept_feature,
2959     product_concept_feature_category,
2960     product_definition,
2961     product_definition_formation,
2962     product_definition_relationship,
2963     product_definition_usage,
2964     property_definition,
2965     resource_property,
2966     shape_representation,
2967     versioned_action_request );
2968  END_TYPE;
2969
2970  TYPE set_inner_area_boundary = SET [1 : ?] OF bounded_primitive_2d;
2971  END_TYPE;
2972
2973  TYPE set_of_reversible_topology_item = SET [0 : ?] OF reversible_topology_item;
2974  END_TYPE;
2975
2976  TYPE set_representation_item = SET [1 : ?] OF representation_item;
2977  END_TYPE;
2978
2979  TYPE shading_curve_method = ENUMERATION OF
2980    ( constant_colour,
2981     linear_colour );
2982  END_TYPE;
2983
2984  TYPE shading_surface_method = ENUMERATION OF
2985    ( constant_shading,
2986     colour_shading,
2987     dot_shading,
2988     normal_shading );
2989  END_TYPE;
2990
2991  TYPE shape_data_quality_assessment_specification_select = SELECT
2992    ( shape_data_quality_assessment_by_logical_test,
2993     shape_data_quality_assessment_by_numerical_test );
2994  END_TYPE;
2995
2996  TYPE shape_data_quality_value_limit_type_select = SELECT
2997    ( shape_data_quality_value_range,
2998     shape_data_quality_value_limit );
2999  END_TYPE;
3000
3001  TYPE shape_definition = SELECT
3002    ( product_definition_shape,
3003     shape_aspect,
3004     shape_aspect_relationship );
3005  END_TYPE;
3006
3007  TYPE shape_dimension_representation_item = SELECT
3008    ( compound_representation_item,
3009     descriptive_representation_item,
3010     measure_representation_item,
3011     placement );
3012  END_TYPE;
3013
3014  TYPE shape_model = SELECT
3015    ( constructive_geometry_representation,
3016     shape_representation );
3017  END_TYPE;
3018
3019  TYPE shape_representation_item = SELECT
3020    ( geometric_representation_item,
3021     topological_representation_item );
3022  END_TYPE;
3023
3024  TYPE shape_representation_with_parameters_items = SELECT
3025    ( descriptive_representation_item,
3026     direction,
3027     measure_representation_item,
3028     placement );
3029  END_TYPE;
3030
3031  TYPE shell = SELECT
3032    ( vertex_shell,
3033     wire_shell,
3034     open_shell,
3035     closed_shell );
3036  END_TYPE;
3037
3038  TYPE si_prefix = ENUMERATION OF
3039    ( exa,
3040     peta,
3041     tera,
3042     giga,
3043     mega,
3044     kilo,
3045     hecto,
3046     deca,
3047     deci,
3048     centi,
3049     milli,
3050     micro,
3051     nano,
3052     pico,
3053     femto,
3054     atto );
3055  END_TYPE;
3056
3057  TYPE si_unit_name = ENUMERATION OF
3058    ( metre,
3059     gram,
3060     second,
3061     ampere,
3062     kelvin,
3063     mole,
3064     candela,
3065     radian,
3066     steradian,
3067     hertz,
3068     newton,
3069     pascal,
3070     joule,
3071     watt,
3072     coulomb,
3073     volt,
3074     farad,
3075     ohm,
3076     siemens,
3077     weber,
3078     tesla,
3079     henry,
3080     degree_celsius,
3081     lumen,
3082     lux,
3083     becquerel,
3084     gray,
3085     sievert );
3086  END_TYPE;
3087
3088  TYPE simple_datum_reference_modifier = ENUMERATION OF
3089    ( any_cross_section,
3090     any_longitudinal_section,
3091     basic,
3092     contacting_feature,
3093     degree_of_freedom_constraint_u,
3094     degree_of_freedom_constraint_v,
3095     degree_of_freedom_constraint_w,
3096     degree_of_freedom_constraint_x,
3097     degree_of_freedom_constraint_y,
3098     degree_of_freedom_constraint_z,
3099     distance_variable,
3100     free_state,
3101     least_material_requirement,
3102     line,
3103     major_diameter,
3104     maximum_material_requirement,
3105     minor_diameter,
3106     orientation,
3107     pitch_diameter,
3108     plane,
3109     point,
3110     translation );
3111  END_TYPE;
3112
3113  TYPE size_select = SELECT
3114    ( positive_length_measure,
3115     measure_with_unit,
3116     descriptive_measure );
3117  END_TYPE;
3118
3119  TYPE sketch_basis_select = SELECT
3120    ( planar_curve_select,
3121     curve_bounded_surface,
3122     face_surface );
3123  END_TYPE;
3124
3125  TYPE sketch_element_select = SELECT
3126    ( curve,
3127     point );
3128  WHERE
3129    wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF ) );
3130  END_TYPE;
3131
3132  TYPE sketch_type_select = SELECT
3133    ( neutral_sketch_representation,
3134     positioned_sketch,
3135     subsketch );
3136  END_TYPE;
3137
3138  TYPE solid_angle_measure = REAL;
3139  END_TYPE;
3140
3141  TYPE source = ENUMERATION OF
3142    ( made,
3143     bought,
3144     not_known );
3145  END_TYPE;
3146
3147  TYPE source_item = SELECT
3148    ( identifier,
3149     message );
3150  END_TYPE;
3151
3152  TYPE space_constraint_type = ENUMERATION OF
3153    ( sc_equal,
3154     sc_subspace,
3155     sc_member );
3156  END_TYPE;
3157
3158  TYPE spatial_rotation = SELECT
3159    ( ypr_rotation,
3160     rotation_about_direction );
3161  END_TYPE;
3162
3163  TYPE spherical_pair_select = SELECT
3164    ( spherical_pair,
3165     spherical_pair_with_pin );
3166  END_TYPE;
3167
3168  TYPE start_request_item = SELECT
3169    ( product_definition_formation );
3170  END_TYPE;
3171
3172  TYPE statistical_value_type = ENUMERATION OF
3173    ( number_of_inspected_instances,
3174     number_of_quality_defects_detected );
3175  END_TYPE;
3176
3177  TYPE string_representation_item_select = SELECT
3178    ( descriptive_representation_item,
3179     included_text_block,
3180     structured_text_composition );
3181  END_TYPE;
3182
3183  TYPE style_context_select = SELECT
3184    ( group,
3185     presentation_layer_assignment,
3186     presentation_set,
3187     representation,
3188     representation_item,
3189     representation_relationship );
3190  END_TYPE;
3191
3192  TYPE styled_item_target = SELECT
3193    ( geometric_representation_item,
3194     mapped_item,
3195     representation,
3196     topological_representation_item );
3197  END_TYPE;
3198
3199  TYPE summary_report_type = ENUMERATION OF
3200    ( unspecified,
3201     conclusion_only,
3202     number_of_quality_defects,
3203     number_of_inspections_and_conclusion,
3204     full_statistics );
3205  END_TYPE;
3206
3207  TYPE supported_item = SELECT
3208    ( action_directive,
3209     action,
3210     action_method );
3211  END_TYPE;
3212
3213  TYPE surface_boundary_type = ENUMERATION OF
3214    ( u_parameter_min,
3215     v_parameter_min,
3216     u_parameter_max,
3217     v_parameter_max );
3218  END_TYPE;
3219
3220  TYPE surface_model = SELECT
3221    ( face_based_surface_model,
3222     shell_based_surface_model );
3223  END_TYPE;
3224
3225  TYPE surface_or_solid_model = SELECT
3226    ( surface_model,
3227     solid_model );
3228  END_TYPE;
3229
3230  TYPE surface_side = ENUMERATION OF
3231    ( positive,
3232     negative,
3233     both );
3234  END_TYPE;
3235
3236  TYPE surface_side_style_select = SELECT
3237    ( surface_side_style,
3238     pre_defined_surface_side_style );
3239  END_TYPE;
3240
3241  TYPE surface_style_element_select = SELECT
3242    ( surface_style_fill_area,
3243     surface_style_boundary,
3244     surface_style_silhouette,
3245     surface_style_segmentation_curve,
3246     surface_style_control_grid,
3247     surface_style_parameter_line,
3248     surface_style_rendering );
3249  END_TYPE;
3250
3251  TYPE swept_surface_or_solid = SELECT
3252    ( swept_surface,
3253     swept_face_solid,
3254     swept_area_solid );
3255  END_TYPE;
3256
3257  TYPE symbol_style_select = SELECT
3258    ( symbol_colour );
3259  END_TYPE;
3260
3261  TYPE tangent_contact_type = ENUMERATION OF
3262    ( point_contact,
3263     curve_contact,
3264     surface_contact );
3265  END_TYPE;
3266
3267  TYPE tessellated_edge_or_vertex = SELECT
3268    ( tessellated_edge,
3269     tessellated_vertex );
3270  END_TYPE;
3271
3272  TYPE text = STRING;
3273  END_TYPE;
3274
3275  TYPE text_alignment = label;
3276  END_TYPE;
3277
3278  TYPE text_delineation = label;
3279  END_TYPE;
3280
3281  TYPE text_or_character = SELECT
3282    ( annotation_text,
3283     annotation_text_character,
3284     defined_character_glyph,
3285     composite_text,
3286     text_literal );
3287  END_TYPE;
3288
3289  TYPE text_path = ENUMERATION OF
3290    ( left,
3291     right,
3292     up,
3293     down );
3294  END_TYPE;
3295
3296  TYPE text_string_representation_item = SELECT
3297    ( text_literal,
3298     annotation_text,
3299     annotation_text_character,
3300     defined_character_glyph,
3301     composite_text,
3302     axis2_placement );
3303  END_TYPE;
3304
3305  TYPE thermodynamic_temperature_measure = REAL;
3306  END_TYPE;
3307
3308  TYPE time_interval_item = SELECT
3309    ( action,
3310     action_directive,
3311     action_method,
3312     action_property,
3313     action_relationship,
3314     action_request_solution,
3315     alternate_product_relationship,
3316     applied_action_assignment,
3317     applied_classification_assignment,
3318     applied_person_and_organization_assignment,
3319     approval_status,
3320     assembly_component_usage_substitute,
3321     certification,
3322     class,
3323     class_system,
3324     configuration_design,
3325     configuration_effectivity,
3326     configuration_item,
3327     configured_effectivity_assignment,
3328     contract,
3329     document_file,
3330     draughting_model,
3331     drawing_revision,
3332     executed_action,
3333     general_property,
3334     material_designation,
3335     mechanical_design_geometric_presentation_representation,
3336     organization_relationship,
3337     organizational_project,
3338     person_and_organization,
3339     presentation_area,
3340     product,
3341     product_concept,
3342     product_concept_feature,
3343     product_concept_feature_association,
3344     product_concept_feature_category,
3345     product_concept_feature_category_usage,
3346     product_definition,
3347     product_definition_formation,
3348     product_definition_formation_relationship,
3349     product_definition_relationship,
3350     product_definition_substitute,
3351     property_definition,
3352     requirement_for_action_resource,
3353     resource_property,
3354     security_classification,
3355     security_classification_level,
3356     shape_representation,
3357     time_interval_based_effectivity,
3358     versioned_action_request );
3359  END_TYPE;
3360
3361  TYPE time_measure = REAL;
3362  END_TYPE;
3363
3364  TYPE tolerance_method_definition = SELECT
3365    ( limits_and_fits,
3366     tolerance_value );
3367  END_TYPE;
3368
3369  TYPE tolerance_zone_target = SELECT
3370    ( dimensional_location,
3371     dimensional_size,
3372     geometric_tolerance,
3373     general_datum_reference );
3374  END_TYPE;
3375
3376  TYPE transformation = SELECT
3377    ( item_defined_transformation,
3378     functionally_defined_transformation );
3379  END_TYPE;
3380
3381  TYPE transition_code = ENUMERATION OF
3382    ( discontinuous,
3383     continuous,
3384     cont_same_gradient,
3385     cont_same_gradient_same_curvature );
3386  END_TYPE;
3387
3388  TYPE trim_condition_select = SELECT
3389    ( length_measure,
3390     plane_angle_measure,
3391     generalized_surface_select,
3392     solid_model );
3393  END_TYPE;
3394
3395  TYPE trim_intent = ENUMERATION OF
3396    ( blind,
3397     offset,
3398     through_all,
3399     unspecified,
3400     up_to_next );
3401  END_TYPE;
3402
3403  TYPE trimming_preference = ENUMERATION OF
3404    ( cartesian,
3405     parameter,
3406     unspecified );
3407  END_TYPE;
3408
3409  TYPE trimming_select = SELECT
3410    ( cartesian_point,
3411     parameter_value );
3412  END_TYPE;
3413
3414  TYPE tuple_space = SELECT
3415    ( product_space,
3416     extended_tuple_space );
3417  END_TYPE;
3418
3419  TYPE u_direction_count = INTEGER;
3420  WHERE
3421    wr1: ( SELF > 1 );
3422  END_TYPE;
3423
3424  TYPE u_or_v_parameter = ENUMERATION OF
3425    ( u_parameter,
3426     v_parameter );
3427  END_TYPE;
3428
3429  TYPE unit = SELECT
3430    ( derived_unit,
3431     named_unit );
3432  END_TYPE;
3433
3434  TYPE used_quality_representation_select = SELECT
3435    ( data_quality_criteria_representation,
3436     data_quality_inspection_result_representation );
3437  END_TYPE;
3438
3439  TYPE v_direction_count = INTEGER;
3440  WHERE
3441    wr1: ( SELF > 1 );
3442  END_TYPE;
3443
3444  TYPE value_format_type = identifier;
3445  WHERE
3446    wr1: ( LENGTH( SELF ) <= 80 );
3447  END_TYPE;
3448
3449  TYPE value_qualifier = SELECT
3450    ( precision_qualifier,
3451     type_qualifier,
3452     uncertainty_qualifier,
3453     value_format_type_qualifier );
3454  END_TYPE;
3455
3456  TYPE vector_or_direction = SELECT
3457    ( direction,
3458     vector );
3459  END_TYPE;
3460
3461  TYPE velocity_measure = REAL;
3462  END_TYPE;
3463
3464  TYPE volume_measure = REAL;
3465  END_TYPE;
3466
3467  TYPE week_in_year_number = INTEGER;
3468  WHERE
3469    wr1: ( ( 1 <= SELF ) AND ( SELF <= 53 ) );
3470  END_TYPE;
3471
3472  TYPE work_item = SELECT
3473    ( product_definition_formation );
3474  END_TYPE;
3475
3476  TYPE year_number = INTEGER;
3477  END_TYPE;
3478
3479  TYPE ypr_enumeration = ENUMERATION OF
3480    ( yaw,
3481     pitch,
3482     roll );
3483  END_TYPE;
3484
3485  TYPE ypr_rotation = ARRAY [ypr_index( yaw ) : ypr_index( roll )] OF plane_angle_measure;
3486  END_TYPE;
3487
3488  TYPE zero_or_one = nonnegative_integer;
3489  WHERE
3490    in_range: ( ( SELF = 0 ) OR ( SELF = 1 ) );
3491  END_TYPE;
3492
3493  ENTITY abrupt_change_of_surface_normal
3494    SUBTYPE OF ( geometry_with_local_irregularity );
3495      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
3496      small_vector_tolerance                 : length_measure;
3497      test_point_distance_tolerance          : length_measure;
3498    WHERE
3499      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
3500      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'] );
3501      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
3502               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] );
3503      wr4: validate_accuracy_types( SELF, [] );
3504  END_ENTITY;
3505
3506  ENTITY abs_function
3507    SUBTYPE OF ( unary_function_call );
3508  END_ENTITY;
3509
3510  ENTITY absorbed_dose_measure_with_unit
3511    SUBTYPE OF ( measure_with_unit );
3512    WHERE
3513      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABSORBED_DOSE_UNIT' IN TYPEOF( SELF\measure_with_unit.
3514               unit_component ) );
3515  END_ENTITY;
3516
3517  ENTITY absorbed_dose_unit
3518    SUBTYPE OF ( derived_unit );
3519    WHERE
3520      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.gray ) );
3521  END_ENTITY;
3522
3523  ENTITY abstract_variable
3524    SUBTYPE OF ( property_definition, property_definition_representation, representation, representation_item );
3525  END_ENTITY;
3526
3527  ENTITY abstracted_expression_function
3528    SUBTYPE OF ( maths_function, quantifier_expression );
3529    DERIVE
3530      SELF\quantifier_expression.variables  : LIST [1 : ?] OF UNIQUE generic_variable := remove_first( SELF\
3531                                                multiple_arity_generic_expression.operands );
3532      expr                                  : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
3533    WHERE
3534      wr1: ( SIZEOF( QUERY ( operand <* SELF\multiple_arity_generic_expression.operands | ( NOT has_values_space( operand ) ) ) )
3535               = 0 );
3536  END_ENTITY;
3537
3538  ENTITY acceleration_measure_with_unit
3539    SUBTYPE OF ( measure_with_unit );
3540    WHERE
3541      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACCELERATION_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
3542  END_ENTITY;
3543
3544  ENTITY acceleration_unit
3545    SUBTYPE OF ( derived_unit );
3546    WHERE
3547      wr1: ( derive_dimensional_exponents( SELF ) = dimensional_exponents( 1, 0, -2, 0, 0, 0, 0 ) );
3548  END_ENTITY;
3549
3550  ENTITY acos_function
3551    SUBTYPE OF ( unary_function_call );
3552  END_ENTITY;
3553
3554  ENTITY action;
3555      name           : label;
3556      description    : OPTIONAL text;
3557      chosen_method  : action_method;
3558    DERIVE
3559      id  : identifier := get_id_value( SELF );
3560    WHERE
3561      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
3562  END_ENTITY;
3563
3564  ENTITY action_assignment
3565    ABSTRACT SUPERTYPE;
3566      assigned_action  : action;
3567    DERIVE
3568      role  : object_role := get_role( SELF );
3569    WHERE
3570      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
3571               1 );
3572  END_ENTITY;
3573
3574  ENTITY action_directive;
3575      name         : label;
3576      description  : OPTIONAL text;
3577      analysis     : text;
3578      comment      : text;
3579      requests     : SET [1 : ?] OF versioned_action_request;
3580  END_ENTITY;
3581
3582  ENTITY action_method;
3583      name         : label;
3584      description  : OPTIONAL text;
3585      consequence  : text;
3586      purpose      : text;
3587  END_ENTITY;
3588
3589  ENTITY action_method_assignment
3590    ABSTRACT SUPERTYPE;
3591      assigned_action_method  : action_method;
3592      role                    : action_method_role;
3593  END_ENTITY;
3594
3595  ENTITY action_method_relationship;
3596      name             : label;
3597      description      : OPTIONAL text;
3598      relating_method  : action_method;
3599      related_method   : action_method;
3600  END_ENTITY;
3601
3602  ENTITY action_method_role;
3603      name         : label;
3604      description  : OPTIONAL text;
3605  END_ENTITY;
3606
3607  ENTITY action_property;
3608      name         : label;
3609      description  : text;
3610      definition   : characterized_action_definition;
3611  END_ENTITY;
3612
3613  ENTITY action_property_representation;
3614      name            : label;
3615      description     : text;
3616      property        : action_property;
3617      representation  : representation;
3618  END_ENTITY;
3619
3620  ENTITY action_relationship;
3621      name             : label;
3622      description      : OPTIONAL text;
3623      relating_action  : action;
3624      related_action   : action;
3625  END_ENTITY;
3626
3627  ENTITY action_request_assignment
3628    ABSTRACT SUPERTYPE;
3629      assigned_action_request  : versioned_action_request;
3630    DERIVE
3631      role  : object_role := get_role( SELF );
3632    WHERE
3633      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
3634               1 );
3635  END_ENTITY;
3636
3637  ENTITY action_request_solution;
3638      method   : action_method;
3639      request  : versioned_action_request;
3640    DERIVE
3641      description  : text := get_description_value( SELF );
3642      name         : label := get_name_value( SELF );
3643    WHERE
3644      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
3645               <= 1 );
3646      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
3647  END_ENTITY;
3648
3649  ENTITY action_request_status;
3650      status            : label;
3651      assigned_request  : versioned_action_request;
3652  END_ENTITY;
3653
3654  ENTITY action_resource;
3655      name         : label;
3656      description  : OPTIONAL text;
3657      usage        : SET [1 : ?] OF supported_item;
3658      kind         : action_resource_type;
3659  END_ENTITY;
3660
3661  ENTITY action_resource_requirement;
3662      name         : label;
3663      description  : text;
3664      kind         : resource_requirement_type;
3665      operations   : SET [1 : ?] OF characterized_action_definition;
3666  END_ENTITY;
3667
3668  ENTITY action_resource_type;
3669      name  : label;
3670  END_ENTITY;
3671
3672  ENTITY action_status;
3673      status           : label;
3674      assigned_action  : executed_action;
3675  END_ENTITY;
3676
3677  ENTITY actuated_kinematic_pair
3678    SUBTYPE OF ( kinematic_pair );
3679      t_x  : OPTIONAL actuated_direction;
3680      t_y  : OPTIONAL actuated_direction;
3681      t_z  : OPTIONAL actuated_direction;
3682      r_x  : OPTIONAL actuated_direction;
3683      r_y  : OPTIONAL actuated_direction;
3684      r_z  : OPTIONAL actuated_direction;
3685  END_ENTITY;
3686
3687  ENTITY add_element
3688    SUBTYPE OF ( change_element );
3689  END_ENTITY;
3690
3691  ENTITY address;
3692      internal_location        : OPTIONAL label;
3693      street_number            : OPTIONAL label;
3694      street                   : OPTIONAL label;
3695      postal_box               : OPTIONAL label;
3696      town                     : OPTIONAL label;
3697      region                   : OPTIONAL label;
3698      postal_code              : OPTIONAL label;
3699      country                  : OPTIONAL label;
3700      facsimile_number         : OPTIONAL label;
3701      telephone_number         : OPTIONAL label;
3702      electronic_mail_address  : OPTIONAL label;
3703      telex_number             : OPTIONAL label;
3704    DERIVE
3705      name  : label := get_name_value( SELF );
3706      url   : identifier := get_id_value( SELF );
3707    WHERE
3708      wr1: ( EXISTS( internal_location ) OR EXISTS( street_number ) OR EXISTS( street ) OR EXISTS( postal_box ) OR EXISTS( town )
3709               OR EXISTS( region ) OR EXISTS( postal_code ) OR EXISTS( country ) OR EXISTS( facsimile_number ) OR EXISTS(
3710               telephone_number ) OR EXISTS( electronic_mail_address ) OR EXISTS( telex_number ) );
3711  END_ENTITY;
3712
3713  ENTITY advanced_brep_shape_representation
3714    SUBTYPE OF ( shape_representation );
3715    WHERE
3716      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3717               + 'MANIFOLD_SOLID_BREP' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
3718               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3719               + 'AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
3720      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
3721               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF( it ) ) = 1 ) ) ) > 0 );
3722      wr3: ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3723               + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT ( SIZEOF(
3724               QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3725               + 'ADVANCED_FACE'  IN TYPEOF( fcs ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
3726      wr4: ( SIZEOF( QUERY ( msb <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP'
3727               IN TYPEOF( it ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF( msb\
3728               manifold_solid_brep.outer ) ) ) ) = 0 );
3729      wr5: ( SIZEOF( QUERY ( brv <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN
3730               TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation ) )
3731               = 0 ) ) ) ) = 0 );
3732      wr6: ( SIZEOF( QUERY ( mi <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
3733               TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_BREP_SHAPE_REPRESENTATION' IN
3734               TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
3735  END_ENTITY;
3736
3737  ENTITY advanced_face
3738    SUBTYPE OF ( face_surface );
3739    WHERE
3740      wr1 : ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE',
3741                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' ,
3742                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' ] * TYPEOF( face_geometry ) ) = 1 );
3743      wr2 : ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'
3744                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT (
3745                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( oe\oriented_edge.edge_element ) ) ) ) )
3746                = 0 ) ) ) ) = 0 );
3747      wr3 : ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'
3748                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( SIZEOF( [
3749                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
3750                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3751                + 'SURFACE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] * TYPEOF( oe.edge_element\
3752                edge_curve.edge_geometry ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
3753      wr4 : ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'
3754                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( (
3755                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe\edge.edge_start ) ) AND (
3756                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT'  IN TYPEOF( oe\edge.edge_start\vertex_point.
3757                vertex_geometry ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF( oe\edge.
3758                edge_end ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( oe\edge.edge_end\
3759                vertex_point.vertex_geometry ) ) ) ) ) ) = 0 ) ) ) ) = 0 );
3760      wr5 : ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'
3761                IN TYPEOF( bnds.bound ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF(
3762                elp_fbnds.bound ) ) ) ) = 0 );
3763      wr6 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF( face_geometry ) ) ) OR (
3764                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3765                + 'CONIC' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE',
3766                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' ] * TYPEOF( face_geometry\swept_surface.
3767                swept_curve ) ) = 1 ) );
3768      wr7 : ( SIZEOF( QUERY ( vlp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3769                + 'VERTEX_LOOP'  IN TYPEOF( bnds.bound ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3770                + 'VERTEX_POINT'  IN TYPEOF( vlp_fbnds\face_bound.bound\vertex_loop.loop_vertex ) ) AND (
3771                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT'  IN TYPEOF( vlp_fbnds\face_bound.bound\
3772                vertex_loop.loop_vertex\vertex_point.vertex_geometry ) ) ) ) ) ) = 0 );
3773      wr8 : ( SIZEOF( QUERY ( bnd <* bounds | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
3774                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' ] * TYPEOF( bnd.bound ) ) = 1 ) ) ) ) = 0 );
3775      wr9 : ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'
3776                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( (
3777                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'  IN TYPEOF( oe\oriented_edge.edge_element\
3778                edge_curve.edge_geometry ) ) AND ( NOT ( SIZEOF( QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\
3779                surface_curve.associated_geometry | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF(
3780                sc_ag ) ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 );
3781      wr10: ( ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF( face_geometry ) ) ) OR ( NOT
3782                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF( face_geometry\swept_surface.swept_curve ) ) )
3783                OR ( SIZEOF( face_geometry\swept_surface.swept_curve\polyline.points ) >= 3 ) ) AND ( SIZEOF(
3784                QUERY ( elp_fbnds <* QUERY ( bnds <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
3785                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( (
3786                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'  IN TYPEOF( oe\oriented_edge.edge_element\edge_curve.
3787                edge_geometry ) ) AND ( NOT ( SIZEOF( oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points ) >=
3788                3 ) ) ) ) ) = 0 ) ) ) ) = 0 ) );
3789  END_ENTITY;
3790
3791  ENTITY agc_with_dimension
3792    SUBTYPE OF ( angle_geometric_constraint );
3793      angle_value  : plane_angle_measure;
3794  END_ENTITY;
3795
3796  ENTITY all_around_shape_aspect
3797    SUBTYPE OF ( continuous_shape_aspect );
3798  END_ENTITY;
3799
3800  ENTITY alternate_product_relationship;
3801      name        : label;
3802      definition  : OPTIONAL text;
3803      alternate   : product;
3804      base        : product;
3805      basis       : text;
3806    UNIQUE
3807      ur1 : alternate, base;
3808    WHERE
3809      wr1: ( alternate :<>: base );
3810  END_ENTITY;
3811
3812  ENTITY amount_of_substance_measure_with_unit
3813    SUBTYPE OF ( measure_with_unit );
3814    WHERE
3815      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AMOUNT_OF_SUBSTANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.
3816               unit_component ) );
3817  END_ENTITY;
3818
3819  ENTITY amount_of_substance_unit
3820    SUBTYPE OF ( named_unit );
3821    WHERE
3822      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
3823               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
3824               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
3825               amount_of_substance_exponent = 1 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
3826  END_ENTITY;
3827
3828  ENTITY and_expression
3829    SUBTYPE OF ( multiple_arity_boolean_expression );
3830  END_ENTITY;
3831
3832  ENTITY angle_assembly_constraint_with_dimension
3833    SUBTYPE OF ( binary_assembly_constraint, agc_with_dimension );
3834  END_ENTITY;
3835
3836  ENTITY angle_direction_reference
3837    SUBTYPE OF ( representation_item_relationship, geometric_representation_item );
3838      SELF\representation_item_relationship.relating_representation_item : orientation_basis_select;
3839      SELF\representation_item_relationship.related_representation_item : angle_direction_reference_select;
3840    WHERE
3841      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_PATH' IN TYPEOF( related_representation_item ) ) AND (
3842               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MIN_AND_MAJOR_PLY_ORIENTATION_BASIS'  IN TYPEOF(
3843               relating_representation_item ) ) ) OR ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_PATH' IN
3844               TYPEOF( related_representation_item ) ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'
3845               IN TYPEOF( relating_representation_item ) ) ) );
3846  END_ENTITY;
3847
3848  ENTITY angle_geometric_constraint
3849    SUBTYPE OF ( explicit_geometric_constraint );
3850      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
3851      SELF\explicit_constraint.reference_elements : SET [0 : 1] OF linear_geometry_constraint_element;
3852    WHERE
3853      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 1 ) OR ( (
3854               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AGC_WITH_DIMENSION'  IN TYPEOF( SELF ) ) AND ( SIZEOF( SELF\
3855               explicit_constraint.constrained_elements ) = 2 ) ) );
3856  END_ENTITY;
3857
3858  ENTITY angular_dimension
3859    SUBTYPE OF ( dimension_curve_directed_callout );
3860  END_ENTITY;
3861
3862  ENTITY angular_location
3863    SUBTYPE OF ( dimensional_location );
3864      angle_selection  : angle_relator;
3865  END_ENTITY;
3866
3867  ENTITY angular_size
3868    SUBTYPE OF ( dimensional_size );
3869      angle_selection  : angle_relator;
3870  END_ENTITY;
3871
3872  ENTITY angularity_tolerance
3873    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
3874  END_ENTITY;
3875
3876  ENTITY annotation_curve_occurrence
3877    SUPERTYPE OF ( ONEOF ( dimension_curve, leader_curve, projection_curve ) )
3878    SUBTYPE OF ( annotation_occurrence );
3879      SELF\styled_item.item  : curve_or_curve_set;
3880  END_ENTITY;
3881
3882  ENTITY annotation_fill_area
3883    SUBTYPE OF ( geometric_representation_item );
3884      boundaries  : SET [1 : ?] OF curve;
3885    WHERE
3886      wr1: ( ( SELF\geometric_representation_item.dim = 3 ) OR ( SIZEOF( QUERY ( curve <* SELF.boundaries | ( NOT ( (
3887               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'  IN TYPEOF( curve ) ) OR (
3888               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE'  IN TYPEOF( curve ) ) OR ( (
3889               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'  IN TYPEOF( curve ) ) AND ( curve\b_spline_curve.
3890               closed_curve = TRUE ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF( curve ) )
3891               AND ( curve\composite_curve.closed_curve = TRUE ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3892               + 'POLYLINE'  IN TYPEOF( curve ) ) AND ( curve\polyline.points[LOINDEX( curve\polyline.points )] = curve\polyline.
3893               points[HIINDEX( curve\polyline.points )] ) ) ) ) ) ) = 0 ) );
3894  END_ENTITY;
3895
3896  ENTITY annotation_fill_area_occurrence
3897    SUBTYPE OF ( annotation_occurrence );
3898      fill_style_target      : point;
3899      SELF\styled_item.item  : annotation_fill_area;
3900  END_ENTITY;
3901
3902  ENTITY annotation_occurrence
3903    SUPERTYPE OF ( ONEOF ( annotation_curve_occurrence, annotation_fill_area_occurrence, annotation_text_occurrence,
3904        annotation_symbol_occurrence ) ANDOR ONEOF ( annotation_curve_occurrence, annotation_fill_area_occurrence,
3905        annotation_plane, annotation_symbol_occurrence, annotation_text_occurrence, tessellated_annotation_occurrence ) )
3906    SUBTYPE OF ( styled_item );
3907    WHERE
3908      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF ) );
3909      wr2: ( SIZEOF( QUERY ( reps <* using_representations( SELF ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3910               + 'ANNOTATION_REPRESENTATION_SELECT'  IN TYPEOF( reps ) ) ) ) ) = 0 );
3911  END_ENTITY;
3912
3913  ENTITY annotation_occurrence_associativity
3914    SUBTYPE OF ( annotation_occurrence_relationship );
3915    WHERE
3916      wr1: ( SIZEOF( TYPEOF( SELF.related_annotation_occurrence ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
3917               + 'ANNOTATION_FILL_AREA_OCCURRENCE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE',
3918               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' ] ) = 1 );
3919  END_ENTITY;
3920
3921  ENTITY annotation_occurrence_relationship;
3922      name                            : label;
3923      description                     : text;
3924      relating_annotation_occurrence  : annotation_occurrence;
3925      related_annotation_occurrence   : annotation_occurrence;
3926  END_ENTITY;
3927
3928  ENTITY annotation_plane
3929    SUBTYPE OF ( annotation_occurrence, geometric_representation_item );
3930      elements               : OPTIONAL SET [1 : ?] OF annotation_plane_element;
3931      SELF\styled_item.item  : plane_or_planar_box;
3932    WHERE
3933      wr1: ( SELF\geometric_representation_item.dim = 3 );
3934      wr2: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANAR_BOX' ) IN TYPEOF( SELF\styled_item.item ) ) )
3935               OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_3D' ) IN TYPEOF( SELF\styled_item.item
3936               \planar_box.placement ) ) );
3937      wr3: ( ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANAR_BOX' ) IN TYPEOF( SELF\styled_item.item ) ) AND
3938               ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CURVE_STYLE' ) IN TYPEOF( SELF\styled_item.styles[1]\
3939               presentation_style_assignment.styles[1] ) ) ) OR ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANE' )
3940               IN TYPEOF( SELF\styled_item.item ) ) AND ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'FILL_AREA_STYLE' )
3941               IN TYPEOF( SELF\styled_item.styles[1]\presentation_style_assignment.styles[1] ) ) ) );
3942      wr4: ( ( SIZEOF( SELF\styled_item.styles ) = 1 ) AND ( SIZEOF( SELF\styled_item.styles[1]\presentation_style_assignment.
3943               styles ) = 1 ) );
3944  END_ENTITY;
3945
3946  ENTITY annotation_subfigure_occurrence
3947    SUBTYPE OF ( annotation_symbol_occurrence );
3948    WHERE
3949      wr1: ( SIZEOF( QUERY ( sty <* SELF.styles | ( NOT ( SIZEOF( sty.styles ) = 1 ) ) ) ) = 0 );
3950      wr2: ( SIZEOF( QUERY ( sty <* SELF.styles | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NULL_STYLE' IN
3951               TYPEOF( sty.styles[1] ) ) ) ) ) = 0 );
3952      wr3: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF( SELF.item ) );
3953      wr4: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_SUBFIGURE_REPRESENTATION' IN TYPEOF( SELF.item\
3954               mapped_item.mapping_source.mapped_representation ) );
3955  END_ENTITY;
3956
3957  ENTITY annotation_symbol
3958    SUBTYPE OF ( mapped_item );
3959      SELF\mapped_item.mapping_source  : symbol_representation_map;
3960      SELF\mapped_item.mapping_target  : symbol_target;
3961    WHERE
3962      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF ) );
3963  END_ENTITY;
3964
3965  ENTITY annotation_symbol_occurrence
3966    SUBTYPE OF ( annotation_occurrence );
3967      SELF\styled_item.item  : annotation_symbol_occurrence_item;
3968  END_ENTITY;
3969
3970  ENTITY annotation_text
3971    SUBTYPE OF ( mapped_item );
3972      SELF\mapped_item.mapping_target  : axis2_placement;
3973    WHERE
3974      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STRING_REPRESENTATION' IN TYPEOF( SELF\mapped_item.
3975               mapping_source.mapped_representation ) );
3976      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF ) );
3977  END_ENTITY;
3978
3979  ENTITY annotation_text_character
3980    SUBTYPE OF ( mapped_item );
3981      alignment                        : text_alignment;
3982      SELF\mapped_item.mapping_target  : axis2_placement;
3983    WHERE
3984      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTER_GLYPH_SYMBOL' IN TYPEOF( SELF\mapped_item.mapping_source.
3985               mapped_representation ) );
3986      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF ) );
3987  END_ENTITY;
3988
3989  ENTITY annotation_text_occurrence
3990    SUBTYPE OF ( annotation_occurrence );
3991      SELF\styled_item.item  : annotation_text_occurrence_item;
3992  END_ENTITY;
3993
3994  ENTITY apex
3995    SUBTYPE OF ( derived_shape_aspect );
3996  END_ENTITY;
3997
3998  ENTITY application_context;
3999      application  : label;
4000    DERIVE
4001      description  : text := get_description_value( SELF );
4002      id           : identifier := get_id_value( SELF );
4003    INVERSE
4004      context_elements : SET [1 : ?] OF application_context_element FOR frame_of_reference;
4005    WHERE
4006      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
4007               <= 1 );
4008      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
4009  END_ENTITY;
4010
4011  ENTITY application_context_element
4012    SUPERTYPE OF ( ONEOF ( product_concept_context, product_context, product_definition_context ) );
4013      name                : label;
4014      frame_of_reference  : application_context;
4015  END_ENTITY;
4016
4017  ENTITY application_defined_function
4018    SUBTYPE OF ( maths_function );
4019      explicit_domain  : tuple_space;
4020      explicit_range   : tuple_space;
4021      parameters       : LIST OF maths_value;
4022    WHERE
4023      wr1: expression_is_constant( explicit_domain );
4024      wr2: expression_is_constant( explicit_range );
4025  END_ENTITY;
4026
4027  ENTITY application_protocol_definition;
4028      status                                 : label;
4029      application_interpreted_model_schema_name : label;
4030      application_protocol_year              : year_number;
4031      application                            : application_context;
4032  END_ENTITY;
4033
4034  ENTITY applied_action_assignment
4035    SUBTYPE OF ( action_assignment );
4036      items  : SET [1 : ?] OF action_items;
4037  END_ENTITY;
4038
4039  ENTITY applied_action_method_assignment
4040    SUBTYPE OF ( action_method_assignment );
4041      items  : SET [1 : ?] OF action_method_items;
4042  END_ENTITY;
4043
4044  ENTITY applied_action_request_assignment
4045    SUBTYPE OF ( action_request_assignment );
4046      items  : SET [1 : ?] OF action_request_item;
4047  END_ENTITY;
4048
4049  ENTITY applied_approval_assignment
4050    SUBTYPE OF ( approval_assignment );
4051      items  : SET [1 : ?] OF approval_item;
4052  END_ENTITY;
4053
4054  ENTITY applied_area
4055    SUBTYPE OF ( shape_aspect );
4056    WHERE
4057      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( SELF.of_shape ) );
4058      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4059               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4060               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4061               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
4062      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4063               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4064               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4065               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( ( 2 <= SIZEOF(
4066               impl_rep.used_representation.items ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 3 ) ) ) ) ) = 0 ) ) ) )
4067               = 0 );
4068      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4069               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4070               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4071               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
4072               pdr.used_representation.items | ( NOT ( srwp_i.name IN [ 'orientation', 'effective length', 'maximum length'] ) ) ) )
4073               > 0 ) ) ) ) = 0 ) ) ) = 0 );
4074      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4075               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4076               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4077               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
4078               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4079               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
4080               TYPEOF( it ) ) = 2 ) AND ( it.name = 'effective length' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) <= 1 );
4081      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4082               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4083               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4084               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
4085               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4086               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
4087               TYPEOF( it ) ) = 2 ) AND ( it.name = 'maximum length' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
4088      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4089               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4090               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4091               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
4092               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
4093               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
4094  END_ENTITY;
4095
4096  ENTITY applied_attribute_classification_assignment
4097    SUBTYPE OF ( attribute_classification_assignment );
4098      SELF\attribute_classification_assignment.assigned_class : class;
4099      items                                  : SET [1 : ?] OF attribute_classification_item;
4100  END_ENTITY;
4101
4102  ENTITY applied_certification_assignment
4103    SUBTYPE OF ( certification_assignment );
4104      items  : SET [1 : ?] OF certification_item;
4105  END_ENTITY;
4106
4107  ENTITY applied_classification_assignment
4108    SUBTYPE OF ( classification_assignment );
4109      items  : SET [1 : ?] OF classification_item;
4110  END_ENTITY;
4111
4112  ENTITY applied_contract_assignment
4113    SUBTYPE OF ( contract_assignment );
4114      items  : SET [1 : ?] OF contract_item;
4115  END_ENTITY;
4116
4117  ENTITY applied_date_and_time_assignment
4118    SUBTYPE OF ( date_and_time_assignment );
4119      items  : SET [1 : ?] OF date_and_time_item;
4120  END_ENTITY;
4121
4122  ENTITY applied_date_assignment
4123    SUBTYPE OF ( date_assignment );
4124      items  : SET [1 : ?] OF date_item;
4125  END_ENTITY;
4126
4127  ENTITY applied_document_reference
4128    SUBTYPE OF ( document_reference );
4129      items  : SET [1 : ?] OF document_reference_item;
4130  END_ENTITY;
4131
4132  ENTITY applied_document_usage_constraint_assignment
4133    SUBTYPE OF ( document_usage_constraint_assignment );
4134      items  : SET [1 : ?] OF document_reference_item;
4135  END_ENTITY;
4136
4137  ENTITY applied_effectivity_assignment
4138    SUBTYPE OF ( effectivity_assignment );
4139      items  : SET [1 : ?] OF effectivity_item;
4140  END_ENTITY;
4141
4142  ENTITY applied_event_occurrence_assignment
4143    SUBTYPE OF ( event_occurrence_assignment );
4144      items  : SET [1 : ?] OF event_occurrence_item;
4145  END_ENTITY;
4146
4147  ENTITY applied_external_identification_assignment
4148    SUBTYPE OF ( external_identification_assignment );
4149      items  : SET [1 : ?] OF external_identification_item;
4150  END_ENTITY;
4151
4152  ENTITY applied_group_assignment
4153    SUBTYPE OF ( group_assignment );
4154      items  : SET [1 : ?] OF groupable_item;
4155  END_ENTITY;
4156
4157  ENTITY applied_identification_assignment
4158    SUBTYPE OF ( identification_assignment );
4159      items  : SET [1 : ?] OF identification_item;
4160  END_ENTITY;
4161
4162  ENTITY applied_ineffectivity_assignment
4163    SUBTYPE OF ( effectivity_assignment );
4164      items  : SET [1 : ?] OF effectivity_item;
4165    WHERE
4166      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOT_EFFECTIVITY',
4167               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SERIAL_NUMBERED_EFFECTIVITY' ,
4168               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_EFFECTIVITY' ] * TYPEOF( SELF.
4169               assigned_effectivity ) ) = 0 );
4170  END_ENTITY;
4171
4172  ENTITY applied_name_assignment
4173    SUBTYPE OF ( name_assignment );
4174      item  : name_item;
4175  END_ENTITY;
4176
4177  ENTITY applied_organization_assignment
4178    SUBTYPE OF ( organization_assignment );
4179      items  : SET [1 : ?] OF organization_item;
4180  END_ENTITY;
4181
4182  ENTITY applied_organizational_project_assignment
4183    SUBTYPE OF ( organizational_project_assignment );
4184      items  : SET [1 : ?] OF project_item;
4185  END_ENTITY;
4186
4187  ENTITY applied_person_and_organization_assignment
4188    SUBTYPE OF ( person_and_organization_assignment );
4189      items  : SET [1 : ?] OF person_and_organization_item;
4190  END_ENTITY;
4191
4192  ENTITY applied_presented_item
4193    SUBTYPE OF ( presented_item );
4194      items  : SET [1 : ?] OF presented_item_select;
4195  END_ENTITY;
4196
4197  ENTITY applied_security_classification_assignment
4198    SUBTYPE OF ( security_classification_assignment );
4199      items  : SET [1 : ?] OF security_classification_item;
4200  END_ENTITY;
4201
4202  ENTITY applied_time_interval_assignment
4203    SUBTYPE OF ( time_interval_assignment );
4204      items  : SET [0 : ?] OF time_interval_item;
4205  END_ENTITY;
4206
4207  ENTITY applied_usage_right
4208    SUBTYPE OF ( applied_action_assignment );
4209      SELF\applied_action_assignment.items  : SET [1 : ?] OF ir_usage_item;
4210  END_ENTITY;
4211
4212  ENTITY approval;
4213      status  : approval_status;
4214      level   : label;
4215  END_ENTITY;
4216
4217  ENTITY approval_assignment
4218    ABSTRACT SUPERTYPE;
4219      assigned_approval  : approval;
4220    DERIVE
4221      role  : object_role := get_role( SELF );
4222    WHERE
4223      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
4224               1 );
4225  END_ENTITY;
4226
4227  ENTITY approval_date_time;
4228      date_time       : date_time_select;
4229      dated_approval  : approval;
4230    DERIVE
4231      role  : object_role := get_role( SELF );
4232    WHERE
4233      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
4234               1 );
4235  END_ENTITY;
4236
4237  ENTITY approval_person_organization;
4238      person_organization  : person_organization_select;
4239      authorized_approval  : approval;
4240      role                 : approval_role;
4241  END_ENTITY;
4242
4243  ENTITY approval_relationship;
4244      name               : label;
4245      description        : OPTIONAL text;
4246      relating_approval  : approval;
4247      related_approval   : approval;
4248  END_ENTITY;
4249
4250  ENTITY approval_role;
4251      role  : label;
4252    DERIVE
4253      description  : text := get_description_value( SELF );
4254    WHERE
4255      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
4256               <= 1 );
4257  END_ENTITY;
4258
4259  ENTITY approval_status;
4260      name  : label;
4261  END_ENTITY;
4262
4263  ENTITY area_in_set;
4264      area    : presentation_area;
4265      in_set  : presentation_set;
4266  END_ENTITY;
4267
4268  ENTITY area_measure_with_unit
4269    SUBTYPE OF ( measure_with_unit );
4270    WHERE
4271      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
4272  END_ENTITY;
4273
4274  ENTITY area_unit
4275    SUBTYPE OF ( derived_unit );
4276    WHERE
4277      wr1: ( derive_dimensional_exponents( SELF ) = dimensional_exponents( 2, 0, 0, 0, 0, 0, 0 ) );
4278  END_ENTITY;
4279
4280  ENTITY area_with_outer_boundary
4281    SUBTYPE OF ( half_space_2d );
4282      SELF\half_space_2d.base_curve  : composite_curve;
4283    WHERE
4284      wr1: ( base_curve\composite_curve.closed_curve = TRUE );
4285  END_ENTITY;
4286
4287  ENTITY array_placement_group
4288    SUPERTYPE OF ( ONEOF ( linear_array_placement_group_component, rectangular_array_placement_group_component ) )
4289    SUBTYPE OF ( assembly_group_component );
4290  END_ENTITY;
4291
4292  ENTITY asin_function
4293    SUBTYPE OF ( unary_function_call );
4294  END_ENTITY;
4295
4296  ENTITY assembly_bond_definition
4297    SUBTYPE OF ( shape_aspect );
4298    UNIQUE
4299      ur1 : name;
4300  END_ENTITY;
4301
4302  ENTITY assembly_component
4303    SUBTYPE OF ( component_definition, product_definition_shape );
4304    DERIVE
4305      SELF\property_definition.definition  : assembly_component := SELF;
4306    WHERE
4307      wr1: ( NOT EXISTS( SELF\property_definition.description ) );
4308  END_ENTITY;
4309
4310  ENTITY assembly_component_usage
4311    SUPERTYPE OF ( quantified_assembly_component_usage ANDOR ONEOF ( multi_level_reference_designator,
4312        next_assembly_usage_occurrence, promissory_usage_occurrence, specified_higher_usage_occurrence ) )
4313    SUBTYPE OF ( product_definition_usage );
4314      reference_designator  : OPTIONAL identifier;
4315  END_ENTITY;
4316
4317  ENTITY assembly_component_usage_substitute;
4318      name        : label;
4319      definition  : OPTIONAL text;
4320      base        : assembly_component_usage;
4321      substitute  : assembly_component_usage;
4322    UNIQUE
4323      ur1 : base, substitute;
4324    WHERE
4325      wr1: ( base.relating_product_definition :=: substitute.relating_product_definition );
4326      wr2: ( base :<>: substitute );
4327  END_ENTITY;
4328
4329  ENTITY assembly_geometric_constraint
4330    ABSTRACT SUPERTYPE OF ( ONEOF ( binary_assembly_constraint, fixed_constituent_assembly_constraint ) )
4331    SUBTYPE OF ( explicit_constraint );
4332  END_ENTITY;
4333
4334  ENTITY assembly_group_component
4335    SUBTYPE OF ( assembly_component );
4336  END_ENTITY;
4337
4338  ENTITY assembly_group_component_definition_placement_link
4339    SUBTYPE OF ( product_definition, product_definition_relationship );
4340      SELF\product_definition_relationship.relating_product_definition : assembly_component;
4341      SELF\product_definition_relationship.related_product_definition : assembly_component;
4342    WHERE
4343      wr1: ( SELF\product_definition_relationship.related_product_definition :<>: SELF\product_definition_relationship.
4344               relating_product_definition );
4345      wr2: acyclic_product_definition_relationship( SELF, [SELF\product_definition_relationship.related_product_definition],
4346               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_GROUP_COMPONENT_DEFINITION_PLACEMENT_LINK'  );
4347  END_ENTITY;
4348
4349  ENTITY assembly_joint
4350    SUBTYPE OF ( component_feature_joint );
4351    WHERE
4352      wr1: acyclic_shape_aspect_relationship( SELF, [SELF\shape_aspect_relationship.related_shape_aspect],
4353               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'ASSEMBLY_JOINT' );
4354  END_ENTITY;
4355
4356  ENTITY assigned_requirement
4357    SUBTYPE OF ( group_assignment );
4358      SELF\group_assignment.assigned_group  : requirement_assignment;
4359      items                                 : SET [1 : 1] OF product_definition;
4360  END_ENTITY;
4361
4362  ENTITY atan_function
4363    SUBTYPE OF ( binary_function_call );
4364  END_ENTITY;
4365
4366  ENTITY atom_based_literal
4367    SUBTYPE OF ( generic_literal );
4368      lit_value  : atom_based_value;
4369  END_ENTITY;
4370
4371  ENTITY atomic_formula
4372    SUBTYPE OF ( compound_representation_item );
4373  END_ENTITY;
4374
4375  ENTITY attribute_assertion
4376    SUBTYPE OF ( fact_type, property_definition_representation, representation );
4377  END_ENTITY;
4378
4379  ENTITY attribute_classification_assignment
4380    ABSTRACT SUPERTYPE;
4381      assigned_class  : group;
4382      attribute_name  : label;
4383      role            : classification_role;
4384  END_ENTITY;
4385
4386  ENTITY attribute_language_assignment
4387    SUBTYPE OF ( attribute_classification_assignment );
4388      SELF\attribute_classification_assignment.assigned_class : language;
4389      items                                  : SET [1 : ?] OF attribute_language_item;
4390    WHERE
4391      wr1: ( SELF\attribute_classification_assignment.role.name IN [ 'primary', 'translated'] );
4392      wr2: ( SELF\attribute_classification_assignment.attribute_name <> '' );
4393  END_ENTITY;
4394
4395  ENTITY attribute_value_assignment
4396    ABSTRACT SUPERTYPE;
4397      attribute_name   : label;
4398      attribute_value  : attribute_type;
4399      role             : attribute_value_role;
4400  END_ENTITY;
4401
4402  ENTITY attribute_value_role;
4403      name         : label;
4404      description  : OPTIONAL text;
4405  END_ENTITY;
4406
4407  ENTITY auxiliary_geometric_representation_item
4408    SUBTYPE OF ( geometric_representation_item, variational_representation_item );
4409  END_ENTITY;
4410
4411  ENTITY axis1_placement
4412    SUBTYPE OF ( placement );
4413      axis  : OPTIONAL direction;
4414    DERIVE
4415      z  : direction := NVL( normalise( axis ), dummy_gri || direction( [0, 0, 1] ) );
4416    WHERE
4417      wr1: ( SELF\geometric_representation_item.dim = 3 );
4418  END_ENTITY;
4419
4420  ENTITY axis2_placement_2d
4421    SUBTYPE OF ( placement );
4422      ref_direction  : OPTIONAL direction;
4423    DERIVE
4424      p  : LIST [2 : 2] OF direction := build_2axes( ref_direction );
4425    WHERE
4426      wr1: ( SELF\geometric_representation_item.dim = 2 );
4427  END_ENTITY;
4428
4429  ENTITY axis2_placement_3d
4430    SUBTYPE OF ( placement );
4431      axis           : OPTIONAL direction;
4432      ref_direction  : OPTIONAL direction;
4433    DERIVE
4434      p  : LIST [3 : 3] OF direction := build_axes( axis, ref_direction );
4435    WHERE
4436      wr1: ( SELF\placement.location.dim = 3 );
4437      wr2: ( ( NOT EXISTS( axis ) ) OR ( axis.dim = 3 ) );
4438      wr3: ( ( NOT EXISTS( ref_direction ) ) OR ( ref_direction.dim = 3 ) );
4439      wr4: ( ( NOT EXISTS( axis ) ) OR ( NOT EXISTS( ref_direction ) ) OR ( cross_product( axis, ref_direction ).magnitude > 0 ) );
4440  END_ENTITY;
4441
4442  ENTITY b_spline_basis
4443    SUBTYPE OF ( maths_function, generic_literal );
4444      degree          : nonnegative_integer;
4445      repeated_knots  : LIST [2 : ?] OF REAL;
4446    DERIVE
4447      order      : positive_integer := degree + 1;
4448      num_basis  : positive_integer := SIZEOF( repeated_knots ) - order;
4449    WHERE
4450      wr1: ( num_basis >= order );
4451      wr2: nondecreasing( repeated_knots );
4452      wr3: ( repeated_knots[order] < repeated_knots[num_basis + 1] );
4453  END_ENTITY;
4454
4455  ENTITY b_spline_curve
4456    SUPERTYPE OF ( ONEOF ( uniform_curve, b_spline_curve_with_knots, quasi_uniform_curve, bezier_curve ) ANDOR
4457        rational_b_spline_curve )
4458    SUBTYPE OF ( bounded_curve );
4459      degree               : INTEGER;
4460      control_points_list  : LIST [2 : ?] OF cartesian_point;
4461      curve_form           : b_spline_curve_form;
4462      closed_curve         : LOGICAL;
4463      self_intersect       : LOGICAL;
4464    DERIVE
4465      upper_index_on_control_points  : INTEGER := SIZEOF( control_points_list ) - 1;
4466      control_points                 : ARRAY [0 : upper_index_on_control_points] OF cartesian_point := list_to_array(
4467                                         control_points_list, 0, upper_index_on_control_points );
4468    WHERE
4469      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_CURVE' IN TYPEOF( SELF ) ) OR (
4470               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_CURVE'  IN TYPEOF( SELF ) ) OR (
4471               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_CURVE'  IN TYPEOF( SELF ) ) OR (
4472               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS'  IN TYPEOF( SELF ) ) );
4473  END_ENTITY;
4474
4475  ENTITY b_spline_curve_knot_locator
4476    SUBTYPE OF ( founded_item );
4477      basis_curve  : b_spline_curve;
4478      knot_index   : INTEGER;
4479    WHERE
4480      wr1: ( SIZEOF( using_representations( SELF.basis_curve ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
4481  END_ENTITY;
4482
4483  ENTITY b_spline_curve_segment
4484    SUBTYPE OF ( founded_item );
4485      basis_curve       : b_spline_curve;
4486      start_knot_index  : INTEGER;
4487    WHERE
4488      wr1: ( SIZEOF( using_representations( SELF.basis_curve ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
4489  END_ENTITY;
4490
4491  ENTITY b_spline_curve_with_knots
4492    SUBTYPE OF ( b_spline_curve );
4493      knot_multiplicities  : LIST [2 : ?] OF INTEGER;
4494      knots                : LIST [2 : ?] OF parameter_value;
4495      knot_spec            : knot_type;
4496    DERIVE
4497      upper_index_on_knots  : INTEGER := SIZEOF( knots );
4498    WHERE
4499      wr1: constraints_param_b_spline( degree, upper_index_on_knots, upper_index_on_control_points, knot_multiplicities, knots );
4500      wr2: ( SIZEOF( knot_multiplicities ) = upper_index_on_knots );
4501  END_ENTITY;
4502
4503  ENTITY b_spline_function
4504    SUBTYPE OF ( maths_function, unary_generic_expression );
4505      SELF\unary_generic_expression.operand  : maths_function;
4506      basis                                  : LIST [1 : ?] OF b_spline_basis;
4507    DERIVE
4508      coef  : maths_function := SELF\unary_generic_expression.operand;
4509    WHERE
4510      wr1: function_is_table( coef );
4511      wr2: ( ( space_dimension( coef.range ) = 1 ) AND ( number_superspace_of( factor1( coef.range ) ) = the_reals ) );
4512      wr3: ( SIZEOF( basis ) <= SIZEOF( shape_of_array( coef ) ) );
4513      wr4: compare_basis_and_coef( basis, coef );
4514  END_ENTITY;
4515
4516  ENTITY b_spline_surface
4517    SUPERTYPE OF ( ONEOF ( b_spline_surface_with_knots, uniform_surface, quasi_uniform_surface, bezier_surface ) ANDOR
4518        rational_b_spline_surface )
4519    SUBTYPE OF ( bounded_surface );
4520      u_degree             : INTEGER;
4521      v_degree             : INTEGER;
4522      control_points_list  : LIST [2 : ?] OF LIST [2 : ?] OF cartesian_point;
4523      surface_form         : b_spline_surface_form;
4524      u_closed             : LOGICAL;
4525      v_closed             : LOGICAL;
4526      self_intersect       : LOGICAL;
4527    DERIVE
4528      u_upper         : INTEGER := SIZEOF( control_points_list ) - 1;
4529      v_upper         : INTEGER := SIZEOF( control_points_list[1] ) - 1;
4530      control_points  : ARRAY [0 : u_upper] OF ARRAY [0 : v_upper] OF cartesian_point := make_array_of_array( control_points_list,
4531                          0, u_upper, 0, v_upper );
4532    WHERE
4533      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNIFORM_SURFACE' IN TYPEOF( SELF ) ) OR (
4534               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUASI_UNIFORM_SURFACE'  IN TYPEOF( SELF ) ) OR (
4535               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEZIER_SURFACE'  IN TYPEOF( SELF ) ) OR (
4536               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS'  IN TYPEOF( SELF ) ) );
4537  END_ENTITY;
4538
4539  ENTITY b_spline_surface_knot_locator
4540    SUBTYPE OF ( founded_item );
4541      basis_surface      : b_spline_surface;
4542      knot_index         : INTEGER;
4543      surface_parameter  : u_or_v_parameter;
4544    WHERE
4545      wr1: ( SIZEOF( using_representations( SELF.basis_surface ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
4546  END_ENTITY;
4547
4548  ENTITY b_spline_surface_patch
4549    SUBTYPE OF ( founded_item );
4550      basis_surface       : b_spline_surface;
4551      u_start_knot_index  : INTEGER;
4552      v_start_knot_index  : INTEGER;
4553    WHERE
4554      wr1: ( SIZEOF( using_representations( SELF.basis_surface ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
4555  END_ENTITY;
4556
4557  ENTITY b_spline_surface_strip
4558    SUBTYPE OF ( founded_item );
4559      basis_surface      : b_spline_surface;
4560      start_knot_index   : INTEGER;
4561      surface_parameter  : u_or_v_parameter;
4562    WHERE
4563      wr1: ( SIZEOF( using_representations( SELF.basis_surface ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
4564  END_ENTITY;
4565
4566  ENTITY b_spline_surface_with_knots
4567    SUBTYPE OF ( b_spline_surface );
4568      u_multiplicities  : LIST [2 : ?] OF INTEGER;
4569      v_multiplicities  : LIST [2 : ?] OF INTEGER;
4570      u_knots           : LIST [2 : ?] OF parameter_value;
4571      v_knots           : LIST [2 : ?] OF parameter_value;
4572      knot_spec         : knot_type;
4573    DERIVE
4574      knot_u_upper  : INTEGER := SIZEOF( u_knots );
4575      knot_v_upper  : INTEGER := SIZEOF( v_knots );
4576    WHERE
4577      wr1: constraints_param_b_spline( SELF\b_spline_surface.u_degree, knot_u_upper, SELF\b_spline_surface.u_upper,
4578               u_multiplicities, u_knots );
4579      wr2: constraints_param_b_spline( SELF\b_spline_surface.v_degree, knot_v_upper, SELF\b_spline_surface.v_upper,
4580               v_multiplicities, v_knots );
4581      wr3: ( SIZEOF( u_multiplicities ) = knot_u_upper );
4582      wr4: ( SIZEOF( v_multiplicities ) = knot_v_upper );
4583  END_ENTITY;
4584
4585  ENTITY back_chaining_rule
4586    SUBTYPE OF ( rule_definition );
4587  END_ENTITY;
4588
4589  ENTITY back_chaining_rule_body
4590    SUBTYPE OF ( property_definition, property_definition_representation, representation );
4591  END_ENTITY;
4592
4593  ENTITY background_colour
4594    SUBTYPE OF ( colour );
4595      presentation  : area_or_view;
4596    UNIQUE
4597      ur1 : presentation;
4598  END_ENTITY;
4599
4600  ENTITY barring_hole
4601    SUBTYPE OF ( feature_definition );
4602    WHERE
4603      wr1: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'hole profile' ) AND ( sa.description =
4604               'closed profile occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
4605               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4606               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
4607               description = 'profile usage' ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4608               + 'CIRCULAR_CLOSED_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
4609               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
4610               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ] * TYPEOF( sar.relating_shape_aspect ) ) =
4611               1 ) ) ) ) = 1 ) ) ) ) = 1 );
4612      wr2: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'barring profile' ) AND ( sa.description =
4613               'closed profile occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
4614               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4615               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
4616               description = 'profile usage' ) ) ) ) = 1 ) ) ) ) = 1 );
4617      wr3: ( ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | (
4618               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
4619               used_representation ) ) ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | (
4620               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
4621               used_representation ) ) AND ( 1 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.
4622               items ) <= 2 ) ) ) ) = 1 ) );
4623      wr4: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
4624               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
4625               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( NOT ( i.name IN [ 'orientation',
4626               'base radius' ] ) ) ) ) > 0 ) ) ) ) = 0 );
4627      wr5: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
4628               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
4629               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'base radius' ) AND
4630               ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
4631               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) <> 1 ) ) ) )
4632               = 0 );
4633  END_ENTITY;
4634
4635  ENTITY basic_sparse_matrix
4636    SUBTYPE OF ( explicit_table_function, multiple_arity_generic_expression );
4637      SELF\multiple_arity_generic_expression.operands : LIST [3 : 3] OF maths_function;
4638      default_entry                          : maths_value;
4639      order                                  : ordering_type;
4640    DERIVE
4641      index  : maths_function := SELF\multiple_arity_generic_expression.operands[1];
4642      loc    : maths_function := SELF\multiple_arity_generic_expression.operands[2];
4643      val    : maths_function := SELF\multiple_arity_generic_expression.operands[3];
4644    WHERE
4645      wr1: function_is_1d_table( index );
4646      wr2: function_is_1d_table( loc );
4647      wr3: function_is_1d_table( val );
4648      wr4: check_sparse_index_domain( index.domain, index_base, shape, order );
4649      wr5: check_sparse_index_to_loc( index.range, loc.domain );
4650      wr6: ( loc.domain = val.domain );
4651      wr7: check_sparse_loc_range( loc.range, index_base, shape, order );
4652      wr8: member_of( default_entry, val.range );
4653  END_ENTITY;
4654
4655  ENTITY bead
4656    SUBTYPE OF ( feature_definition );
4657    WHERE
4658      wr1: ( ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | (
4659               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
4660               used_representation ) ) ) ) <= 1 ) AND ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) |
4661               ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
4662               used_representation ) ) AND ( SIZEOF( pdr.used_representation.items ) > 2 ) ) ) ) = 0 ) );
4663      wr2: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
4664               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
4665               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( NOT ( i.name IN [ 'orientation',
4666               'base radius' ] ) ) ) ) > 0 ) ) ) ) = 0 );
4667      wr3: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
4668               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
4669               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'base radius' ) AND
4670               ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
4671               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) > 1 ) ) ) )
4672               = 0 );
4673      wr4: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'sweep path' ) AND ( sa.description =
4674               'path feature component occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
4675               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4676               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
4677               description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4678               + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sar.relating_shape_aspect ) ) ) ) ) = 1 ) ) ) ) = 1 );
4679      wr5: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'bead profile' ) AND ( sa.description =
4680               'open profile occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
4681               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4682               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
4683               description = 'profile usage' ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE',
4684               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' ,
4685               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE' ,
4686               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' ,
4687               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4688               + 'VEE_PROFILE' ] * TYPEOF( sar.relating_shape_aspect ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 1 );
4689      wr6: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'end condition' ) AND ( sa.description =
4690               'bead end occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4691               + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4692               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.name = 'bead end usage' ) AND ( sar.description =
4693               'starting' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD_END' IN TYPEOF( sar.relating_shape_aspect ) ) ) ) )
4694               = 1 ) ) ) ) = 1 );
4695      wr7: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'end condition' ) AND ( sa.description =
4696               'bead end occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4697               + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4698               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.name = 'bead end usage' ) AND ( sar.description =
4699               'ending' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD_END' IN TYPEOF( sar.relating_shape_aspect ) ) ) ) )
4700               = 1 ) ) ) ) = 1 );
4701  END_ENTITY;
4702
4703  ENTITY bead_end
4704    SUBTYPE OF ( shape_aspect );
4705    WHERE
4706      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
4707      wr2: ( SELF.description IN [ 'linear', 'open', 'radiused'] );
4708      wr3: ( ( SELF.description <> 'linear' ) XOR ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations(
4709               SELF ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
4710               used_representation ) ) ) ) > 0 ) );
4711      wr4: ( ( SELF.description <> 'linear' ) OR ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations(
4712               SELF ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
4713               used_representation ) ) AND ( SIZEOF( pdr.used_representation.items ) = 2 ) ) ) ) = 1 ) );
4714      wr5: ( ( SELF.description <> 'linear' ) OR ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations(
4715               SELF ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
4716               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'end length' ) AND
4717               ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
4718               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
4719               = 1 ) );
4720      wr6: ( ( SELF.description <> 'linear' ) OR ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations(
4721               SELF ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
4722               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'end shape' ) AND
4723               ( i\descriptive_representation_item.description IN [ 'straight', 'tapered'] ) AND (
4724               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) ) ) ) = 1 ) ) ) )
4725               = 1 ) );
4726      wr7: ( SIZEOF( QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.'
4727               + 'RELATING_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
4728               IN TYPEOF( sar ) ) AND ( sar.name = 'bead end usage' ) AND ( sar.description IN [ 'starting', 'ending'] ) AND (
4729               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BEAD'  IN TYPEOF( sar.related_shape_aspect.of_shape.definition ) )
4730               AND ( sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'end condition' ) AND ( sar.
4731               related_shape_aspect.of_shape.definition\characterized_object.description = 'bead end occurrence' ) ) ) ) = 1 );
4732  END_ENTITY;
4733
4734  ENTITY between_shape_aspect
4735    SUBTYPE OF ( continuous_shape_aspect );
4736  END_ENTITY;
4737
4738  ENTITY beveled_sheet_representation
4739    SUBTYPE OF ( shape_representation );
4740  END_ENTITY;
4741
4742  ENTITY bezier_curve
4743    SUBTYPE OF ( b_spline_curve );
4744  END_ENTITY;
4745
4746  ENTITY bezier_surface
4747    SUBTYPE OF ( b_spline_surface );
4748  END_ENTITY;
4749
4750  ENTITY binary_assembly_constraint
4751    ABSTRACT SUPERTYPE OF ( ONEOF ( parallel_assembly_constraint, surface_distance_assembly_constraint_with_dimension,
4752        angle_assembly_constraint_with_dimension, perpendicular_assembly_constraint, incidence_assembly_constraint,
4753        coaxial_assembly_constraint, tangent_assembly_constraint ) )
4754    SUBTYPE OF ( assembly_geometric_constraint, representation_relationship_with_transformation );
4755      SELF\representation_relationship.rep_1 : representative_shape_representation;
4756      SELF\representation_relationship.rep_2 : representative_shape_representation;
4757    WHERE
4758      wr1: ( ( SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3 ) AND ( SELF\
4759               explicit_constraint.reference_elements[1]\geometric_representation_item.dim = 3 ) );
4760      wr2: ( ( SELF\representation_relationship.rep_1 IN ( using_representations( SELF\
4761               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
4762               transform_item_1 ) + using_representation_with_mapping( SELF\representation_relationship_with_transformation.
4763               transformation_operator\item_defined_transformation.transform_item_1 ) ) ) AND ( SELF\representation_relationship.
4764               rep_2 IN ( using_representations( SELF\representation_relationship_with_transformation.transformation_operator\
4765               item_defined_transformation.transform_item_2 ) + using_representation_with_mapping( SELF\
4766               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
4767               transform_item_2 ) ) ) );
4768      wr3: ( ( SIZEOF( SELF\explicit_constraint.constrained_elements ) = 1 ) AND ( SIZEOF( SELF\explicit_constraint.
4769               reference_elements ) = 1 ) );
4770      wr4: ( ( SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
4771               transform_item_1 = SELF\explicit_constraint.reference_elements[1] ) AND ( SELF\
4772               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
4773               transform_item_2 = SELF\explicit_constraint.constrained_elements[1] ) );
4774  END_ENTITY;
4775
4776  ENTITY binary_boolean_expression
4777    ABSTRACT SUPERTYPE OF ( ONEOF ( xor_expression, equals_expression ) )
4778    SUBTYPE OF ( boolean_expression, binary_generic_expression );
4779  END_ENTITY;
4780
4781  ENTITY binary_function_call
4782    ABSTRACT SUPERTYPE
4783    SUBTYPE OF ( binary_numeric_expression );
4784  END_ENTITY;
4785
4786  ENTITY binary_generic_expression
4787    ABSTRACT SUPERTYPE
4788    SUBTYPE OF ( generic_expression );
4789      operands  : LIST [2 : 2] OF generic_expression;
4790  END_ENTITY;
4791
4792  ENTITY binary_literal
4793    SUBTYPE OF ( generic_literal );
4794      lit_value  : BINARY;
4795  END_ENTITY;
4796
4797  ENTITY binary_numeric_expression
4798    ABSTRACT SUPERTYPE OF ( ONEOF ( minus_expression, div_expression, mod_expression, slash_expression, power_expression,
4799        binary_function_call ) )
4800    SUBTYPE OF ( numeric_expression, binary_generic_expression );
4801      SELF\binary_generic_expression.operands : LIST [2 : 2] OF numeric_expression;
4802  END_ENTITY;
4803
4804  ENTITY binary_representation_item
4805    SUBTYPE OF ( representation_item );
4806      binary_value  : BINARY;
4807  END_ENTITY;
4808
4809  ENTITY block
4810    SUBTYPE OF ( geometric_representation_item );
4811      position  : axis2_placement_3d;
4812      x         : positive_length_measure;
4813      y         : positive_length_measure;
4814      z         : positive_length_measure;
4815  END_ENTITY;
4816
4817  ENTITY boolean_defined_function
4818    ABSTRACT SUPERTYPE
4819    SUBTYPE OF ( defined_function, boolean_expression );
4820  END_ENTITY;
4821
4822  ENTITY boolean_expression
4823    ABSTRACT SUPERTYPE OF ( ONEOF ( simple_boolean_expression, unary_boolean_expression, binary_boolean_expression,
4824        multiple_arity_boolean_expression, comparison_expression, interval_expression, boolean_defined_function ) )
4825    SUBTYPE OF ( expression );
4826  END_ENTITY;
4827
4828  ENTITY boolean_literal
4829    SUBTYPE OF ( simple_boolean_expression, generic_literal );
4830      the_value  : BOOLEAN;
4831  END_ENTITY;
4832
4833  ENTITY boolean_representation_item
4834    SUBTYPE OF ( representation_item, boolean_literal );
4835  END_ENTITY;
4836
4837  ENTITY boolean_result
4838    SUBTYPE OF ( geometric_representation_item );
4839      operator        : boolean_operator;
4840      first_operand   : boolean_operand;
4841      second_operand  : boolean_operand;
4842  END_ENTITY;
4843
4844  ENTITY boolean_result_2d
4845    SUBTYPE OF ( boolean_result );
4846      SELF\boolean_result.first_operand   : boolean_operand_2d;
4847      SELF\boolean_result.second_operand  : boolean_operand_2d;
4848  END_ENTITY;
4849
4850  ENTITY boolean_variable
4851    SUBTYPE OF ( simple_boolean_expression, variable );
4852  END_ENTITY;
4853
4854  ENTITY boss
4855    SUBTYPE OF ( feature_definition );
4856    WHERE
4857      wr1 : ( SELF\characterized_object.description IN [ 'circular', 'complex', 'rectangular'] );
4858      wr2 : ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4859                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4860                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
4861                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
4862                'boss height occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
4863                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
4864                description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4865                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4866                + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description
4867                = 'linear' ) AND ( sdr.name = 'boss height' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
4868      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4869                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4870                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4871                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( 1 <= SIZEOF( pdr.
4872                used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.items ) <= 2 ) ) ) ) = 1 ) ) ) = 1 );
4873      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4874                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4875                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4876                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
4877                pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'fillet radius' ) ) ) ) =
4878                SIZEOF( pdr.used_representation.items ) ) ) ) ) = 1 ) ) ) = 1 );
4879      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4880                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4881                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4882                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
4883                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4884                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
4885                TYPEOF( it ) ) = 2 ) AND ( it.name = 'fillet radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
4886      wr6 : ( ( NOT ( SELF\characterized_object.description = 'circular' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN(
4887                SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
4888                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
4889                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
4890                | ( ( sa_occ.description = 'circular profile occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(
4891                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4892                sar.description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4893                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4894                + 'CIRCULAR_CLOSED_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
4895      wr7 : ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4896                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4897                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
4898                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
4899                'top condition occurrence'  ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( sa_occ,
4900                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
4901                description = 'boss top usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4902                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4903                + 'BOSS_TOP'  IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
4904      wr8 : ( ( NOT ( SELF\characterized_object.description = 'circular' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN(
4905                SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
4906                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
4907                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
4908                | ( ( sa_occ.description = 'change in diameter occurrence' ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN(
4909                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4910                sar.description = 'taper usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4911                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4912                + 'TAPER'  IN TYPEOF( fcr.related_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS'
4913                IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 0 ) );
4914      wr9 : ( ( NOT ( SELF\characterized_object.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN(
4915                SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
4916                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
4917                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
4918                | ( ( sa_occ.description = 'enclosed boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(
4919                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4920                sar.description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4921                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( SIZEOF( [
4922                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
4923                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ] * TYPEOF( sdr.relating_shape_aspect ) ) =
4924                1 ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
4925      wr10: ( ( NOT ( SELF\characterized_object.description IN [ 'complex', 'rectangular'] ) ) OR ( SIZEOF( QUERY ( pds <*
4926                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
4927                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) ) | ( NOT (
4928                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
4929                | ( ( sa_occ.description = 'change in boundary occurrence' ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN(
4930                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT' ) | ( (
4931                sar.description = 'taper usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4932                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4933                + 'TAPER'  IN TYPEOF( fcr.related_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS'
4934                IN TYPEOF( fcr.relating_shape_aspect ) ) AND ( fcr.related_shape_aspect.description IN [ 'angle taper',
4935                'directed taper' ] ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 0 ) );
4936      wr11: ( ( NOT ( SELF\characterized_object.description = 'rectangular' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
4937                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
4938                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
4939                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
4940                | ( ( sa_occ.description = 'rectangular profile occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(
4941                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
4942                sar.description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4943                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4944                + 'RECTANGULAR_CLOSED_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
4945      wr12: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
4946                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
4947                AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
4948  END_ENTITY;
4949
4950  ENTITY boss_top
4951    SUBTYPE OF ( shape_aspect );
4952    WHERE
4953      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
4954      wr2: ( SELF.description IN [ 'planar', 'complex'] );
4955      wr3: ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
4956               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
4957               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
4958               + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN TYPEOF(
4959               pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
4960      wr4: ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
4961               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
4962               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
4963               + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION' IN TYPEOF(
4964               pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
4965      wr5: ( ( NOT ( SELF.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
4966               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
4967               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
4968               + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( pdr.
4969               used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
4970      wr6: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4971               + 'SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATING_SHAPE_ASPECT' ) | ( ( sar.description = 'boss top usage' ) AND ( sar.
4972               name IN [ 'boss height start', 'boss height end'] ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4973               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( fcr.related_shape_aspect.description =
4974               'top condition occurrence'  ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS' IN TYPEOF( fcr.
4975               related_shape_aspect.of_shape.definition ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS_TOP' IN
4976               TYPEOF( fcr.relating_shape_aspect ) ) ) ) ) >= 1 );
4977      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4978               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4979               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4980               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) <= 1 ) ) ) ) = 0 );
4981      wr8: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4982               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4983               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4984               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
4985               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
4986      wr9: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
4987               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4988               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4989               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
4990               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
4991               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
4992               TYPEOF( it ) ) = 2 ) AND ( it.name = 'top radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
4993  END_ENTITY;
4994
4995  ENTITY bound_parameter_environment
4996    SUBTYPE OF ( environment );
4997    WHERE
4998      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_VARIATIONAL_PARAMETER' IN TYPEOF( SELF\environment.
4999               syntactic_representation ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_ATTRIBUTE_REFERENCE'
5000               IN TYPEOF( SELF\environment.semantics ) ) );
5001  END_ENTITY;
5002
5003  ENTITY bound_variational_parameter
5004    SUBTYPE OF ( variational_parameter );
5005    DERIVE
5006      SELF\variational_parameter.parameter_current_value : maths_value := ?;
5007    WHERE
5008      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_PARAMETER_ENVIRONMENT' IN TYPEOF( SELF\generic_variable.
5009               interpretation ) );
5010  END_ENTITY;
5011
5012  ENTITY boundary_curve
5013    SUBTYPE OF ( composite_curve_on_surface );
5014    WHERE
5015      wr1: SELF\composite_curve.closed_curve;
5016  END_ENTITY;
5017
5018  ENTITY boundary_curve_of_b_spline_or_rectangular_composite_surface
5019    SUBTYPE OF ( founded_item );
5020      basis_surface  : b_spline_or_rectangular_composite_surface_select;
5021      boundary_type  : surface_boundary_type;
5022    WHERE
5023      wr1: ( SIZEOF( using_representations( SELF.basis_surface ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
5024  END_ENTITY;
5025
5026  ENTITY bounded_curve
5027    SUPERTYPE OF ( ONEOF ( polyline, b_spline_curve, trimmed_curve, bounded_pcurve, bounded_surface_curve, composite_curve ) )
5028    SUBTYPE OF ( curve );
5029  END_ENTITY;
5030
5031  ENTITY bounded_pcurve
5032    SUBTYPE OF ( pcurve, bounded_curve );
5033    WHERE
5034      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF( SELF\pcurve.reference_to_curve.items[1] ) );
5035  END_ENTITY;
5036
5037  ENTITY bounded_surface
5038    SUPERTYPE OF ( ONEOF ( b_spline_surface, rectangular_trimmed_surface, curve_bounded_surface, rectangular_composite_surface ) )
5039    SUBTYPE OF ( surface );
5040  END_ENTITY;
5041
5042  ENTITY bounded_surface_curve
5043    SUBTYPE OF ( surface_curve, bounded_curve );
5044    WHERE
5045      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF( SELF\surface_curve.curve_3d ) );
5046  END_ENTITY;
5047
5048  ENTITY box_domain
5049    SUBTYPE OF ( founded_item );
5050      corner   : cartesian_point;
5051      xlength  : positive_length_measure;
5052      ylength  : positive_length_measure;
5053      zlength  : positive_length_measure;
5054    WHERE
5055      wr1: ( SIZEOF( QUERY ( item <* USEDIN( SELF, '' ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5056               + 'BOXED_HALF_SPACE'  IN TYPEOF( item ) ) ) ) ) = 0 );
5057  END_ENTITY;
5058
5059  ENTITY boxed_half_space
5060    SUBTYPE OF ( half_space_solid );
5061      enclosure  : box_domain;
5062  END_ENTITY;
5063
5064  ENTITY breakdown_context
5065    SUBTYPE OF ( product_definition_relationship );
5066  END_ENTITY;
5067
5068  ENTITY breakdown_element_group_assignment
5069    SUBTYPE OF ( group_assignment );
5070      SELF\group_assignment.assigned_group  : product_definition_element_relationship;
5071      items                                 : SET [1 : 1] OF product_definition_or_breakdown_element_usage;
5072  END_ENTITY;
5073
5074  ENTITY breakdown_element_realization
5075    SUBTYPE OF ( characterized_object, product_definition_element_relationship );
5076  END_ENTITY;
5077
5078  ENTITY breakdown_element_usage
5079    SUBTYPE OF ( product_definition_relationship );
5080  END_ENTITY;
5081
5082  ENTITY breakdown_of
5083    SUBTYPE OF ( product_definition_relationship );
5084  END_ENTITY;
5085
5086  ENTITY brep_with_voids
5087    SUBTYPE OF ( manifold_solid_brep );
5088      voids  : SET [1 : ?] OF oriented_closed_shell;
5089  END_ENTITY;
5090
5091  ENTITY bytes_representation_item
5092    SUBTYPE OF ( binary_representation_item );
5093    DERIVE
5094      no_of_bytes  : INTEGER := BLENGTH( SELF\binary_representation_item.binary_value ) DIV 8;
5095    WHERE
5096      wr1: ( ( BLENGTH( SELF\binary_representation_item.binary_value ) MOD 8 ) = 0 );
5097  END_ENTITY;
5098
5099  ENTITY calendar_date
5100    SUBTYPE OF ( date );
5101      day_component    : day_in_month_number;
5102      month_component  : month_in_year_number;
5103    WHERE
5104      wr1: valid_calendar_date( SELF );
5105  END_ENTITY;
5106
5107  ENTITY camera_image
5108    SUPERTYPE OF ( ONEOF ( camera_image_2d_with_scale, camera_image_3d_with_scale ) )
5109    SUBTYPE OF ( mapped_item );
5110      SELF\mapped_item.mapping_source  : camera_usage;
5111      SELF\mapped_item.mapping_target  : planar_box;
5112    WHERE
5113      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF ) );
5114  END_ENTITY;
5115
5116  ENTITY camera_image_2d_with_scale
5117    SUBTYPE OF ( camera_image );
5118    DERIVE
5119      scale  : positive_ratio_measure := SELF\mapped_item.mapping_target\planar_extent.size_in_x DIV SELF\mapped_item.
5120                 mapping_source.mapping_origin\camera_model_d2.view_window\planar_extent.size_in_x;
5121    WHERE
5122      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D2' IN TYPEOF( SELF\mapped_item.mapping_source.
5123               mapping_origin ) );
5124      wr2: ( aspect_ratio( SELF\mapped_item.mapping_target ) = aspect_ratio( SELF\mapped_item.mapping_source.mapping_origin\
5125               camera_model_d2.view_window ) );
5126      wr3: SELF\mapped_item.mapping_source.mapping_origin\camera_model_d2.view_window_clipping;
5127  END_ENTITY;
5128
5129  ENTITY camera_image_3d_with_scale
5130    SUBTYPE OF ( camera_image );
5131    DERIVE
5132      scale  : positive_ratio_measure := SELF\mapped_item.mapping_target\planar_extent.size_in_x DIV SELF\mapped_item.
5133                 mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window.size_in_x;
5134    WHERE
5135      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3' IN TYPEOF( SELF\mapped_item.mapping_source.
5136               mapping_origin ) );
5137      wr2: ( aspect_ratio( SELF\mapped_item.mapping_target ) = aspect_ratio( SELF\mapped_item.mapping_source.mapping_origin\
5138               camera_model_d3.perspective_of_volume.view_window ) );
5139      wr3: ( SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.front_plane_clipping AND SELF\
5140               mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_volume_sides_clipping );
5141      wr4: ( ( SELF\mapped_item.mapping_target\planar_extent.size_in_x > 0 ) AND ( SELF\mapped_item.mapping_target\planar_extent.
5142               size_in_y > 0 ) );
5143      wr5: ( ( SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window.size_in_x > 0 )
5144               AND ( SELF\mapped_item.mapping_source.mapping_origin\camera_model_d3.perspective_of_volume.view_window.size_in_y >
5145               0 ) );
5146      wr6: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_2D' ) IN TYPEOF( SELF\mapped_item.
5147               mapping_target\planar_box.placement ) ) AND ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
5148               'AXIS2_PLACEMENT_3D'  ) IN TYPEOF( SELF\mapped_item.mapping_target\planar_box.placement ) ) ) );
5149  END_ENTITY;
5150
5151  ENTITY camera_model
5152    ABSTRACT SUPERTYPE OF ( ONEOF ( camera_model_d2, camera_model_d3 ) )
5153    SUBTYPE OF ( geometric_representation_item );
5154    WHERE
5155      wr1: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ITEM_DEFINED_TRANSFORMATION.' +
5156               'TRANSFORM_ITEM_1'  ) ) + SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
5157               'REPRESENTATION_MAP.MAPPING_ORIGIN'  ) ) ) > 0 );
5158      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'STYLED_ITEM.ITEM' ) ) = 0 );
5159  END_ENTITY;
5160
5161  ENTITY camera_model_d2
5162    SUBTYPE OF ( camera_model );
5163      view_window           : planar_box;
5164      view_window_clipping  : BOOLEAN;
5165    WHERE
5166      wr1: ( SELF\geometric_representation_item.dim = 2 );
5167  END_ENTITY;
5168
5169  ENTITY camera_model_d3
5170    SUBTYPE OF ( camera_model );
5171      view_reference_system  : axis2_placement_3d;
5172      perspective_of_volume  : view_volume;
5173    WHERE
5174      wr1: ( SELF\geometric_representation_item.dim = 3 );
5175  END_ENTITY;
5176
5177  ENTITY camera_model_d3_multi_clipping
5178    SUBTYPE OF ( camera_model_d3 );
5179      shape_clipping  : SET [1 : ?] OF camera_model_d3_multi_clipping_interection_select;
5180  END_ENTITY;
5181
5182  ENTITY camera_model_d3_multi_clipping_intersection
5183    SUBTYPE OF ( geometric_representation_item );
5184      shape_clipping  : SET [2 : ?] OF camera_model_d3_multi_clipping_interection_select;
5185  END_ENTITY;
5186
5187  ENTITY camera_model_d3_multi_clipping_union
5188    SUBTYPE OF ( geometric_representation_item );
5189      shape_clipping  : SET [2 : ?] OF camera_model_d3_multi_clipping_union_select;
5190  END_ENTITY;
5191
5192  ENTITY camera_model_d3_with_hlhsr
5193    SUBTYPE OF ( camera_model_d3 );
5194      hidden_line_surface_removal  : BOOLEAN;
5195  END_ENTITY;
5196
5197  ENTITY camera_model_with_light_sources
5198    SUBTYPE OF ( camera_model_d3 );
5199      sources  : SET [1 : ?] OF light_source;
5200  END_ENTITY;
5201
5202  ENTITY camera_usage
5203    SUBTYPE OF ( representation_map );
5204      SELF\representation_map.mapping_origin : camera_model;
5205    WHERE
5206      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN TYPEOF( SELF\
5207               representation_map.mapped_representation ) ) );
5208  END_ENTITY;
5209
5210  ENTITY capacitance_measure_with_unit
5211    SUBTYPE OF ( measure_with_unit );
5212    WHERE
5213      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAPACITANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
5214  END_ENTITY;
5215
5216  ENTITY capacitance_unit
5217    SUBTYPE OF ( derived_unit );
5218    WHERE
5219      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.farad ) );
5220  END_ENTITY;
5221
5222  ENTITY cartesian_complex_number_region
5223    SUBTYPE OF ( maths_space, generic_literal );
5224      real_constraint  : real_interval;
5225      imag_constraint  : real_interval;
5226    WHERE
5227      wr1: ( min_exists( real_constraint ) OR max_exists( real_constraint ) OR min_exists( imag_constraint ) OR max_exists(
5228               imag_constraint ) );
5229  END_ENTITY;
5230
5231  ENTITY cartesian_point
5232    SUBTYPE OF ( point );
5233      coordinates  : LIST [1 : 3] OF length_measure;
5234  END_ENTITY;
5235
5236  ENTITY cartesian_transformation_operator
5237    SUPERTYPE OF ( ONEOF ( cartesian_transformation_operator_2d, cartesian_transformation_operator_3d ) )
5238    SUBTYPE OF ( geometric_representation_item, functionally_defined_transformation );
5239      axis1         : OPTIONAL direction;
5240      axis2         : OPTIONAL direction;
5241      local_origin  : cartesian_point;
5242      scale         : OPTIONAL REAL;
5243    DERIVE
5244      scl  : REAL := NVL( scale, 1 );
5245    WHERE
5246      wr1: ( scl > 0 );
5247  END_ENTITY;
5248
5249  ENTITY cartesian_transformation_operator_2d
5250    SUBTYPE OF ( cartesian_transformation_operator );
5251    DERIVE
5252      u  : LIST [2 : 2] OF direction := base_axis( 2, SELF\cartesian_transformation_operator.axis1, SELF\
5253             cartesian_transformation_operator.axis2, ? );
5254    WHERE
5255      wr1: ( SELF\geometric_representation_item.dim = 2 );
5256  END_ENTITY;
5257
5258  ENTITY cartesian_transformation_operator_3d
5259    SUBTYPE OF ( cartesian_transformation_operator );
5260      axis3  : OPTIONAL direction;
5261    DERIVE
5262      u  : LIST [3 : 3] OF direction := base_axis( 3, SELF\cartesian_transformation_operator.axis1, SELF\
5263             cartesian_transformation_operator.axis2, axis3 );
5264    WHERE
5265      wr1: ( SELF\geometric_representation_item.dim = 3 );
5266  END_ENTITY;
5267
5268  ENTITY cc_design_approval
5269    SUBTYPE OF ( approval_assignment );
5270      items  : SET [1 : ?] OF approved_item;
5271  END_ENTITY;
5272
5273  ENTITY cc_design_certification
5274    SUBTYPE OF ( certification_assignment );
5275      items  : SET [1 : ?] OF certified_item;
5276  END_ENTITY;
5277
5278  ENTITY cc_design_contract
5279    SUBTYPE OF ( contract_assignment );
5280      items  : SET [1 : ?] OF contracted_item;
5281  END_ENTITY;
5282
5283  ENTITY cc_design_date_and_time_assignment
5284    SUBTYPE OF ( date_and_time_assignment );
5285      items  : SET [1 : ?] OF date_time_item;
5286  END_ENTITY;
5287
5288  ENTITY cc_design_person_and_organization_assignment
5289    SUBTYPE OF ( person_and_organization_assignment );
5290      items  : SET [1 : ?] OF cc_person_organization_item;
5291    WHERE
5292      wr1: cc_design_person_and_organization_correlation( SELF );
5293  END_ENTITY;
5294
5295  ENTITY cc_design_security_classification
5296    SUBTYPE OF ( security_classification_assignment );
5297      items  : SET [1 : ?] OF cc_classified_item;
5298  END_ENTITY;
5299
5300  ENTITY cc_design_specification_reference
5301    SUBTYPE OF ( document_reference );
5302      items  : SET [1 : ?] OF cc_specified_item;
5303  END_ENTITY;
5304
5305  ENTITY cdgc_with_dimension
5306    SUBTYPE OF ( curve_distance_geometric_constraint );
5307      distance_value  : non_negative_length_measure;
5308  END_ENTITY;
5309
5310  ENTITY celsius_temperature_measure_with_unit
5311    SUBTYPE OF ( measure_with_unit );
5312    WHERE
5313      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF( SELF\measure_with_unit.
5314               unit_component ) );
5315  END_ENTITY;
5316
5317  ENTITY centre_of_symmetry
5318    SUBTYPE OF ( derived_shape_aspect );
5319  END_ENTITY;
5320
5321  ENTITY certification;
5322      name     : label;
5323      purpose  : text;
5324      kind     : certification_type;
5325  END_ENTITY;
5326
5327  ENTITY certification_assignment
5328    ABSTRACT SUPERTYPE;
5329      assigned_certification  : certification;
5330    DERIVE
5331      role  : object_role := get_role( SELF );
5332    WHERE
5333      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
5334               1 );
5335  END_ENTITY;
5336
5337  ENTITY certification_type;
5338      description  : label;
5339  END_ENTITY;
5340
5341  ENTITY chain_based_geometric_item_specific_usage
5342    SUBTYPE OF ( geometric_item_specific_usage, chain_based_item_identified_representation_usage );
5343  END_ENTITY;
5344
5345  ENTITY chain_based_item_identified_representation_usage
5346    SUBTYPE OF ( item_identified_representation_usage );
5347      nodes            : LIST [2 : ?] OF UNIQUE representation;
5348      undirected_link  : LIST [1 : ?] OF chained_representation_link;
5349    DERIVE
5350      root                                   : representation := nodes[1];
5351      SELF\item_identified_representation_usage.used_representation : representation := nodes[HIINDEX( nodes )];
5352      directed_link                          : LIST [1 : ?] OF representation_relationship := get_directed_link( nodes,
5353                                                 undirected_link );
5354      leaf                                   : representation := SELF\item_identified_representation_usage.used_representation;
5355    WHERE
5356      wr1: EXISTS( directed_link );
5357  END_ENTITY;
5358
5359  ENTITY chamfer
5360    SUBTYPE OF ( transition_feature );
5361    WHERE
5362      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5363               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5364               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5365               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
5366               'chamfer face'  ) ) ) ) <= 1 ) ) ) ) = 0 );
5367      wr2: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5368               + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5369               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5370               + 'CHAMFER_OFFSET'  IN TYPEOF( fcr.related_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5371               + 'CHAMFER'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND ( fcr.related_shape_aspect.description = 'first offset' ) ) ) )
5372               = 1 );
5373      wr3: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5374               + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5375               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5376               + 'CHAMFER_OFFSET'  IN TYPEOF( fcr.related_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5377               + 'CHAMFER'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND ( fcr.related_shape_aspect.description = 'second offset' ) ) ) )
5378               = 1 );
5379  END_ENTITY;
5380
5381  ENTITY chamfer_offset
5382    SUBTYPE OF ( shape_aspect );
5383    WHERE
5384      wr1: ( SELF.description IN [ 'first offset', 'second offset'] );
5385      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5386               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5387               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5388               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
5389      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5390               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5391               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5392               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
5393               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5394      wr4: ( ( NOT ( SELF.description = 'first offset' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
5395               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
5396               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5397               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5398               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5399               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5400               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
5401               TYPEOF( it ) ) = 2 ) AND ( it.name = 'offset amount' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
5402      wr5: ( ( NOT ( SELF.description = 'first offset' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
5403               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
5404               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
5405               + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( pdr
5406               .used_representation ) ) AND ( pdr.used_representation.name = 'first face shape' ) ) ) ) <= 1 ) ) ) ) = 0 ) );
5407      wr6: ( ( NOT ( SELF.description = 'second offset' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
5408               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
5409               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5410               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5411               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5412               QUERY ( it <* impl_rep.used_representation.items | ( ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5413               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
5414               TYPEOF( it ) ) = 2 ) AND ( it.name = 'offset amount' ) ) OR ( ( SIZEOF( [
5415               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
5416               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.
5417               name = 'offset angle' ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
5418      wr7: ( ( NOT ( SELF.description = 'second offset' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
5419               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
5420               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
5421               + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( pdr
5422               .used_representation ) ) AND ( pdr.used_representation.name = 'second face shape' ) ) ) ) <= 1 ) ) ) ) = 0 ) );
5423      wr8: ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5424               + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5425               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5426               + 'CHAMFER'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5427               + 'CHAMFER_OFFSET'  IN TYPEOF( sdr.related_shape_aspect ) ) ) ) ) = 1 );
5428  END_ENTITY;
5429
5430  ENTITY change
5431    SUBTYPE OF ( action_assignment );
5432      items  : SET [1 : ?] OF work_item;
5433  END_ENTITY;
5434
5435  ENTITY change_composition_relationship
5436    SUBTYPE OF ( group_relationship );
5437      SELF\group_relationship.relating_group : change_group;
5438      SELF\group_relationship.related_group  : change_element;
5439    DERIVE
5440      composition  : change_group := SELF\group_relationship.relating_group;
5441      element      : change_element := SELF\group_relationship.related_group;
5442  END_ENTITY;
5443
5444  ENTITY change_element
5445    ABSTRACT SUPERTYPE OF ( ONEOF ( modify_element, delete_element, add_element ) )
5446    SUBTYPE OF ( group, characterized_object );
5447  END_ENTITY;
5448
5449  ENTITY change_element_sequence
5450    SUBTYPE OF ( group_relationship );
5451      SELF\group_relationship.relating_group : change_element;
5452      SELF\group_relationship.related_group  : change_element;
5453    DERIVE
5454      next      : change_element := SELF\group_relationship.related_group;
5455      previous  : change_element := SELF\group_relationship.relating_group;
5456  END_ENTITY;
5457
5458  ENTITY change_group
5459    SUBTYPE OF ( group );
5460  END_ENTITY;
5461
5462  ENTITY change_group_assignment
5463    SUBTYPE OF ( group_assignment );
5464      SELF\group_assignment.assigned_group  : change_group;
5465      item                                  : change_relationship_select;
5466  END_ENTITY;
5467
5468  ENTITY change_request
5469    SUBTYPE OF ( action_request_assignment );
5470      items  : SET [1 : ?] OF change_request_item;
5471  END_ENTITY;
5472
5473  ENTITY character_glyph_font_usage;
5474      character  : generic_character_glyph_symbol;
5475      font       : text_font;
5476  END_ENTITY;
5477
5478  ENTITY character_glyph_style_outline
5479    SUBTYPE OF ( founded_item );
5480      outline_style  : curve_style;
5481  END_ENTITY;
5482
5483  ENTITY character_glyph_style_stroke
5484    SUBTYPE OF ( founded_item );
5485      stroke_style  : curve_style;
5486  END_ENTITY;
5487
5488  ENTITY character_glyph_symbol
5489    SUBTYPE OF ( generic_character_glyph_symbol );
5490      character_box   : planar_extent;
5491      baseline_ratio  : ratio_measure;
5492    DERIVE
5493      box_height  : length_measure := character_box.size_in_y;
5494    WHERE
5495      wr1: ( ( 0 <= baseline_ratio ) AND ( baseline_ratio <= 1 ) );
5496      wr2: item_in_context( SELF.character_box, SELF\representation.context_of_items );
5497      wr3: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF( SELF.box_height ) );
5498  END_ENTITY;
5499
5500  ENTITY character_glyph_symbol_outline
5501    SUBTYPE OF ( character_glyph_symbol );
5502      outlines  : SET [1 : ?] OF annotation_fill_area;
5503    WHERE
5504      wr1: ( SELF.outlines <= SELF\representation.items );
5505  END_ENTITY;
5506
5507  ENTITY character_glyph_symbol_stroke
5508    SUBTYPE OF ( character_glyph_symbol );
5509      strokes  : SET [1 : ?] OF curve;
5510    WHERE
5511      wr1: ( SELF.strokes <= SELF\representation.items );
5512  END_ENTITY;
5513
5514  ENTITY characteristic_data_column_header
5515    SUBTYPE OF ( general_property );
5516  END_ENTITY;
5517
5518  ENTITY characteristic_data_column_header_link
5519    SUBTYPE OF ( general_property_relationship );
5520  END_ENTITY;
5521
5522  ENTITY characteristic_data_table_header
5523    SUBTYPE OF ( general_property );
5524  END_ENTITY;
5525
5526  ENTITY characteristic_data_table_header_decomposition
5527    SUBTYPE OF ( general_property_relationship );
5528  END_ENTITY;
5529
5530  ENTITY characteristic_type
5531    SUBTYPE OF ( group );
5532  END_ENTITY;
5533
5534  ENTITY characterized_chain_based_item_within_representation
5535    SUBTYPE OF ( characterized_item_within_representation );
5536      nodes            : LIST [2 : ?] OF UNIQUE representation;
5537      undirected_link  : LIST [1 : ?] OF chained_representation_link;
5538    DERIVE
5539      root                                   : representation := nodes[1];
5540      SELF\characterized_item_within_representation.rep : representation := nodes[HIINDEX( nodes )];
5541      directed_link                          : LIST [1 : ?] OF representation_relationship := get_directed_link( nodes,
5542                                                 undirected_link );
5543      leaf                                   : representation := SELF\characterized_item_within_representation.rep;
5544    WHERE
5545      wr1: EXISTS( directed_link );
5546  END_ENTITY;
5547
5548  ENTITY characterized_class
5549    SUBTYPE OF ( characterized_object, class );
5550  END_ENTITY;
5551
5552  ENTITY characterized_item_within_representation
5553    SUBTYPE OF ( characterized_object );
5554      item  : representation_item;
5555      rep   : representation;
5556    UNIQUE
5557      wr1 : item, rep;
5558    WHERE
5559      wr2: ( rep IN using_representations( item ) );
5560  END_ENTITY;
5561
5562  ENTITY characterized_object;
5563      name         : label;
5564      description  : OPTIONAL text;
5565  END_ENTITY;
5566
5567  ENTITY characterized_representation
5568    SUBTYPE OF ( representation, characterized_object );
5569    DERIVE
5570      SELF\characterized_object.name         : label := SELF\representation.name;
5571      SELF\characterized_object.description  : text := SELF\representation.description;
5572  END_ENTITY;
5573
5574  ENTITY circle
5575    SUBTYPE OF ( conic );
5576      radius  : positive_length_measure;
5577  END_ENTITY;
5578
5579  ENTITY circular_area
5580    SUBTYPE OF ( primitive_2d );
5581      centre  : cartesian_point;
5582      radius  : positive_length_measure;
5583  END_ENTITY;
5584
5585  ENTITY circular_closed_profile
5586    SUBTYPE OF ( shape_aspect );
5587    WHERE
5588      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
5589      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5590               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5591               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5592               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
5593      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5594               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5595               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5596               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
5597               used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 );
5598      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5599               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5600               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5601               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5602               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
5603               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5604      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5605               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5606               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5607               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5608               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5609               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
5610               TYPEOF( it ) ) = 2 ) AND ( it.name = 'diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5611  END_ENTITY;
5612
5613  ENTITY circular_path
5614    SUBTYPE OF ( path_node );
5615      via_point  : cartesian_point;
5616  END_ENTITY;
5617
5618  ENTITY circular_pattern
5619    SUBTYPE OF ( replicate_feature );
5620    WHERE
5621      wr1: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5622               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5623               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
5624               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( SIZEOF( QUERY ( sdr <*
5625               QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.' +
5626               'RELATING_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN
5627               TYPEOF( sar ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF( sdr.
5628               related_shape_aspect ) ) ) ) = 1 ) ) ) <= 3 ) ) ) ) = 0 );
5629      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5630               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5631               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5632               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
5633      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5634               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5635               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5636               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( ( SIZEOF( impl_rep.
5637               used_representation.items ) >= 3 ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 5 ) ) ) ) ) = 0 ) ) ) ) =
5638               0 );
5639      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5640               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5641               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5642               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5643               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5644               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
5645               TYPEOF( it ) ) = 2 ) AND ( it.name = 'diameter' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5646      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5647               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5648               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5649               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5650               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5651               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
5652               * TYPEOF( it ) ) = 2 ) AND ( it.name = 'base feature rotation' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5653      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5654               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5655               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5656               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5657               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5658               + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5659               + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'number of features' ) ) ) )
5660               = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5661      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5662               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5663               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5664               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5665               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5666               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
5667               * TYPEOF( it ) ) = 2 ) AND ( it.name = 'angular spacing' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5668      wr8: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5669               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5670               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5671               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5672               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
5673               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5674  END_ENTITY;
5675
5676  ENTITY circular_runout_tolerance
5677    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
5678  END_ENTITY;
5679
5680  ENTITY class
5681    SUBTYPE OF ( group );
5682  END_ENTITY;
5683
5684  ENTITY class_by_extension
5685    SUBTYPE OF ( class );
5686  END_ENTITY;
5687
5688  ENTITY class_by_intension
5689    SUBTYPE OF ( class );
5690  END_ENTITY;
5691
5692  ENTITY class_system
5693    SUBTYPE OF ( group );
5694  END_ENTITY;
5695
5696  ENTITY class_usage_effectivity_context_assignment
5697    SUBTYPE OF ( effectivity_context_assignment );
5698      items  : SET [1 : ?] OF class_usage_effectivity_context_item;
5699    WHERE
5700      wr1: ( SELF.role.name = 'class usage influence' );
5701      wr2: ( SIZEOF( QUERY ( i <* SELF.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
5702               TYPEOF( i ) ) ) ) ) = 0 );
5703      wr3: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT' IN TYPEOF( SELF.
5704               assigned_effectivity_assignment ) ) AND ( SIZEOF( TYPEOF( SELF.assigned_effectivity_assignment.assigned_effectivity ) )
5705               = 1 ) AND ( SELF.assigned_effectivity_assignment.assigned_effectivity.id = 'class usage' ) AND ( SIZEOF(
5706               QUERY ( i <* SELF.assigned_effectivity_assignment\applied_effectivity_assignment.items | ( NOT (
5707               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY_USAGE'  IN TYPEOF( i ) ) ) ) ) =
5708               0 ) );
5709  END_ENTITY;
5710
5711  ENTITY classification_assignment
5712    ABSTRACT SUPERTYPE;
5713      assigned_class  : group;
5714      role            : classification_role;
5715  END_ENTITY;
5716
5717  ENTITY classification_role;
5718      name         : label;
5719      description  : OPTIONAL text;
5720  END_ENTITY;
5721
5722  ENTITY clgc_with_dimension
5723    SUBTYPE OF ( curve_length_geometric_constraint );
5724      length_value  : positive_length_measure;
5725  END_ENTITY;
5726
5727  ENTITY closed_curve_style_parameters
5728    SUBTYPE OF ( curve_style_parameters_representation );
5729  END_ENTITY;
5730
5731  ENTITY closed_path_profile
5732    SUBTYPE OF ( shape_aspect );
5733    WHERE
5734      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
5735      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5736               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5737               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5738               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
5739      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5740               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5741               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5742               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
5743               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5744      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5745               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5746               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5747               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
5748               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
5749               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
5750      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
5751               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5752               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5753               + 'PATH_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
5754  END_ENTITY;
5755
5756  ENTITY closed_shell
5757    SUBTYPE OF ( connected_face_set );
5758  END_ENTITY;
5759
5760  ENTITY coaxial_assembly_constraint
5761    SUBTYPE OF ( binary_assembly_constraint, coaxial_geometric_constraint );
5762  END_ENTITY;
5763
5764  ENTITY coaxial_geometric_constraint
5765    SUBTYPE OF ( explicit_geometric_constraint );
5766      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF axial_geometry_constraint_element;
5767      SELF\explicit_constraint.reference_elements : SET [0 : 1] OF axial_geometry_constraint_element;
5768    WHERE
5769      wr1: ( SIZEOF( QUERY ( q <* SELF\explicit_constraint.reference_elements | ( SIZEOF( TYPEOF( q ) * [
5770               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE',
5771               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE' ,
5772               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERE' ] ) > 0 ) ) ) = 0 );
5773  END_ENTITY;
5774
5775  ENTITY coaxiality_tolerance
5776    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
5777  END_ENTITY;
5778
5779  ENTITY colour;
5780  END_ENTITY;
5781
5782  ENTITY colour_rgb
5783    SUBTYPE OF ( colour_specification );
5784      red    : REAL;
5785      green  : REAL;
5786      blue   : REAL;
5787    WHERE
5788      wr1: ( ( 0 <= red ) AND ( red <= 1 ) );
5789      wr2: ( ( 0 <= green ) AND ( green <= 1 ) );
5790      wr3: ( ( 0 <= blue ) AND ( blue <= 1 ) );
5791  END_ENTITY;
5792
5793  ENTITY colour_specification
5794    SUBTYPE OF ( colour );
5795      name  : label;
5796  END_ENTITY;
5797
5798  ENTITY common_datum
5799    SUBTYPE OF ( composite_shape_aspect, datum );
5800    WHERE
5801      wr1: ( SIZEOF( SELF\composite_shape_aspect.component_relationships ) = 2 );
5802      wr2: ( SIZEOF( QUERY ( sar <* SELF\composite_shape_aspect.component_relationships | ( NOT ( (
5803               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM'  IN TYPEOF( sar.related_shape_aspect ) ) AND ( NOT (
5804               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM'  IN TYPEOF( sar.related_shape_aspect ) ) ) ) ) ) )
5805               = 0 );
5806  END_ENTITY;
5807
5808  ENTITY comparison_equal
5809    SUBTYPE OF ( comparison_expression );
5810  END_ENTITY;
5811
5812  ENTITY comparison_expression
5813    ABSTRACT SUPERTYPE OF ( ONEOF ( comparison_equal, comparison_greater, comparison_greater_equal, comparison_less,
5814        comparison_less_equal, comparison_not_equal, like_expression ) )
5815    SUBTYPE OF ( boolean_expression, binary_generic_expression );
5816      SELF\binary_generic_expression.operands : LIST [2 : 2] OF expression;
5817    WHERE
5818      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF( SELF\binary_generic_expression.
5819               operands[1] ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF( SELF\
5820               binary_generic_expression.operands[2] ) ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
5821               + 'BOOLEAN_EXPRESSION'  IN TYPEOF( SELF\binary_generic_expression.operands[1] ) ) AND (
5822               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION'  IN TYPEOF( SELF\binary_generic_expression.
5823               operands[2] ) ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF( SELF\
5824               binary_generic_expression.operands[1] ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION'
5825               IN TYPEOF( SELF\binary_generic_expression.operands[2] ) ) ) );
5826  END_ENTITY;
5827
5828  ENTITY comparison_greater
5829    SUBTYPE OF ( comparison_expression );
5830  END_ENTITY;
5831
5832  ENTITY comparison_greater_equal
5833    SUBTYPE OF ( comparison_expression );
5834  END_ENTITY;
5835
5836  ENTITY comparison_less
5837    SUBTYPE OF ( comparison_expression );
5838  END_ENTITY;
5839
5840  ENTITY comparison_less_equal
5841    SUBTYPE OF ( comparison_expression );
5842  END_ENTITY;
5843
5844  ENTITY comparison_not_equal
5845    SUBTYPE OF ( comparison_expression );
5846  END_ENTITY;
5847
5848  ENTITY complex_area
5849    ABSTRACT SUPERTYPE OF ( path_area_with_parameters ANDOR primitive_2d_with_inner_boundary )
5850    SUBTYPE OF ( primitive_2d );
5851  END_ENTITY;
5852
5853  ENTITY complex_clause
5854    SUBTYPE OF ( compound_representation_item );
5855  END_ENTITY;
5856
5857  ENTITY complex_conjunctive_clause
5858    SUBTYPE OF ( complex_clause );
5859  END_ENTITY;
5860
5861  ENTITY complex_disjunctive_clause
5862    SUBTYPE OF ( complex_clause );
5863  END_ENTITY;
5864
5865  ENTITY complex_number_literal
5866    SUBTYPE OF ( generic_literal );
5867      real_part  : REAL;
5868      imag_part  : REAL;
5869  END_ENTITY;
5870
5871  ENTITY complex_number_literal_polar
5872    SUBTYPE OF ( complex_number_literal );
5873      modulus   : REAL;
5874      argument  : REAL;
5875    DERIVE
5876      SELF\complex_number_literal.real_part  : REAL := modulus * COS( argument );
5877      SELF\complex_number_literal.imag_part  : REAL := modulus * SIN( argument );
5878    WHERE
5879      wr1: ( modulus >= 0 );
5880      wr2: ( ( 0 <= argument ) AND ( argument <= ( 2 * PI ) ) );
5881  END_ENTITY;
5882
5883  ENTITY complex_shelled_solid
5884    SUBTYPE OF ( shelled_solid );
5885      thickened_face_list  : LIST [1 : ?] OF SET [1 : ?] OF face_surface;
5886      thickness_list       : LIST [1 : ?] OF length_measure;
5887    WHERE
5888      wr1: ( SIZEOF( thickened_face_list ) = SIZEOF( thickness_list ) );
5889      wr2: ( SIZEOF( QUERY ( q <* thickness_list | ( q = 0 ) ) ) = 0 );
5890  END_ENTITY;
5891
5892  ENTITY complex_triangulated_face
5893    SUBTYPE OF ( tessellated_face );
5894      pnindex          : LIST [0 : ?] OF INTEGER;
5895      triangle_strips  : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
5896      triangle_fans    : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
5897    WHERE
5898      wr1: ( ( SIZEOF( pnindex ) = 0 ) OR ( SIZEOF( pnindex ) = SELF\tessellated_face.pnmax ) );
5899      wr2: ( NOT ( ( SIZEOF( pnindex ) = 0 ) AND ( SELF\tessellated_face.pnmax <> coordinates.npoints ) ) );
5900      wr3: ( NOT ( ( SIZEOF( triangle_strips ) = 0 ) AND ( SIZEOF( triangle_fans ) = 0 ) ) );
5901  END_ENTITY;
5902
5903  ENTITY complex_triangulated_surface_set
5904    SUBTYPE OF ( tessellated_surface_set );
5905      pnindex          : LIST [0 : ?] OF INTEGER;
5906      triangle_strips  : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
5907      triangle_fans    : LIST [0 : ?] OF LIST [3 : ?] OF INTEGER;
5908    WHERE
5909      wr1: ( ( SIZEOF( pnindex ) = 0 ) OR ( SIZEOF( pnindex ) = SELF\tessellated_surface_set.pnmax ) );
5910      wr2: ( NOT ( ( SIZEOF( pnindex ) = 0 ) AND ( SELF\tessellated_surface_set.pnmax <> coordinates.npoints ) ) );
5911      wr3: ( NOT ( ( SIZEOF( triangle_strips ) = 0 ) AND ( SIZEOF( triangle_fans ) = 0 ) ) );
5912  END_ENTITY;
5913
5914  ENTITY component_definition
5915    SUBTYPE OF ( product_definition, product_definition_relationship );
5916    DERIVE
5917      SELF\product_definition_relationship.related_product_definition : component_definition := SELF;
5918    WHERE
5919      wr1: ( NOT EXISTS( SELF\product_definition_relationship.description ) );
5920      wr2: ( NOT EXISTS( SELF\property_definition.description ) );
5921      wr3: ( SELF\product_definition_relationship.id = SELF\product_definition.id );
5922      wr4: ( SELF\product_definition_relationship.name = 'definition usage' );
5923      wr5: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRODUCT_DEFINITION_USAGE' ) IN TYPEOF( SELF ) ) );
5924  END_ENTITY;
5925
5926  ENTITY component_feature
5927    SUBTYPE OF ( shape_aspect );
5928      SELF\shape_aspect.of_shape  : assembly_component;
5929  END_ENTITY;
5930
5931  ENTITY component_feature_joint
5932    SUBTYPE OF ( shape_aspect_relationship, shape_aspect );
5933      SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
5934      SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
5935  END_ENTITY;
5936
5937  ENTITY component_feature_relationship
5938    SUBTYPE OF ( shape_aspect_relationship );
5939      SELF\shape_aspect_relationship.relating_shape_aspect : component_feature;
5940      SELF\shape_aspect_relationship.related_shape_aspect : component_feature;
5941    WHERE
5942      wr1: ( SELF\shape_aspect_relationship.related_shape_aspect :<>: SELF\shape_aspect_relationship.relating_shape_aspect );
5943  END_ENTITY;
5944
5945  ENTITY component_mating_constraint_condition
5946    SUBTYPE OF ( shape_aspect );
5947    UNIQUE
5948      ur1 : name, of_shape;
5949  END_ENTITY;
5950
5951  ENTITY component_path_shape_aspect
5952    SUBTYPE OF ( shape_aspect );
5953      location                : multi_or_next_assembly_usage_occurrence;
5954      component_shape_aspect  : internal_or_reflected_shape_aspect;
5955    UNIQUE
5956      ur1 : location, component_shape_aspect;
5957  END_ENTITY;
5958
5959  ENTITY component_terminal
5960    SUBTYPE OF ( component_feature );
5961  END_ENTITY;
5962
5963  ENTITY composite_assembly_sequence_definition
5964    SUBTYPE OF ( product_definition );
5965    WHERE
5966      wr1: ( SIZEOF( QUERY ( pdr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
5967               'PRODUCT_DEFINITION_RELATIONSHIP.'  + 'RELATING_PRODUCT_DEFINITION' ) | ( (
5968               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' ) IN TYPEOF( pdr ) ) ) ) >
5969               0 );
5970  END_ENTITY;
5971
5972  ENTITY composite_assembly_table
5973    SUBTYPE OF ( part_laminate_table );
5974  END_ENTITY;
5975
5976  ENTITY composite_curve
5977    SUBTYPE OF ( bounded_curve );
5978      segments        : LIST [1 : ?] OF composite_curve_segment;
5979      self_intersect  : LOGICAL;
5980    DERIVE
5981      n_segments    : INTEGER := SIZEOF( segments );
5982      closed_curve  : LOGICAL := segments[n_segments].transition <> discontinuous;
5983    WHERE
5984      wr1: ( ( ( NOT closed_curve ) AND ( SIZEOF( QUERY ( temp <* segments | ( temp.transition = discontinuous ) ) ) = 1 ) ) OR
5985               ( closed_curve AND ( SIZEOF( QUERY ( temp <* segments | ( temp.transition = discontinuous ) ) ) = 0 ) ) );
5986  END_ENTITY;
5987
5988  ENTITY composite_curve_on_surface
5989    SUPERTYPE OF ( boundary_curve )
5990    SUBTYPE OF ( composite_curve );
5991    DERIVE
5992      basis_surface  : SET [0 : 2] OF surface := get_basis_surface( SELF );
5993    WHERE
5994      wr1: ( SIZEOF( basis_surface ) > 0 );
5995      wr2: constraints_composite_curve_on_surface( SELF );
5996  END_ENTITY;
5997
5998  ENTITY composite_curve_segment
5999    SUBTYPE OF ( founded_item );
6000      transition    : transition_code;
6001      same_sense    : BOOLEAN;
6002      parent_curve  : curve;
6003    INVERSE
6004      using_curves : BAG [1 : ?] OF composite_curve FOR segments;
6005    WHERE
6006      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE' IN TYPEOF( parent_curve ) );
6007  END_ENTITY;
6008
6009  ENTITY composite_curve_transition_locator
6010    SUBTYPE OF ( founded_item );
6011      basis_curve       : composite_curve;
6012      transition_index  : INTEGER;
6013    WHERE
6014      wr1: ( SIZEOF( using_representations( SELF.basis_curve ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
6015  END_ENTITY;
6016
6017  ENTITY composite_group_shape_aspect
6018    SUBTYPE OF ( composite_shape_aspect );
6019  END_ENTITY;
6020
6021  ENTITY composite_hole
6022    SUBTYPE OF ( compound_feature );
6023    WHERE
6024      wr1: ( SELF\characterized_object.description IN [ 'counterbore', 'countersunk'] );
6025      wr2: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6026               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6027               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
6028               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( SIZEOF(
6029               QUERY ( sar <* csa.component_relationships | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6030               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6031               + 'ROUND_HOLE'  IN TYPEOF( sar.related_shape_aspect ) ) ) ) ) = 2 ) ) ) ) = 1 ) ) ) ) = 1 );
6032      wr3: ( ( NOT ( SELF\characterized_object.description = 'countersunk' ) ) OR ( SIZEOF( QUERY ( pds <* USEDIN( SELF,
6033               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( (
6034               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pds ) ) AND ( SIZEOF(
6035               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
6036               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( SIZEOF(
6037               QUERY ( sar <* csa.component_relationships | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN
6038               TYPEOF( sar.related_shape_aspect ) ) AND ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( sar.
6039               related_shape_aspect, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
6040               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
6041               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
6042               sa_occ.description = 'change in diameter occurrence' ) AND ( SIZEOF( QUERY ( fcr2 <* QUERY ( sar2 <* USEDIN( sa_occ,
6043               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar2.
6044               description = 'taper usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
6045               IN TYPEOF( sar2 ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN TYPEOF( fcr2.
6046               related_shape_aspect ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 1 ) );
6047  END_ENTITY;
6048
6049  ENTITY composite_material_designation
6050    SUBTYPE OF ( material_designation );
6051  END_ENTITY;
6052
6053  ENTITY composite_shape_aspect
6054    SUPERTYPE OF ( ONEOF ( continuous_shape_aspect, common_datum, composite_group_shape_aspect ) )
6055    SUBTYPE OF ( shape_aspect );
6056    INVERSE
6057      component_relationships : SET [2 : ?] OF shape_aspect_relationship FOR relating_shape_aspect;
6058  END_ENTITY;
6059
6060  ENTITY composite_sheet_representation
6061    SUBTYPE OF ( shape_representation );
6062    WHERE
6063      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION',
6064               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'] * TYPEOF( SELF ) )
6065               = 1 );
6066  END_ENTITY;
6067
6068  ENTITY composite_text
6069    SUBTYPE OF ( geometric_representation_item );
6070      collected_text  : SET [2 : ?] OF text_or_character;
6071    WHERE
6072      wr1: acyclic_composite_text( SELF, SELF.collected_text );
6073  END_ENTITY;
6074
6075  ENTITY composite_text_with_associated_curves
6076    SUBTYPE OF ( composite_text );
6077      associated_curves  : SET [1 : ?] OF curve;
6078  END_ENTITY;
6079
6080  ENTITY composite_text_with_blanking_box
6081    SUBTYPE OF ( composite_text );
6082      blanking  : planar_box;
6083  END_ENTITY;
6084
6085  ENTITY composite_text_with_delineation
6086    SUBTYPE OF ( composite_text );
6087      delineation  : text_delineation;
6088  END_ENTITY;
6089
6090  ENTITY composite_text_with_extent
6091    SUBTYPE OF ( composite_text );
6092      extent  : planar_extent;
6093  END_ENTITY;
6094
6095  ENTITY composite_unit_shape_aspect
6096    SUBTYPE OF ( composite_shape_aspect );
6097  END_ENTITY;
6098
6099  ENTITY compound_feature
6100    SUBTYPE OF ( feature_definition );
6101    WHERE
6102      wr1: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6103               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6104               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( ( csa.
6105               name = 'compound feature in solid' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'
6106               IN TYPEOF( csa ) ) ) ) ) = 1 ) ) ) ) = 1 );
6107      wr2: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6108               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6109               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | (
6110               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) ) ) = 1 ) ) ) ) = 1 );
6111      wr3: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6112               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6113               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
6114               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( SIZEOF(
6115               QUERY ( fcr <* csa.component_relationships | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6116               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( fcr ) ) ) ) ) = 0 ) ) ) ) = 1 ) ) ) ) = 1 );
6117      wr4: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6118               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6119               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | (
6120               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) ) ) = 1 ) ) ) ) = 1 );
6121      wr5: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6122               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6123               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
6124               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( SIZEOF(
6125               QUERY ( sar <* csa.component_relationships | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THREAD' IN TYPEOF(
6126               sar.related_shape_aspect ) ) ) ) = 0 ) ) ) ) = 1 ) ) ) ) = 1 );
6127      wr6: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
6128               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
6129               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
6130               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( SIZEOF(
6131               QUERY ( sar <* csa.component_relationships | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_FEATURE'
6132               IN TYPEOF( sar.related_shape_aspect ) ) AND ( sar.related_shape_aspect\characterized_object.name <> SELF\
6133               characterized_object.name ) ) ) ) = 0 ) ) ) ) = 1 ) ) ) ) = 1 );
6134  END_ENTITY;
6135
6136  ENTITY compound_representation_item
6137    SUPERTYPE OF ( ONEOF ( point_and_vector, point_path ) ANDOR ONEOF ( row_representation_item, table_representation_item ) )
6138    SUBTYPE OF ( representation_item );
6139      item_element  : compound_item_definition;
6140  END_ENTITY;
6141
6142  ENTITY compound_shape_representation
6143    SUBTYPE OF ( shape_representation );
6144    WHERE
6145      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_CONTEXT' ) IN TYPEOF( SELF.
6146               context_of_items ) ) AND ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3 ) );
6147      wr2: ( SIZEOF( QUERY ( cbsr_i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6148               'EDGE_BASED_WIREFRAME_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'FACE_BASED_SURFACE_MODEL',
6149               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MAPPED_ITEM',
6150               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'AXIS2_PLACEMENT_3D'] * TYPEOF( cbsr_i ) ) <> 1 ) ) ) = 0 );
6151      wr3: ( SIZEOF( QUERY ( cbsr_i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6152               'EDGE_BASED_WIREFRAME_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'FACE_BASED_SURFACE_MODEL',
6153               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MAPPED_ITEM'] * TYPEOF( cbsr_i ) ) = 1 ) ) ) > 0 );
6154      wr4: ( SIZEOF( QUERY ( cbsr_i <* SELF.items | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'MAPPED_ITEM' ) IN
6155               TYPEOF( cbsr_i ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6156               'COMPOUND_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6157               'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6158               'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' ] * TYPEOF( cbsr_i\mapped_item.mapping_source ) ) <> 1 ) ) ) ) = 0 );
6159  END_ENTITY;
6160
6161  ENTITY concat_expression
6162    SUBTYPE OF ( string_expression, multiple_arity_generic_expression );
6163      SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF string_expression;
6164  END_ENTITY;
6165
6166  ENTITY concentricity_tolerance
6167    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
6168  END_ENTITY;
6169
6170  ENTITY concept_feature_operator;
6171      name         : label;
6172      description  : OPTIONAL text;
6173  END_ENTITY;
6174
6175  ENTITY concept_feature_relationship;
6176      name                              : label;
6177      description                       : OPTIONAL text;
6178      relating_product_concept_feature  : product_concept_feature;
6179      related_product_concept_feature   : product_concept_feature;
6180  END_ENTITY;
6181
6182  ENTITY concept_feature_relationship_with_condition
6183    SUBTYPE OF ( concept_feature_relationship );
6184      conditional_operator  : concept_feature_operator;
6185  END_ENTITY;
6186
6187  ENTITY conditional_concept_feature
6188    SUBTYPE OF ( product_concept_feature );
6189      condition  : concept_feature_relationship_with_condition;
6190  END_ENTITY;
6191
6192  ENTITY conductance_measure_with_unit
6193    SUBTYPE OF ( measure_with_unit );
6194    WHERE
6195      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDUCTANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
6196  END_ENTITY;
6197
6198  ENTITY conductance_unit
6199    SUBTYPE OF ( derived_unit );
6200    WHERE
6201      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.siemens ) );
6202  END_ENTITY;
6203
6204  ENTITY configurable_item
6205    SUBTYPE OF ( configuration_item );
6206      item_concept_feature  : SET [1 : ?] OF product_concept_feature_association;
6207  END_ENTITY;
6208
6209  ENTITY configuration_design;
6210      configuration  : configuration_item;
6211      design         : configuration_design_item;
6212    DERIVE
6213      name         : label := get_name_value( SELF );
6214      description  : text := get_description_value( SELF );
6215    UNIQUE
6216      ur1 : configuration, design;
6217    WHERE
6218      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
6219      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
6220               <= 1 );
6221  END_ENTITY;
6222
6223  ENTITY configuration_effectivity
6224    SUBTYPE OF ( product_definition_effectivity );
6225      configuration  : configuration_design;
6226    UNIQUE
6227      ur1 : configuration, usage, id;
6228    WHERE
6229      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE' IN TYPEOF( SELF\
6230               product_definition_effectivity.usage ) );
6231  END_ENTITY;
6232
6233  ENTITY configuration_item;
6234      id            : identifier;
6235      name          : label;
6236      description   : OPTIONAL text;
6237      item_concept  : product_concept;
6238      purpose       : OPTIONAL label;
6239  END_ENTITY;
6240
6241  ENTITY configuration_item_hierarchical_relationship
6242    SUBTYPE OF ( configuration_item_relationship );
6243  END_ENTITY;
6244
6245  ENTITY configuration_item_relationship;
6246      name                         : label;
6247      description                  : OPTIONAL text;
6248      relating_configuration_item  : configuration_item;
6249      related_configuration_item   : configuration_item;
6250  END_ENTITY;
6251
6252  ENTITY configuration_item_revision_sequence
6253    SUBTYPE OF ( configuration_item_relationship );
6254  END_ENTITY;
6255
6256  ENTITY configured_effectivity_assignment
6257    SUBTYPE OF ( effectivity_assignment );
6258      items  : SET [1 : ?] OF configured_effectivity_item;
6259    WHERE
6260      wr1: ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EFFECTIVITY'] * TYPEOF( SELF.assigned_effectivity ) ) =
6261               1 ) AND ( SELF.assigned_effectivity.id = 'configuration validity' ) );
6262      wr2: ( SIZEOF( SELF.items ) = 1 );
6263      wr3: ( SIZEOF( QUERY ( i <* SELF.items | ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN
6264               TYPEOF( i ) ) ) OR ( NOT ( i\product_definition.frame_of_reference.name IN [ 'conceptual definition',
6265               'part occurrence' , 'functional definition', 'alternative definition'] ) ) ) ) ) = 0 );
6266      wr4: ( SELF.role.name IN [ 'design', 'usage'] );
6267      wr5: ( ( SELF.role.name <> 'design' ) OR ( SIZEOF( QUERY ( i <* SELF.items | ( (
6268               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( i ) ) AND ( i\product_definition.
6269               frame_of_reference.name = 'part occurrence' ) ) ) ) = 0 ) );
6270      wr6: ( ( SELF.role.name <> 'usage' ) OR ( SIZEOF( QUERY ( i <* SELF.items | ( (
6271               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( i ) ) AND ( i\product_definition.
6272               frame_of_reference.name = 'conceptual definition' ) ) ) ) = 0 ) );
6273      wr7: ( SELF.role.description IN [ 'exception', 'inherited', 'local'] );
6274      wr8: ( SIZEOF( QUERY ( x <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6275               'EFFECTIVITY_CONTEXT_ASSIGNMENT.ASSIGNED_EFFECTIVITY_ASSIGNMENT'  ) | (
6276               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURED_EFFECTIVITY_CONTEXT_ASSIGNMENT'  IN TYPEOF( x ) ) ) )
6277               = 1 );
6278  END_ENTITY;
6279
6280  ENTITY configured_effectivity_context_assignment
6281    SUBTYPE OF ( effectivity_context_assignment );
6282      SELF\effectivity_context_assignment.assigned_effectivity_assignment : configured_effectivity_assignment;
6283      items                                  : SET [1 : ?] OF configured_effectivity_context_item;
6284    WHERE
6285      wr1: ( SIZEOF( SELF.items ) = 1 );
6286  END_ENTITY;
6287
6288  ENTITY conic
6289    SUPERTYPE OF ( ONEOF ( circle, ellipse, hyperbola, parabola ) )
6290    SUBTYPE OF ( curve );
6291      position  : axis2_placement;
6292  END_ENTITY;
6293
6294  ENTITY conical_stepped_hole_transition
6295    SUBTYPE OF ( geometric_representation_item );
6296      transition_number  : positive_integer;
6297      cone_apex_angle    : plane_angle_measure;
6298      cone_base_radius   : positive_length_measure;
6299  END_ENTITY;
6300
6301  ENTITY conical_surface
6302    SUBTYPE OF ( elementary_surface );
6303      radius      : length_measure;
6304      semi_angle  : plane_angle_measure;
6305    WHERE
6306      wr1: ( radius >= 0 );
6307  END_ENTITY;
6308
6309  ENTITY connected_edge_set
6310    SUBTYPE OF ( topological_representation_item );
6311      ces_edges  : SET [1 : ?] OF edge;
6312  END_ENTITY;
6313
6314  ENTITY connected_face_set
6315    SUPERTYPE OF ( ONEOF ( closed_shell, open_shell ) )
6316    SUBTYPE OF ( topological_representation_item );
6317      cfs_faces  : SET [1 : ?] OF face;
6318  END_ENTITY;
6319
6320  ENTITY connected_face_sub_set
6321    SUBTYPE OF ( connected_face_set );
6322      parent_face_set  : connected_face_set;
6323  END_ENTITY;
6324
6325  ENTITY connection_zone_based_assembly_joint
6326    SUBTYPE OF ( assembly_joint );
6327  END_ENTITY;
6328
6329  ENTITY connection_zone_interface_plane_relationship
6330    SUBTYPE OF ( shape_aspect, shape_aspect_relationship );
6331    UNIQUE
6332      ur1 : name;
6333  END_ENTITY;
6334
6335  ENTITY constant_function
6336    SUBTYPE OF ( maths_function, generic_literal );
6337      sole_output       : maths_value;
6338      source_of_domain  : maths_space_or_function;
6339    WHERE
6340      wr1: no_cyclic_domain_reference( source_of_domain, [SELF] );
6341      wr2: expression_is_constant( domain_from( source_of_domain ) );
6342  END_ENTITY;
6343
6344  ENTITY constrained_kinematic_motion_representation
6345    SUBTYPE OF ( representation_relationship_with_transformation );
6346      SELF\representation_relationship.rep_1 : representative_shape_representation;
6347      SELF\representation_relationship.rep_2 : representative_shape_representation;
6348    WHERE
6349      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF( SELF\
6350               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
6351               transform_item_1 ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF( SELF\
6352               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
6353               transform_item_2 ) ) );
6354      wr2: ( ( dimension_of( SELF\representation_relationship_with_transformation.transformation_operator\
6355               item_defined_transformation.transform_item_1 ) = 3 ) AND ( dimension_of( SELF\
6356               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
6357               transform_item_2 ) = 3 ) );
6358      wr3: ( ( SELF\representation_relationship.rep_1 IN ( using_representations( SELF\
6359               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
6360               transform_item_1 ) + using_representation_with_mapping( SELF\representation_relationship_with_transformation.
6361               transformation_operator\item_defined_transformation.transform_item_1 ) ) ) AND ( SELF\representation_relationship.
6362               rep_2 IN ( using_representations( SELF\representation_relationship_with_transformation.transformation_operator\
6363               item_defined_transformation.transform_item_2 ) + using_representation_with_mapping( SELF\
6364               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
6365               transform_item_2 ) ) ) );
6366      wr4: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_PAIR' IN TYPEOF( SELF\
6367               representation_relationship_with_transformation.transformation_operator ) );
6368  END_ENTITY;
6369
6370  ENTITY constructive_geometry_representation
6371    SUBTYPE OF ( representation );
6372    WHERE
6373      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF( SELF.
6374               context_of_items ) ) AND ( 2 <= SELF.context_of_items\geometric_representation_context.coordinate_space_dimension )
6375               AND ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension <= 3 ) );
6376      wr2: ( SIZEOF( QUERY ( cgr_i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
6377               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE',
6378               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT',
6379               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6380               + 'FACE_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'] * TYPEOF( cgr_i ) ) <> 1 ) ) )
6381               = 0 );
6382      wr3: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2' ) ) >
6383               0 );
6384      wr4: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_MAP.MAPPED_REPRESENTATION' ) )
6385               = 0 );
6386  END_ENTITY;
6387
6388  ENTITY constructive_geometry_representation_relationship
6389    SUBTYPE OF ( representation_relationship );
6390      SELF\representation_relationship.rep_1 : constructive_geometry_representation_or_shape_represenation;
6391      SELF\representation_relationship.rep_2 : constructive_geometry_representation;
6392    WHERE
6393      wr1: ( ( SELF.rep_1.context_of_items :=: SELF.rep_2.context_of_items ) AND (
6394               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT'  IN TYPEOF( SELF.rep_1.
6395               context_of_items ) ) );
6396      wr2: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION' ) IN
6397               TYPEOF( SELF ) ) );
6398  END_ENTITY;
6399
6400  ENTITY contact_ratio_representation
6401    SUBTYPE OF ( representation );
6402    WHERE
6403      wr1: ( ( SIZEOF( SELF.items ) = 1 ) AND ( SIZEOF( QUERY ( i <* SELF.items | ( ( SIZEOF( [
6404               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MEASURE_REPRESENTATION_ITEM',
6405               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'VALUE_RANGE'] * TYPEOF( i ) ) = 1 ) AND ( i.name =
6406               'ratio value'  ) ) ) ) = 1 ) );
6407      wr2: ( ( SIZEOF( QUERY ( pdr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6408               'PROPERTY_DEFINITION_REPRESENTATION.'  + 'USED_REPRESENTATION' ) | ( pdr\property_definition_representation.name =
6409               'contact ratio reference' ) ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( SELF,
6410               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION' )
6411               | ( ( pdr\property_definition_representation.name = 'contact ratio reference' ) AND ( (
6412               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION' ) IN TYPEOF( pdr\
6413               property_definition_representation.definition\property_definition.definition ) ) ) ) ) = 1 ) );
6414      wr3: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' +
6415               'USED_REPRESENTATION' ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( SELF,
6416               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION' )
6417               | ( SIZEOF( QUERY ( gpa <* USEDIN( pdr.definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6418               'GENERAL_PROPERTY_ASSOCIATION.'  + 'DERIVED_DEFINITION' ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6419               + 'GENERAL_PROPERTY' ) IN TYPEOF( gpa\general_property_association.base_definition ) ) AND ( gpa\
6420               general_property_association.base_definition\general_property.name = 'surface_condition' ) ) ) ) = 1 ) ) ) = 1 ) );
6421  END_ENTITY;
6422
6423  ENTITY contacting_feature
6424    SUBTYPE OF ( shape_aspect );
6425    WHERE
6426      wr1: ( SELF\shape_aspect.product_definitional = FALSE );
6427  END_ENTITY;
6428
6429  ENTITY context_dependent_invisibility
6430    SUBTYPE OF ( invisibility );
6431      presentation_context  : invisibility_context;
6432  END_ENTITY;
6433
6434  ENTITY context_dependent_kinematic_link_representation;
6435      representation_relation       : kinematic_link_representation_association;
6436      represented_product_relation  : product_definition_relationship_kinematics;
6437  END_ENTITY;
6438
6439  ENTITY context_dependent_over_riding_styled_item
6440    SUBTYPE OF ( over_riding_styled_item );
6441      style_context  : LIST [1 : ?] OF style_context_select;
6442    WHERE
6443      wr1: ( ( SIZEOF( QUERY ( sc <* SELF.style_context | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM'
6444               IN TYPEOF( sc ) ) ) ) = 1 ) OR ( SIZEOF( QUERY ( sc <* SELF.style_context | ( (
6445               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'  IN TYPEOF( sc ) ) OR (
6446               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP'  IN TYPEOF( sc ) ) ) ) ) = SIZEOF(
6447               style_context ) ) );
6448  END_ENTITY;
6449
6450  ENTITY context_dependent_shape_representation;
6451      representation_relation       : shape_representation_relationship;
6452      represented_product_relation  : product_definition_shape;
6453    DERIVE
6454      description  : text := get_description_value( SELF );
6455      name         : label := get_name_value( SELF );
6456    WHERE
6457      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP' IN TYPEOF( SELF.
6458               represented_product_relation.definition ) );
6459      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
6460               <= 1 );
6461      wr3: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
6462  END_ENTITY;
6463
6464  ENTITY context_dependent_unit
6465    SUBTYPE OF ( named_unit );
6466      name  : label;
6467  END_ENTITY;
6468
6469  ENTITY continuous_shape_aspect
6470    SUPERTYPE OF ( ONEOF ( between_shape_aspect, all_around_shape_aspect ) )
6471    SUBTYPE OF ( composite_shape_aspect );
6472  END_ENTITY;
6473
6474  ENTITY contract;
6475      name     : label;
6476      purpose  : text;
6477      kind     : contract_type;
6478  END_ENTITY;
6479
6480  ENTITY contract_assignment
6481    ABSTRACT SUPERTYPE;
6482      assigned_contract  : contract;
6483    DERIVE
6484      role  : object_role := get_role( SELF );
6485    WHERE
6486      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
6487               1 );
6488  END_ENTITY;
6489
6490  ENTITY contract_relationship;
6491      id                 : identifier;
6492      name               : label;
6493      description        : OPTIONAL text;
6494      relating_contract  : contract;
6495      related_contract   : contract;
6496  END_ENTITY;
6497
6498  ENTITY contract_type;
6499      description  : label;
6500  END_ENTITY;
6501
6502  ENTITY conversion_based_unit
6503    SUBTYPE OF ( named_unit );
6504      name               : label;
6505      conversion_factor  : measure_with_unit;
6506    WHERE
6507      wr1: ( SELF\named_unit.dimensions = derive_dimensional_exponents( conversion_factor\measure_with_unit.unit_component ) );
6508  END_ENTITY;
6509
6510  ENTITY coordinated_universal_time_offset;
6511      hour_offset    : INTEGER;
6512      minute_offset  : OPTIONAL INTEGER;
6513      sense          : ahead_or_behind;
6514    DERIVE
6515      actual_minute_offset  : INTEGER := NVL( minute_offset, 0 );
6516    WHERE
6517      wr1: ( ( 0 <= hour_offset ) AND ( hour_offset < 24 ) );
6518      wr2: ( ( 0 <= actual_minute_offset ) AND ( actual_minute_offset <= 59 ) );
6519      wr3: ( NOT ( ( ( hour_offset <> 0 ) OR ( actual_minute_offset <> 0 ) ) AND ( sense = exact ) ) );
6520  END_ENTITY;
6521
6522  ENTITY coordinates_list
6523    SUBTYPE OF ( tessellated_item );
6524      npoints          : INTEGER;
6525      position_coords  : LIST [1 : ?] OF LIST [3 : 3] OF REAL;
6526    WHERE
6527      wr1: ( npoints = SIZEOF( position_coords ) );
6528      wr2: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPOSITIONED_TESSELLATED_ITEM'] * TYPEOF( SELF ) ) = 0 );
6529  END_ENTITY;
6530
6531  ENTITY cos_function
6532    SUBTYPE OF ( unary_function_call );
6533  END_ENTITY;
6534
6535  ENTITY csg_2d_shape_representation
6536    SUBTYPE OF ( shape_representation );
6537      SELF\representation.items  : SET [1 : ?] OF csg_2d_shape_select;
6538    WHERE
6539      wr1: ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2 );
6540      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID'] *
6541               TYPEOF( it ) ) = 1 ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF( it ) ) AND (
6542               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CSG_2D_SHAPE_REPRESENTATION' ) IN TYPEOF( it\mapped_item.
6543               mapping_source.mapped_representation ) ) ) ) ) ) >= 1 );
6544      wr3: ( SIZEOF( QUERY ( it <* SELF.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF( it ) )
6545               AND ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CSG_2D_SHAPE_REPRESENTATION' ) IN TYPEOF( it\
6546               mapped_item.mapping_source.mapped_representation ) ) ) ) ) ) = 0 );
6547  END_ENTITY;
6548
6549  ENTITY csg_primitive_solid_2d
6550    SUBTYPE OF ( csg_solid_2d );
6551      SELF\csg_solid.tree_root_expression  : bounded_primitive_2d;
6552  END_ENTITY;
6553
6554  ENTITY csg_shape_representation
6555    SUBTYPE OF ( shape_representation );
6556    WHERE
6557      wr1: ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3 );
6558      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID',
6559               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6560               + 'AXIS2_PLACEMENT_3D' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA',
6561               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID' ,
6562               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF( it ) ) <> 1 ) ) ) = 0 );
6563      wr3: ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
6564               TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION' IN TYPEOF( mi
6565               \mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
6566      wr4: ( SIZEOF( QUERY ( sr <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA'
6567               IN TYPEOF( it ) ) ) | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID',
6568               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REVOLVED_FACE_SOLID' ,
6569               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTRUDED_FACE_SOLID' ] * TYPEOF( sr\solid_replica.parent_solid ) )
6570               = 0 ) ) ) = 0 );
6571      wr5: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN
6572               TYPEOF( it ) ) ) ) ) > 0 );
6573  END_ENTITY;
6574
6575  ENTITY csg_solid
6576    SUBTYPE OF ( solid_model );
6577      tree_root_expression  : csg_select;
6578  END_ENTITY;
6579
6580  ENTITY csg_solid_2d
6581    SUBTYPE OF ( csg_solid );
6582      SELF\csg_solid.tree_root_expression  : csg_select_2d;
6583    WHERE
6584      wr1: valid_csg_2d_primitives( SELF );
6585  END_ENTITY;
6586
6587  ENTITY currency
6588    ABSTRACT SUPERTYPE OF ( ONEOF ( externally_defined_currency, iso4217_currency ) )
6589    SUBTYPE OF ( context_dependent_unit );
6590    WHERE
6591      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
6592               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
6593               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
6594               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
6595  END_ENTITY;
6596
6597  ENTITY currency_measure_with_unit
6598    SUBTYPE OF ( measure_with_unit );
6599      SELF\measure_with_unit.unit_component  : currency;
6600  END_ENTITY;
6601
6602  ENTITY current_change_element_assignment
6603    SUBTYPE OF ( group_assignment );
6604      SELF\group_assignment.assigned_group  : current_element_assignment_select;
6605      items                                 : SET [1 : ?] OF change_management_object;
6606  END_ENTITY;
6607
6608  ENTITY curve
6609    SUPERTYPE OF ( ONEOF ( line, conic, pcurve, surface_curve, offset_curve_2d, offset_curve_3d, curve_replica ) )
6610    SUBTYPE OF ( geometric_representation_item );
6611  END_ENTITY;
6612
6613  ENTITY curve_based_path
6614    SUBTYPE OF ( path_node );
6615      path_curve  : curve;
6616  END_ENTITY;
6617
6618  ENTITY curve_based_path_with_orientation
6619    SUBTYPE OF ( kinematic_path_segment );
6620      position_curve     : bounded_curve;
6621      orientation_curve  : bounded_curve;
6622    WHERE
6623      wr1: ( TYPEOF( position_curve ) = TYPEOF( orientation_curve ) );
6624  END_ENTITY;
6625
6626  ENTITY curve_based_path_with_orientation_and_parameters
6627    SUBTYPE OF ( curve_based_path_with_orientation );
6628      parameters  : path_parameter_representation;
6629  END_ENTITY;
6630
6631  ENTITY curve_bounded_surface
6632    SUBTYPE OF ( bounded_surface );
6633      basis_surface   : surface;
6634      boundaries      : SET [1 : ?] OF boundary_curve;
6635      implicit_outer  : BOOLEAN;
6636    WHERE
6637      wr1: ( ( NOT implicit_outer ) OR ( SIZEOF( QUERY ( temp <* boundaries | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6638               + 'OUTER_BOUNDARY_CURVE'  IN TYPEOF( temp ) ) ) ) = 0 ) );
6639      wr2: ( ( NOT implicit_outer ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE' IN TYPEOF(
6640               basis_surface ) ) );
6641      wr3: ( SIZEOF( QUERY ( temp <* boundaries | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_BOUNDARY_CURVE' IN
6642               TYPEOF( temp ) ) ) ) <= 1 );
6643      wr4: ( SIZEOF( QUERY ( temp <* boundaries | ( temp\composite_curve_on_surface.basis_surface[1] <> SELF.basis_surface ) ) )
6644               = 0 );
6645  END_ENTITY;
6646
6647  ENTITY curve_dimension
6648    SUBTYPE OF ( dimension_curve_directed_callout );
6649  END_ENTITY;
6650
6651  ENTITY curve_distance_geometric_constraint
6652    SUBTYPE OF ( explicit_geometric_constraint );
6653      SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF curve;
6654      SELF\explicit_constraint.reference_elements : SET [0 : 4] OF point_curve_or_surface_constraint_element;
6655      near_points                            : SET [0 : 4] OF near_point_relationship;
6656    WHERE
6657      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) > 0 ) OR ( (
6658               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CDGC_WITH_DIMENSION'  IN TYPEOF( SELF ) ) AND ( SIZEOF( SELF\
6659               explicit_constraint.constrained_elements ) = 2 ) ) );
6660      wr2: ( SIZEOF( near_points ) <= SIZEOF( SELF\explicit_constraint.reference_elements ) );
6661      wr3: ( SIZEOF( QUERY ( q <* near_points | ( NOT ( q\representation_item_relationship.relating_representation_item IN SELF\
6662               explicit_constraint.reference_elements ) ) ) ) = 0 );
6663  END_ENTITY;
6664
6665  ENTITY curve_length_geometric_constraint
6666    SUBTYPE OF ( explicit_geometric_constraint );
6667      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF bounded_curve;
6668    WHERE
6669      wr1: ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 );
6670  END_ENTITY;
6671
6672  ENTITY curve_replica
6673    SUBTYPE OF ( curve );
6674      parent_curve    : curve;
6675      transformation  : cartesian_transformation_operator;
6676    WHERE
6677      wr1: ( transformation.dim = parent_curve.dim );
6678      wr2: acyclic_curve_replica( SELF, parent_curve );
6679  END_ENTITY;
6680
6681  ENTITY curve_segment_set
6682    SUBTYPE OF ( geometric_representation_item );
6683      segments  : SET [1 : ?] OF composite_curve_segment;
6684  END_ENTITY;
6685
6686  ENTITY curve_smoothness_geometric_constraint
6687    SUBTYPE OF ( explicit_geometric_constraint );
6688      SELF\explicit_constraint.constrained_elements : SET [1 : 1] OF curve_segment_set;
6689      smoothness                             : transition_code;
6690    WHERE
6691      wr1: ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 );
6692  END_ENTITY;
6693
6694  ENTITY curve_style
6695    SUBTYPE OF ( founded_item );
6696      name          : label;
6697      curve_font    : OPTIONAL curve_font_or_scaled_curve_font_select;
6698      curve_width   : OPTIONAL size_select;
6699      curve_colour  : OPTIONAL colour;
6700    WHERE
6701      wr1: ( EXISTS( curve_font ) OR EXISTS( curve_width ) OR EXISTS( curve_colour ) );
6702  END_ENTITY;
6703
6704  ENTITY curve_style_font
6705    SUBTYPE OF ( founded_item );
6706      name          : label;
6707      pattern_list  : LIST [1 : ?] OF curve_style_font_pattern;
6708  END_ENTITY;
6709
6710  ENTITY curve_style_font_and_scaling
6711    SUBTYPE OF ( founded_item );
6712      name                : label;
6713      curve_font          : curve_style_font_select;
6714      curve_font_scaling  : REAL;
6715  END_ENTITY;
6716
6717  ENTITY curve_style_font_pattern
6718    SUBTYPE OF ( founded_item );
6719      visible_segment_length    : positive_length_measure;
6720      invisible_segment_length  : positive_length_measure;
6721  END_ENTITY;
6722
6723  ENTITY curve_style_parameters_representation
6724    SUBTYPE OF ( representation );
6725  END_ENTITY;
6726
6727  ENTITY curve_style_parameters_with_ends
6728    SUBTYPE OF ( curve_style_parameters_representation );
6729  END_ENTITY;
6730
6731  ENTITY curve_style_rendering;
6732      rendering_method      : shading_curve_method;
6733      rendering_properties  : surface_rendering_properties;
6734  END_ENTITY;
6735
6736  ENTITY curve_swept_solid_shape_representation
6737    SUBTYPE OF ( shape_representation );
6738    WHERE
6739      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6740               + 'SWEPT_AREA_SOLID' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_DISK_SOLID',
6741               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6742               + 'AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
6743      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_AREA_SOLID',
6744               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_DISK_SOLID' ,
6745               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF( it ) ) = 1 ) ) ) > 0 );
6746      wr3: ( SIZEOF( QUERY ( mi <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
6747               TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION'
6748               IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
6749      wr4: ( SIZEOF( QUERY ( scsas <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
6750               + 'SURFACE_CURVE_SWEPT_AREA_SOLID'  IN TYPEOF( it ) ) ) | ( NOT ( (
6751               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'  IN TYPEOF( scsas\surface_curve_swept_area_solid.
6752               directrix ) ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( scsas\
6753               surface_curve_swept_area_solid.directrix ) ) ) ) ) ) = 0 );
6754  END_ENTITY;
6755
6756  ENTITY curve_with_excessive_segments
6757    SUBTYPE OF ( overcomplex_geometry );
6758      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
6759    WHERE
6760      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
6761               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
6762               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
6763               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
6764      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
6765      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6766               'B_SPLINE_OR_COMPOSITE_CURVE_SELECT' ] );
6767      wr4: validate_locations_of_extreme_value_type( SELF, [] );
6768      wr5: validate_accuracy_types( SELF, [] );
6769  END_ENTITY;
6770
6771  ENTITY curve_with_small_curvature_radius
6772    SUBTYPE OF ( geometry_with_local_near_degeneracy );
6773      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
6774    WHERE
6775      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
6776               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
6777               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
6778               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
6779      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
6780      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE'] );
6781      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE'] );
6782      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
6783  END_ENTITY;
6784
6785  ENTITY cylindrical_pair
6786    SUBTYPE OF ( low_order_kinematic_pair );
6787    DERIVE
6788      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := FALSE;
6789      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
6790      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := TRUE;
6791      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := FALSE;
6792      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := FALSE;
6793      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
6794  END_ENTITY;
6795
6796  ENTITY cylindrical_pair_value
6797    SUBTYPE OF ( pair_value );
6798      SELF\pair_value.applies_to_pair  : cylindrical_pair;
6799      actual_translation               : length_measure;
6800      actual_rotation                  : plane_angle_measure;
6801  END_ENTITY;
6802
6803  ENTITY cylindrical_pair_with_range
6804    SUBTYPE OF ( cylindrical_pair );
6805      lower_limit_actual_translation  : OPTIONAL length_measure;
6806      upper_limit_actual_translation  : OPTIONAL length_measure;
6807      lower_limit_actual_rotation     : OPTIONAL plane_angle_measure;
6808      upper_limit_actual_rotation     : OPTIONAL plane_angle_measure;
6809    WHERE
6810      wr1: ( ( ( NOT EXISTS( lower_limit_actual_translation ) ) OR ( NOT EXISTS( upper_limit_actual_translation ) ) ) XOR (
6811               lower_limit_actual_translation < upper_limit_actual_translation ) );
6812      wr2: ( ( ( NOT EXISTS( lower_limit_actual_rotation ) ) OR ( NOT EXISTS( upper_limit_actual_rotation ) ) ) XOR (
6813               lower_limit_actual_rotation < upper_limit_actual_rotation ) );
6814  END_ENTITY;
6815
6816  ENTITY cylindrical_surface
6817    SUBTYPE OF ( elementary_surface );
6818      radius  : positive_length_measure;
6819  END_ENTITY;
6820
6821  ENTITY cylindricity_tolerance
6822    SUBTYPE OF ( geometric_tolerance );
6823    WHERE
6824      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' ) IN
6825               TYPEOF( SELF ) ) );
6826  END_ENTITY;
6827
6828  ENTITY data_environment;
6829      name         : label;
6830      description  : text;
6831      elements     : SET [1 : ?] OF property_definition_representation;
6832  END_ENTITY;
6833
6834  ENTITY data_quality_assessment_measurement_association;
6835      assessment_specification  : data_quality_criterion_assessment_association;
6836      measurement_requirement   : data_quality_criterion_measurement_association;
6837    WHERE
6838      wr1: ( SELF.measurement_requirement\representation_item_relationship.relating_representation_item :=: SELF.
6839               assessment_specification.criterion );
6840  END_ENTITY;
6841
6842  ENTITY data_quality_assessment_specification;
6843      description  : text;
6844  END_ENTITY;
6845
6846  ENTITY data_quality_criteria_representation
6847    SUBTYPE OF ( representation );
6848    WHERE
6849      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6850               'DATA_QUALITY_CRITERION'  ) IN TYPEOF( q ) ) ) ) > 0 );
6851  END_ENTITY;
6852
6853  ENTITY data_quality_criterion
6854    SUBTYPE OF ( representation_item );
6855    WHERE
6856      wr1: ( SIZEOF( QUERY ( q <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) )
6857               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' ) IN
6858               TYPEOF( q ) ) ) ) = 0 );
6859  END_ENTITY;
6860
6861  ENTITY data_quality_criterion_assessment_association;
6862      criterion                 : data_quality_criterion;
6863      assessment_specification  : data_quality_assessment_specification;
6864  END_ENTITY;
6865
6866  ENTITY data_quality_criterion_measurement_association
6867    SUBTYPE OF ( representation_item_relationship );
6868      SELF\representation_item_relationship.relating_representation_item : data_quality_criterion;
6869      SELF\representation_item_relationship.related_representation_item : data_quality_measurement_requirement;
6870  END_ENTITY;
6871
6872  ENTITY data_quality_definition;
6873      description  : text;
6874  END_ENTITY;
6875
6876  ENTITY data_quality_definition_relationship;
6877      description                       : text;
6878      relating_data_quality_definition  : data_quality_definition;
6879      related_data_quality_definition   : data_quality_definition;
6880  END_ENTITY;
6881
6882  ENTITY data_quality_definition_representation_relationship;
6883      description          : text;
6884      definition           : data_quality_definition;
6885      used_representation  : used_quality_representation_select;
6886  END_ENTITY;
6887
6888  ENTITY data_quality_inspection_criterion_report
6889    SUBTYPE OF ( data_quality_inspection_report );
6890      statistical_values  : SET [1 : 2] OF data_quality_inspection_criterion_report_item;
6891    WHERE
6892      wr1: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF\data_quality_inspection_report.inspection_result.criterion_inspected,
6893               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST' ) )
6894               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SUMMARY_REPORT_REQUEST' ) IN TYPEOF( i1 ) ) ) ) > 0 );
6895      wr2: ( ( SIZEOF( SELF.statistical_values ) = 1 ) OR ( SELF.statistical_values[1].value_type <> SELF.statistical_values[2].
6896               value_type ) );
6897  END_ENTITY;
6898
6899  ENTITY data_quality_inspection_criterion_report_item
6900    SUBTYPE OF ( representation_item );
6901      statistical_value  : INTEGER;
6902      value_type         : statistical_value_type;
6903    WHERE
6904      wr1: ( SIZEOF( QUERY ( q <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) )
6905               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' ) IN TYPEOF( q ) ) ) )
6906               = 0 );
6907  END_ENTITY;
6908
6909  ENTITY data_quality_inspection_instance_report
6910    SUBTYPE OF ( data_quality_inspection_report );
6911      inspected_instances  : LIST [1 : ?] OF data_quality_inspection_instance_report_item;
6912    WHERE
6913      wr1: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF\data_quality_inspection_report.inspection_result.criterion_inspected,
6914               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DATA_QUALITY_REPORT_REQUEST.CRITERION_OF_REPORT_REQUEST' ) )
6915               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DETAILED_REPORT_REQUEST' ) IN TYPEOF( i1 ) ) ) ) > 0 );
6916  END_ENTITY;
6917
6918  ENTITY data_quality_inspection_instance_report_item
6919    SUBTYPE OF ( representation_item );
6920      inspected_elements  : SET [1 : ?] OF inspected_element_select;
6921    WHERE
6922      wr1: ( SIZEOF( QUERY ( q <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) )
6923               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' ) IN TYPEOF( q ) ) ) )
6924               = 0 );
6925  END_ENTITY;
6926
6927  ENTITY data_quality_inspection_report
6928    SUPERTYPE OF ( ONEOF ( data_quality_inspection_criterion_report, data_quality_inspection_instance_report ) )
6929    SUBTYPE OF ( representation_item );
6930      inspection_result  : data_quality_inspection_result;
6931    WHERE
6932      wr1: ( SIZEOF( QUERY ( q <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) )
6933               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' ) IN TYPEOF( q ) ) ) )
6934               = 0 );
6935  END_ENTITY;
6936
6937  ENTITY data_quality_inspection_result
6938    SUBTYPE OF ( representation_item );
6939      criterion_inspected  : data_quality_criterion;
6940    WHERE
6941      wr1: ( SIZEOF( QUERY ( q <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) )
6942               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATA_QUALITY_CRITERIA_REPRESENTATION' ) IN TYPEOF( q ) ) ) )
6943               = 0 );
6944  END_ENTITY;
6945
6946  ENTITY data_quality_inspection_result_representation
6947    SUBTYPE OF ( representation );
6948      criteria_inspected  : data_quality_criteria_representation;
6949    WHERE
6950      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
6951               'DATA_QUALITY_INSPECTION_RESULT'  ) IN TYPEOF( q ) ) ) ) > 0 );
6952      wr2: ( SIZEOF( inspected_product_definition( SELF ) ) > 0 );
6953  END_ENTITY;
6954
6955  ENTITY data_quality_inspection_result_with_judgement
6956    SUBTYPE OF ( data_quality_inspection_result );
6957      judgement  : BOOLEAN;
6958  END_ENTITY;
6959
6960  ENTITY data_quality_measurement_requirement
6961    SUBTYPE OF ( representation_item );
6962    WHERE
6963      wr1: ( SIZEOF( QUERY ( q <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) )
6964               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' ) IN
6965               TYPEOF( q ) ) ) ) = 0 );
6966  END_ENTITY;
6967
6968  ENTITY data_quality_report_measurement_association
6969    SUBTYPE OF ( representation_item_relationship );
6970      SELF\representation_item_relationship.relating_representation_item : data_quality_measurement_requirement;
6971      SELF\representation_item_relationship.related_representation_item : data_quality_inspection_report;
6972  END_ENTITY;
6973
6974  ENTITY data_quality_report_request
6975    ABSTRACT SUPERTYPE OF ( ONEOF ( summary_report_request, detailed_report_request ) );
6976      description                  : text;
6977      criterion_of_report_request  : data_quality_criterion;
6978  END_ENTITY;
6979
6980  ENTITY date
6981    SUPERTYPE OF ( ONEOF ( calendar_date, ordinal_date, week_of_year_and_day_date, year_month ) );
6982      year_component  : year_number;
6983  END_ENTITY;
6984
6985  ENTITY date_and_time;
6986      date_component  : date;
6987      time_component  : local_time;
6988  END_ENTITY;
6989
6990  ENTITY date_and_time_assignment
6991    ABSTRACT SUPERTYPE;
6992      assigned_date_and_time  : date_and_time;
6993      role                    : date_time_role;
6994  END_ENTITY;
6995
6996  ENTITY date_assignment
6997    ABSTRACT SUPERTYPE;
6998      assigned_date  : date;
6999      role           : date_role;
7000  END_ENTITY;
7001
7002  ENTITY date_representation_item
7003    SUBTYPE OF ( representation_item, date );
7004  END_ENTITY;
7005
7006  ENTITY date_role;
7007      name  : label;
7008    DERIVE
7009      description  : text := get_description_value( SELF );
7010    WHERE
7011      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
7012               <= 1 );
7013  END_ENTITY;
7014
7015  ENTITY date_time_representation_item
7016    SUBTYPE OF ( representation_item, date_and_time );
7017  END_ENTITY;
7018
7019  ENTITY date_time_role;
7020      name  : label;
7021    DERIVE
7022      description  : text := get_description_value( SELF );
7023    WHERE
7024      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
7025               <= 1 );
7026  END_ENTITY;
7027
7028  ENTITY dated_effectivity
7029    SUBTYPE OF ( effectivity );
7030      effectivity_end_date    : OPTIONAL date_time_or_event_occurrence;
7031      effectivity_start_date  : OPTIONAL date_time_or_event_occurrence;
7032    WHERE
7033      wr1: ( EXISTS( effectivity_end_date ) OR EXISTS( effectivity_start_date ) );
7034  END_ENTITY;
7035
7036  ENTITY datum
7037    SUBTYPE OF ( shape_aspect );
7038      identification  : identifier;
7039    INVERSE
7040      established_by_relationships : SET [1 : ?] OF shape_aspect_relationship FOR related_shape_aspect;
7041    UNIQUE
7042      ur1 : identification, of_shape;
7043    WHERE
7044      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM' IN TYPEOF( SELF ) ) XOR ( SIZEOF( QUERY ( x <* SELF
7045               \datum.established_by_relationships | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE',
7046               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET' ] * TYPEOF( x\shape_aspect_relationship.
7047               relating_shape_aspect ) ) = 1 ) ) ) >= 1 ) );
7048      wr2: ( SIZEOF( QUERY ( x <* SELF\datum.established_by_relationships | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7049               + 'DATUM_FEATURE'  IN TYPEOF( x\shape_aspect_relationship.relating_shape_aspect ) ) ) ) <= 1 );
7050      wr3: ( SELF\shape_aspect.product_definitional = FALSE );
7051      wr4: ( SELF\shape_aspect.name = '' );
7052  END_ENTITY;
7053
7054  ENTITY datum_feature
7055    SUPERTYPE OF ( ONEOF ( dimensional_location_with_datum_feature, dimensional_size_with_datum_feature ) )
7056    SUBTYPE OF ( shape_aspect );
7057    INVERSE
7058      feature_basis_relationship : SET [1 : ?] OF shape_aspect_relationship FOR relating_shape_aspect;
7059    WHERE
7060      wr1: ( SIZEOF( QUERY ( sar <* SELF\datum_feature.feature_basis_relationship | (
7061               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM'  IN TYPEOF( sar\shape_aspect_relationship.
7062               related_shape_aspect ) ) ) ) = 1 );
7063      wr2: ( SELF\shape_aspect.product_definitional = TRUE );
7064  END_ENTITY;
7065
7066  ENTITY datum_feature_callout
7067    SUBTYPE OF ( draughting_callout );
7068  END_ENTITY;
7069
7070  ENTITY datum_reference;
7071      precedence        : INTEGER;
7072      referenced_datum  : datum;
7073    WHERE
7074      wr1: ( precedence > 0 );
7075  END_ENTITY;
7076
7077  ENTITY datum_reference_compartment
7078    SUBTYPE OF ( general_datum_reference );
7079    INVERSE
7080      owner : datum_system FOR constituents;
7081  END_ENTITY;
7082
7083  ENTITY datum_reference_element
7084    SUBTYPE OF ( general_datum_reference );
7085    DERIVE
7086      owner  : general_datum_reference := sts_get_general_datum_reference( SELF );
7087    WHERE
7088      wr1: ( SELF <> owner );
7089      wr2: EXISTS( owner );
7090      wr3: ( SELF\shape_aspect.of_shape = owner\shape_aspect.of_shape );
7091  END_ENTITY;
7092
7093  ENTITY datum_reference_modifier_with_value;
7094      modifier_type   : datum_reference_modifier_type;
7095      modifier_value  : length_measure_with_unit;
7096    WHERE
7097      wr1: ( modifier_value\measure_with_unit.value_component > 0 );
7098  END_ENTITY;
7099
7100  ENTITY datum_system
7101    SUBTYPE OF ( shape_aspect );
7102      constituents  : LIST [1 : 3] OF UNIQUE datum_reference_compartment;
7103    UNIQUE
7104      ur1 : of_shape, name;
7105    WHERE
7106      wr1: ( SELF\shape_aspect.product_definitional = FALSE );
7107  END_ENTITY;
7108
7109  ENTITY datum_target
7110    SUBTYPE OF ( shape_aspect );
7111      target_id  : identifier;
7112    INVERSE
7113      target_basis_relationship : SET [1 : ?] OF shape_aspect_relationship FOR relating_shape_aspect;
7114    WHERE
7115      wr1: ( SIZEOF( QUERY ( sar <* SELF\datum_target.target_basis_relationship | (
7116               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM'  IN TYPEOF( sar\shape_aspect_relationship.
7117               related_shape_aspect ) ) ) ) = 1 );
7118      wr2: ( SELF\shape_aspect.product_definitional = TRUE );
7119  END_ENTITY;
7120
7121  ENTITY datum_target_callout
7122    SUBTYPE OF ( draughting_callout );
7123  END_ENTITY;
7124
7125  ENTITY default_tolerance_table
7126    SUBTYPE OF ( representation );
7127    WHERE
7128      wr1: ( SIZEOF( QUERY ( i <* SELF.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7129               + 'DEFAULT_TOLERANCE_TABLE_CELL'  IN TYPEOF( i ) ) ) ) ) = 0 );
7130      wr2: ( ( SIZEOF( QUERY ( rr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
7131               'REPRESENTATION_RELATIONSHIP.REP_1'  ) | ( rr.name < 'general tolerance definition' ) ) ) = 0 ) AND ( SIZEOF(
7132               QUERY ( rr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_1' )
7133               | ( ( rr.name = 'general tolerance definition' ) AND ( rr.rep_2.name < 'default tolerance' ) ) ) ) = 0 ) AND (
7134               SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.REP_2' ) )
7135               = 0 ) );
7136  END_ENTITY;
7137
7138  ENTITY default_tolerance_table_cell
7139    SUBTYPE OF ( compound_representation_item );
7140    WHERE
7141      wr1: ( SIZEOF( QUERY ( x <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION.ITEMS' ) |
7142               ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DEFAULT_TOLERANCE_TABLE' ) IN TYPEOF( x ) ) ) ) = 1 );
7143      wr2: default_tolerance_table_cell_wr2( SELF\compound_representation_item.item_element );
7144      wr3: default_tolerance_table_cell_wr3( SELF\compound_representation_item.item_element );
7145      wr4: default_tolerance_table_cell_wr4( SELF\compound_representation_item.item_element );
7146      wr5: default_tolerance_table_cell_wr5( SELF\compound_representation_item.item_element );
7147  END_ENTITY;
7148
7149  ENTITY defined_character_glyph
7150    SUBTYPE OF ( geometric_representation_item );
7151      definition  : defined_glyph_select;
7152      placement   : axis2_placement;
7153  END_ENTITY;
7154
7155  ENTITY defined_constraint
7156    ABSTRACT SUPERTYPE OF ( equal_parameter_constraint )
7157    SUBTYPE OF ( explicit_constraint );
7158  END_ENTITY;
7159
7160  ENTITY defined_function
7161    ABSTRACT SUPERTYPE OF ( ONEOF ( numeric_defined_function, string_defined_function, boolean_defined_function ) ANDOR
7162        sql_mappable_defined_function );
7163  END_ENTITY;
7164
7165  ENTITY defined_symbol
7166    SUBTYPE OF ( geometric_representation_item );
7167      definition  : defined_symbol_select;
7168      target      : symbol_target;
7169  END_ENTITY;
7170
7171  ENTITY definite_integral_expression
7172    SUBTYPE OF ( quantifier_expression );
7173      lower_limit_neg_infinity  : BOOLEAN;
7174      upper_limit_pos_infinity  : BOOLEAN;
7175    DERIVE
7176      integrand                             : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
7177      variable_of_integration               : maths_variable := SELF\multiple_arity_generic_expression.operands[2];
7178      SELF\quantifier_expression.variables  : LIST [1 : 1] OF UNIQUE generic_variable := [variable_of_integration];
7179    WHERE
7180      wr1: has_values_space( integrand );
7181      wr2: space_is_continuum( values_space_of( integrand ) );
7182      wr3: definite_integral_expr_check( SELF\multiple_arity_generic_expression.operands, lower_limit_neg_infinity,
7183               upper_limit_pos_infinity );
7184  END_ENTITY;
7185
7186  ENTITY definite_integral_function
7187    SUBTYPE OF ( maths_function, unary_generic_expression );
7188      SELF\unary_generic_expression.operand  : maths_function;
7189      variable_of_integration                : input_selector;
7190      lower_limit_neg_infinity               : BOOLEAN;
7191      upper_limit_pos_infinity               : BOOLEAN;
7192    DERIVE
7193      integrand  : maths_function := SELF\unary_generic_expression.operand;
7194    WHERE
7195      wr1: space_is_continuum( integrand.range );
7196      wr2: definite_integral_check( integrand.domain, variable_of_integration, lower_limit_neg_infinity, upper_limit_pos_infinity );
7197  END_ENTITY;
7198
7199  ENTITY definitional_representation
7200    SUBTYPE OF ( representation );
7201    WHERE
7202      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF( SELF\representation.
7203               context_of_items ) );
7204  END_ENTITY;
7205
7206  ENTITY definitional_representation_relationship
7207    SUBTYPE OF ( representation_relationship );
7208    WHERE
7209      wr1: acyclic_representation_relationship( SELF, [SELF\representation_relationship.rep_2],
7210               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'REPRESENTATION' );
7211  END_ENTITY;
7212
7213  ENTITY definitional_representation_relationship_with_same_context
7214    SUBTYPE OF ( definitional_representation_relationship );
7215    WHERE
7216      wr1: ( SELF\representation_relationship.rep_1.context_of_items :=: SELF\representation_relationship.rep_2.context_of_items );
7217  END_ENTITY;
7218
7219  ENTITY degenerate_pcurve
7220    SUBTYPE OF ( point );
7221      basis_surface       : surface;
7222      reference_to_curve  : definitional_representation;
7223    WHERE
7224      wr1: ( SIZEOF( reference_to_curve\representation.items ) = 1 );
7225      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( reference_to_curve\representation.items[1] ) );
7226      wr3: ( reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2 );
7227  END_ENTITY;
7228
7229  ENTITY degenerate_toroidal_surface
7230    SUBTYPE OF ( toroidal_surface );
7231      select_outer  : BOOLEAN;
7232    WHERE
7233      wr1: ( major_radius < minor_radius );
7234  END_ENTITY;
7235
7236  ENTITY delete_element
7237    SUBTYPE OF ( change_element );
7238  END_ENTITY;
7239
7240  ENTITY derived_shape_aspect
7241    SUPERTYPE OF ( ONEOF ( apex, centre_of_symmetry, geometric_alignment, geometric_contact, geometric_intersection,
7242        parallel_offset, perpendicular_to, extension, tangent ) )
7243    SUBTYPE OF ( shape_aspect );
7244    INVERSE
7245      deriving_relationships : SET [1 : ?] OF shape_aspect_deriving_relationship FOR relating_shape_aspect;
7246  END_ENTITY;
7247
7248  ENTITY derived_unit
7249    SUPERTYPE OF ( ONEOF ( absorbed_dose_unit, acceleration_unit, radioactivity_unit, area_unit, capacitance_unit,
7250        dose_equivalent_unit, electric_charge_unit, conductance_unit, electric_potential_unit, energy_unit,
7251        magnetic_flux_density_unit, force_unit, frequency_unit, illuminance_unit, inductance_unit, magnetic_flux_unit, power_unit,
7252        pressure_unit, resistance_unit, velocity_unit, volume_unit ) );
7253      elements  : SET [1 : ?] OF derived_unit_element;
7254    DERIVE
7255      name  : label := get_name_value( SELF );
7256    WHERE
7257      wr1: ( ( SIZEOF( elements ) > 1 ) OR ( ( SIZEOF( elements ) = 1 ) AND ( elements[1].exponent <> 1 ) ) );
7258      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
7259  END_ENTITY;
7260
7261  ENTITY derived_unit_element;
7262      unit      : named_unit;
7263      exponent  : REAL;
7264  END_ENTITY;
7265
7266  ENTITY description_attribute;
7267      attribute_value  : text;
7268      described_item   : description_attribute_select;
7269  END_ENTITY;
7270
7271  ENTITY descriptive_representation_item
7272    SUPERTYPE OF ( ONEOF ( tagged_text_item, uniform_resource_identifier ) )
7273    SUBTYPE OF ( representation_item );
7274      description  : text;
7275  END_ENTITY;
7276
7277  ENTITY design_context
7278    SUBTYPE OF ( product_definition_context );
7279    WHERE
7280      wr1: ( SELF.life_cycle_stage = 'design' );
7281  END_ENTITY;
7282
7283  ENTITY design_make_from_relationship
7284    SUBTYPE OF ( product_definition_relationship );
7285  END_ENTITY;
7286
7287  ENTITY detailed_report_request
7288    SUBTYPE OF ( data_quality_report_request );
7289      detailed_report_request_type  : detailed_report_type;
7290      report_sequence               : preferred_ordering;
7291  END_ENTITY;
7292
7293  ENTITY detailed_report_request_with_number_of_data
7294    SUBTYPE OF ( detailed_report_request );
7295      number_of_data  : INTEGER;
7296    DERIVE
7297      SELF\detailed_report_request.detailed_report_request_type : detailed_report_type := measured_element;
7298  END_ENTITY;
7299
7300  ENTITY diameter_dimension
7301    SUBTYPE OF ( dimension_curve_directed_callout );
7302  END_ENTITY;
7303
7304  ENTITY dielectric_constant_measure_with_unit
7305    SUBTYPE OF ( ratio_measure_with_unit );
7306  END_ENTITY;
7307
7308  ENTITY dimension_callout
7309    SUBTYPE OF ( draughting_callout );
7310    WHERE
7311      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' IN TYPEOF( SELF ) ) XOR ( SIZEOF(
7312               QUERY ( dce_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE'
7313               IN TYPEOF( dce_1 ) ) ) ) = 0 ) );
7314      wr2: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' IN TYPEOF( SELF ) ) XOR ( SIZEOF(
7315               QUERY ( dce_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7316               + 'PROJECTION_CURVE'  IN TYPEOF( dce_1 ) ) ) ) = 0 ) );
7317      wr3: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF( SELF ) ) XOR (
7318               SIZEOF( QUERY ( dce_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7319               + 'DIMENSION_CURVE'  IN TYPEOF( dce_1 ) ) ) ) = 0 ) );
7320  END_ENTITY;
7321
7322  ENTITY dimension_callout_component_relationship
7323    SUBTYPE OF ( draughting_callout_relationship );
7324    WHERE
7325      wr1: ( SELF.name IN [ 'prefix', 'suffix'] );
7326      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' IN TYPEOF( SELF.
7327               relating_draughting_callout ) );
7328      wr3: ( SIZEOF( TYPEOF( SELF.related_draughting_callout ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7329               + 'LEADER_DIRECTED_CALLOUT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT',
7330               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' ,
7331               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_DIMENSION_CALLOUT' ] ) = 0 );
7332      wr4: ( ( SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents ) = SELF.
7333               related_draughting_callout.contents );
7334      wr5: ( ( SELF.name = 'prefix' ) AND ( SIZEOF( QUERY ( ato <* QUERY ( con <* SELF.related_draughting_callout.contents | (
7335               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'  IN TYPEOF( con ) ) ) | ( NOT ( ato.
7336               name = 'prefix text' ) ) ) ) = 0 ) );
7337      wr6: ( ( SELF.name = 'suffix' ) AND ( SIZEOF( QUERY ( ato <* QUERY ( con <* SELF.related_draughting_callout.contents | (
7338               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE'  IN TYPEOF( con ) ) ) | ( NOT ( ato.
7339               name = 'suffix text' ) ) ) ) = 0 ) );
7340  END_ENTITY;
7341
7342  ENTITY dimension_callout_relationship
7343    SUBTYPE OF ( draughting_callout_relationship );
7344    WHERE
7345      wr1: ( SELF.name IN [ 'primary', 'secondary'] );
7346      wr2: ( SIZEOF( TYPEOF( SELF.relating_draughting_callout ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7347               + 'ANGULAR_DIMENSION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
7348               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION' ,
7349               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_DIMENSION' ,
7350               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION' ,
7351               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION' ,
7352               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION' ] ) >= 1 );
7353      wr3: ( SIZEOF( TYPEOF( SELF.related_draughting_callout ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7354               + 'DIMENSION_CURVE_DIRECTED_CALLOUT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7355               + 'PROJECTION_DIRECTED_CALLOUT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT'] ) = 0 );
7356      wr4: ( ( SELF.related_draughting_callout.contents * SELF.relating_draughting_callout.contents ) = SELF.
7357               related_draughting_callout.contents );
7358  END_ENTITY;
7359
7360  ENTITY dimension_curve
7361    SUBTYPE OF ( annotation_curve_occurrence );
7362    WHERE
7363      wr1: ( SIZEOF( QUERY ( dct <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'TERMINATOR_SYMBOL.'
7364               + 'ANNOTATED_CURVE'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DIMENSION_CURVE_TERMINATOR' )
7365               IN TYPEOF( dct ) ) ) ) <= 2 );
7366      wr2: ( SIZEOF( QUERY ( dcdc <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_CALLOUT.'
7367               + 'CONTENTS'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DIMENSION_CURVE_DIRECTED_CALLOUT' ) IN
7368               TYPEOF( dcdc ) ) ) ) >= 1 );
7369      wr3: ( ( SIZEOF( QUERY ( dct1 <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'TERMINATOR_SYMBOL.'
7370               + 'ANNOTATED_CURVE'  ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DIMENSION_CURVE_TERMINATOR' )
7371               IN TYPEOF( dct1 ) ) AND ( dct1\dimension_curve_terminator.role = dimension_extent_usage.origin ) ) ) ) <= 1 ) AND
7372               ( SIZEOF( QUERY ( dct2 <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'TERMINATOR_SYMBOL.'
7373               + 'ANNOTATED_CURVE'  ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DIMENSION_CURVE_TERMINATOR' )
7374               IN TYPEOF( dct2 ) ) AND ( dct2\dimension_curve_terminator.role = dimension_extent_usage.target ) ) ) ) <= 1 ) );
7375  END_ENTITY;
7376
7377  ENTITY dimension_curve_directed_callout
7378    SUBTYPE OF ( draughting_callout );
7379    WHERE
7380      wr1: ( SIZEOF( QUERY ( d_c <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7381               + 'DIMENSION_CURVE'  IN TYPEOF( d_c ) ) ) ) <= 2 );
7382      wr2: ( SIZEOF( SELF\draughting_callout.contents ) >= 2 );
7383  END_ENTITY;
7384
7385  ENTITY dimension_curve_terminator
7386    SUBTYPE OF ( terminator_symbol );
7387      role  : dimension_extent_usage;
7388    WHERE
7389      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE' IN TYPEOF( SELF\terminator_symbol.annotated_curve ) );
7390  END_ENTITY;
7391
7392  ENTITY dimension_curve_terminator_to_projection_curve_associativity
7393    SUBTYPE OF ( annotation_occurrence_associativity );
7394      SELF\annotation_occurrence_relationship.relating_annotation_occurrence : dimension_curve_terminator;
7395      SELF\annotation_occurrence_relationship.related_annotation_occurrence : projection_curve;
7396  END_ENTITY;
7397
7398  ENTITY dimension_pair
7399    SUBTYPE OF ( draughting_callout_relationship );
7400    WHERE
7401      wr1: ( SELF.name IN [ 'chained', 'parallel'] );
7402      wr2: ( SIZEOF( TYPEOF( SELF.relating_draughting_callout ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7403               + 'ANGULAR_DIMENSION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
7404               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION' ,
7405               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION' ,
7406               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION' ,
7407               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION' ] ) = 1 );
7408      wr3: ( SIZEOF( TYPEOF( SELF.related_draughting_callout ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7409               + 'ANGULAR_DIMENSION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_DIMENSION',
7410               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIAMETER_DIMENSION' ,
7411               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_DIMENSION' ,
7412               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORDINATE_DIMENSION' ,
7413               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIUS_DIMENSION' ] ) = 1 );
7414  END_ENTITY;
7415
7416  ENTITY dimension_related_tolerance_zone_element;
7417      related_dimension  : dimensional_location;
7418      related_element    : tolerance_zone_definition;
7419  END_ENTITY;
7420
7421  ENTITY dimension_text_associativity
7422    SUBTYPE OF ( text_literal, mapped_item );
7423    WHERE
7424      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' IN TYPEOF( SELF\mapped_item.
7425               mapping_source.mapped_representation ) );
7426      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF( SELF\mapped_item.mapping_target ) );
7427      wr3: ( SIZEOF( QUERY ( ato <* QUERY ( si <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM' )
7428               | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( si ) ) ) | ( NOT (
7429               SIZEOF( QUERY ( dc <* USEDIN( ato, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_CALLOUT.'
7430               + 'CONTENTS'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT' IN TYPEOF( dc ) ) ) * [
7431               SELF\mapped_item.mapping_target] ) = 1 ) ) ) ) = 0 );
7432  END_ENTITY;
7433
7434  ENTITY dimensional_characteristic_representation;
7435      dimension       : dimensional_characteristic;
7436      representation  : shape_dimension_representation;
7437  END_ENTITY;
7438
7439  ENTITY dimensional_exponents;
7440      length_exponent                     : REAL;
7441      mass_exponent                       : REAL;
7442      time_exponent                       : REAL;
7443      electric_current_exponent           : REAL;
7444      thermodynamic_temperature_exponent  : REAL;
7445      amount_of_substance_exponent        : REAL;
7446      luminous_intensity_exponent         : REAL;
7447  END_ENTITY;
7448
7449  ENTITY dimensional_location
7450    SUPERTYPE OF ( ONEOF ( angular_location, dimensional_location_with_path ) )
7451    SUBTYPE OF ( shape_aspect_relationship );
7452    WHERE
7453      wr1: ( SELF\shape_aspect_relationship.relating_shape_aspect :<>: SELF\shape_aspect_relationship.related_shape_aspect );
7454      wr2: ( SELF\shape_aspect_relationship.relating_shape_aspect.of_shape :=: SELF\shape_aspect_relationship.
7455               related_shape_aspect.of_shape );
7456  END_ENTITY;
7457
7458  ENTITY dimensional_location_with_datum_feature
7459    SUBTYPE OF ( datum_feature, dimensional_location );
7460  END_ENTITY;
7461
7462  ENTITY dimensional_location_with_path
7463    SUBTYPE OF ( dimensional_location );
7464      path  : shape_aspect;
7465  END_ENTITY;
7466
7467  ENTITY dimensional_size
7468    SUPERTYPE OF ( ONEOF ( angular_size, dimensional_size_with_path ) );
7469      applies_to  : shape_aspect;
7470      name        : label;
7471    DERIVE
7472      id  : identifier := get_id_value( SELF );
7473    UNIQUE
7474      ur1 : id, applies_to;
7475    WHERE
7476      wr1: ( applies_to.product_definitional = TRUE );
7477      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
7478  END_ENTITY;
7479
7480  ENTITY dimensional_size_with_datum_feature
7481    SUBTYPE OF ( datum_feature, dimensional_size );
7482  END_ENTITY;
7483
7484  ENTITY dimensional_size_with_path
7485    SUBTYPE OF ( dimensional_size );
7486      path  : shape_aspect;
7487  END_ENTITY;
7488
7489  ENTITY directed_action
7490    SUBTYPE OF ( executed_action );
7491      directive  : action_directive;
7492  END_ENTITY;
7493
7494  ENTITY directed_angle
7495    SUBTYPE OF ( shape_aspect );
7496    WHERE
7497      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
7498      wr2: ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations( SELF ) | (
7499               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
7500               used_representation ) ) ) ) = 1 );
7501      wr3: ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations( SELF ) | ( (
7502               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
7503               used_representation ) ) AND ( SIZEOF( pdr.used_representation.items ) = 1 ) ) ) ) = 1 );
7504      wr4: ( SELF.description IN [ 'punch direction', 'profile normal', 'surface normal'] );
7505      wr5: ( SIZEOF( QUERY ( pdr <* get_shape_aspect_property_definition_representations( SELF ) | ( (
7506               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
7507               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'angle' ) AND (
7508               SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
7509               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
7510               = 1 );
7511  END_ENTITY;
7512
7513  ENTITY directed_dimensional_location
7514    SUBTYPE OF ( dimensional_location );
7515  END_ENTITY;
7516
7517  ENTITY direction
7518    SUBTYPE OF ( geometric_representation_item );
7519      direction_ratios  : LIST [2 : 3] OF REAL;
7520    WHERE
7521      wr1: ( SIZEOF( QUERY ( tmp <* direction_ratios | ( tmp <> 0 ) ) ) > 0 );
7522  END_ENTITY;
7523
7524  ENTITY direction_shape_representation
7525    SUBTYPE OF ( shape_representation );
7526    WHERE
7527      wr1: ( SIZEOF( SELF.items ) = 1 );
7528      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF( it ) ) ) ) )
7529               = 0 );
7530  END_ENTITY;
7531
7532  ENTITY disallowed_assembly_relationship_usage
7533    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
7534    WHERE
7535      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7536               + 'ASSEMBLY_COMPONENT_USAGE' ] );
7537  END_ENTITY;
7538
7539  ENTITY disconnected_face_set
7540    SUBTYPE OF ( erroneous_topology );
7541      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
7542    WHERE
7543      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
7544      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
7545      wr3: validate_locations_of_extreme_value_type( SELF, [] );
7546      wr4: validate_accuracy_types( SELF, [] );
7547  END_ENTITY;
7548
7549  ENTITY discontinuous_geometry
7550    ABSTRACT SUPERTYPE OF ( ONEOF ( g1_discontinuous_curve, g2_discontinuous_curve, g1_discontinuous_surface,
7551        g2_discontinuous_surface ) )
7552    SUBTYPE OF ( inapt_geometry );
7553  END_ENTITY;
7554
7555  ENTITY div_expression
7556    SUBTYPE OF ( binary_numeric_expression );
7557  END_ENTITY;
7558
7559  ENTITY document;
7560      id           : identifier;
7561      name         : label;
7562      description  : OPTIONAL text;
7563      kind         : document_type;
7564    INVERSE
7565      representation_types : SET [0 : ?] OF document_representation_type FOR represented_document;
7566  END_ENTITY;
7567
7568  ENTITY document_file
7569    SUBTYPE OF ( document, characterized_object );
7570    WHERE
7571      wr1: ( SELF\characterized_object.name = '' );
7572      wr2: ( NOT EXISTS( SELF\characterized_object.description ) );
7573      wr3: ( SIZEOF( QUERY ( drt <* SELF\document.representation_types | ( drt.name IN [ 'digital', 'physical'] ) ) ) = 1 );
7574  END_ENTITY;
7575
7576  ENTITY document_identifier
7577    SUBTYPE OF ( group );
7578    UNIQUE
7579      ur1 : name, description;
7580  END_ENTITY;
7581
7582  ENTITY document_identifier_assignment
7583    SUBTYPE OF ( group_assignment );
7584      SELF\group_assignment.assigned_group  : document_identifier;
7585      items                                 : SET [1 : ?] OF document_identifier_assigned_item;
7586  END_ENTITY;
7587
7588  ENTITY document_product_association;
7589      name               : label;
7590      description        : OPTIONAL text;
7591      relating_document  : document;
7592      related_product    : product_or_formation_or_definition;
7593  END_ENTITY;
7594
7595  ENTITY document_product_equivalence
7596    SUBTYPE OF ( document_product_association );
7597    WHERE
7598      wr1: ( SELF\document_product_association.name = 'equivalence' );
7599      wr2: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF( SELF\document_product_association.
7600               related_product ) ) ) OR ( ( SELF\document_product_association.relating_document.kind.product_data_type =
7601               'configuration controlled document'  ) AND ( SIZEOF( QUERY ( prpc <* USEDIN( SELF\document_product_association.
7602               related_product, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' )
7603               | ( prpc.name = 'document' ) ) ) = 1 ) ) );
7604      wr3: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF( SELF.
7605               related_product ) ) ) OR ( ( SELF\document_product_association.relating_document.kind.product_data_type =
7606               'configuration controlled document version'  ) AND ( SIZEOF( QUERY ( prpc <* USEDIN( SELF.related_product\
7607               product_definition_formation.of_product, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7608               + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name = 'document' ) ) ) = 1 ) ) );
7609      wr4: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF( SELF.related_product ) ) )
7610               OR ( ( SELF\document_product_association.relating_document.kind.product_data_type =
7611               'configuration controlled document definition'  ) AND ( SIZEOF( QUERY ( prpc <* USEDIN( SELF\
7612               document_product_association.related_product\product_definition.formation.of_product,
7613               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name =
7614               'document'  ) ) ) = 1 ) ) );
7615  END_ENTITY;
7616
7617  ENTITY document_reference
7618    ABSTRACT SUPERTYPE;
7619      assigned_document  : document;
7620      source             : label;
7621    DERIVE
7622      role  : object_role := get_role( SELF );
7623    WHERE
7624      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
7625               1 );
7626  END_ENTITY;
7627
7628  ENTITY document_relationship;
7629      name               : label;
7630      description        : OPTIONAL text;
7631      relating_document  : document;
7632      related_document   : document;
7633  END_ENTITY;
7634
7635  ENTITY document_representation_type;
7636      name                  : label;
7637      represented_document  : document;
7638  END_ENTITY;
7639
7640  ENTITY document_type;
7641      product_data_type  : label;
7642  END_ENTITY;
7643
7644  ENTITY document_usage_constraint;
7645      source                 : document;
7646      subject_element        : label;
7647      subject_element_value  : text;
7648  END_ENTITY;
7649
7650  ENTITY document_usage_constraint_assignment
7651    ABSTRACT SUPERTYPE;
7652      assigned_document_usage  : document_usage_constraint;
7653      role                     : document_usage_role;
7654  END_ENTITY;
7655
7656  ENTITY document_usage_role;
7657      name         : label;
7658      description  : OPTIONAL text;
7659  END_ENTITY;
7660
7661  ENTITY dose_equivalent_measure_with_unit
7662    SUBTYPE OF ( measure_with_unit );
7663    WHERE
7664      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOSE_EQUIVALENT_UNIT' IN TYPEOF( SELF\measure_with_unit.
7665               unit_component ) );
7666  END_ENTITY;
7667
7668  ENTITY dose_equivalent_unit
7669    SUBTYPE OF ( derived_unit );
7670    WHERE
7671      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.sievert ) );
7672  END_ENTITY;
7673
7674  ENTITY double_offset_shelled_solid
7675    SUBTYPE OF ( shelled_solid );
7676      thickness2  : length_measure;
7677    WHERE
7678      wr1: ( thickness2 <> 0 );
7679      wr2: ( SELF\shelled_solid.thickness <> thickness2 );
7680  END_ENTITY;
7681
7682  ENTITY draped_defined_transformation
7683    SUBTYPE OF ( transformation_with_derived_angle );
7684  END_ENTITY;
7685
7686  ENTITY draughting_annotation_occurrence
7687    SUBTYPE OF ( annotation_occurrence );
7688    WHERE
7689      wr1 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' IN TYPEOF( SELF ) ) ) OR (
7690                SIZEOF( QUERY ( sty <* SELF.styles | ( NOT ( ( SIZEOF( sty.styles ) = 1 ) AND (
7691                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'  IN TYPEOF( sty.styles[1] ) ) ) ) ) ) = 0 ) );
7692      wr2 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF( SELF ) ) ) OR
7693                ( SIZEOF( QUERY ( sty <* SELF.styles | ( NOT ( ( SIZEOF( sty.styles ) = 1 ) AND (
7694                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE'  IN TYPEOF( sty.styles[1] ) ) ) ) ) ) = 0 ) );
7695      wr3 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' IN TYPEOF( SELF ) ) ) OR
7696                ( SIZEOF( QUERY ( bound <* SELF.item\annotation_fill_area.boundaries | ( NOT ( SIZEOF( QUERY ( si <* USEDIN( bound,
7697                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'STYLED_ITEM.ITEM' ) | ( (
7698                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'ANNOTATION_CURVE_OCCURRENCE' ) IN TYPEOF( si ) ) ) ) > 0 ) ) ) )
7699                = 0 ) );
7700      wr4 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF( SELF ) ) ) OR (
7701                SIZEOF( QUERY ( sty <* SELF.styles | ( NOT ( ( SIZEOF( sty.styles ) = 1 ) AND ( SIZEOF( TYPEOF( sty.styles[1] ) *
7702                [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_STYLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7703                + 'NULL_STYLE' ] ) = 1 ) ) ) ) ) = 0 ) );
7704      wr5 : ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7705                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL'  IN TYPEOF( SELF.item ) ) ) ) OR ( SIZEOF( [
7706                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_SYMBOL_REPRESENTATION',
7707                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_SUBFIGURE_REPRESENTATION'] * TYPEOF( SELF.item\
7708                mapped_item.mapping_source.mapped_representation ) ) = 1 ) );
7709      wr6 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) ) OR (
7710                SIZEOF( QUERY ( sty <* SELF.styles | ( NOT ( ( SIZEOF( sty.styles ) = 1 ) AND (
7711                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE'  IN TYPEOF( sty.styles[1] ) ) ) ) ) ) = 0 ) );
7712      wr7 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) ) OR (
7713                SIZEOF( TYPEOF( SELF.item ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT',
7714                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' ] ) = 1 ) );
7715      wr8 : ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7716                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'  IN TYPEOF( SELF.item ) ) ) ) OR ( SIZEOF(
7717                QUERY ( tl <* SELF.item\composite_text.collected_text | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7718                + 'TEXT_LITERAL'  IN TYPEOF( tl ) ) ) ) ) = 0 ) );
7719      wr9 : ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7720                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL'  IN TYPEOF( SELF.item ) ) ) ) OR ( SELF.item\
7721                text_literal.alignment IN [ 'baseline left', 'baseline centre', 'baseline right'] ) );
7722      wr10: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7723                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'  IN TYPEOF( SELF.item ) ) ) ) OR ( SIZEOF(
7724                QUERY ( tl <* QUERY ( text <* SELF.item\composite_text.collected_text | (
7725                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL'  IN TYPEOF( text ) ) ) | ( NOT ( tl\text_literal.
7726                alignment IN [ 'baseline left', 'baseline centre', 'baseline right'] ) ) ) ) = 0 ) );
7727      wr11: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7728                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'  IN TYPEOF( SELF.item ) ) ) ) OR
7729                check_text_alignment( SELF.item ) );
7730      wr12: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7731                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'  IN TYPEOF( SELF.item ) ) ) ) OR
7732                check_text_font( SELF.item ) );
7733      wr13: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7734                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT'  IN TYPEOF( SELF.item ) ) ) ) OR ( SIZEOF(
7735                QUERY ( tl <* QUERY ( text <* SELF.item\composite_text.collected_text | (
7736                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL'  IN TYPEOF( text ) ) ) | ( NOT ( SIZEOF( TYPEOF(
7737                tl ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'TEXT_LITERAL_WITH_BLANKING_BOX',
7738                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'TEXT_LITERAL_WITH_ASSOCIATED_CURVES'] ) = 0 ) ) ) ) = 0 ) );
7739      wr14: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7740                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL_WITH_ASSOCIATED_CURVES'  IN TYPEOF( SELF.item ) ) ) )
7741                OR ( SIZEOF( QUERY ( crv <* SELF.item\text_literal_with_associated_curves.associated_curves | ( NOT ( SIZEOF(
7742                QUERY ( si <* USEDIN( crv, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM' ) | (
7743                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE'  IN TYPEOF( si ) ) ) ) > 0 ) ) ) )
7744                = 0 ) );
7745      wr15: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' IN TYPEOF( SELF ) ) AND (
7746                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT_WITH_ASSOCIATED_CURVES'  IN TYPEOF( SELF.item ) ) ) )
7747                OR ( SIZEOF( QUERY ( crv <* SELF.item\composite_text_with_associated_curves.associated_curves | ( NOT ( SIZEOF(
7748                QUERY ( si <* USEDIN( crv, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM.ITEM' ) | (
7749                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE'  IN TYPEOF( si ) ) ) ) > 0 ) ) ) )
7750                = 0 ) );
7751      wr16: ( SIZEOF( QUERY ( cs <* QUERY ( sty <* SELF.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'
7752                IN TYPEOF( sty.styles[1] ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7753                + 'LENGTH_MEASURE_WITH_UNIT'  IN TYPEOF( cs.styles[1]\curve_style.curve_width ) ) AND (
7754                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'  IN TYPEOF( cs.styles[1]\curve_style.
7755                curve_width\measure_with_unit.value_component ) ) ) ) ) ) = 0 );
7756      wr17: ( SIZEOF( QUERY ( fas <* QUERY ( sty <* SELF.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7757                + 'FILL_AREA_STYLE'  IN TYPEOF( sty.styles[1] ) ) ) | ( NOT ( ( SIZEOF( QUERY ( fs <* fas.styles[1]\
7758                fill_area_style.fill_styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_TILES' IN
7759                TYPEOF( fs ) ) ) ) <= 1 ) AND ( SIZEOF( QUERY ( fst <* QUERY ( fs <* fas.styles[1]\fill_area_style.fill_styles |
7760                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_TILES' IN TYPEOF( fs ) ) ) | ( NOT ( SIZEOF(
7761                fst\fill_area_style_tiles.tiles ) = 1 ) ) ) ) = 0 ) ) ) ) ) = 0 );
7762      wr18: ( SIZEOF( QUERY ( fas <* QUERY ( sty <* SELF.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7763                + 'FILL_AREA_STYLE'  IN TYPEOF( sty.styles[1] ) ) ) | ( NOT ( SIZEOF( QUERY ( fsh <* QUERY ( fs <* fas.styles[1]\
7764                fill_area_style.fill_styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FILL_AREA_STYLE_HATCHING' IN
7765                TYPEOF( fs ) ) ) | ( NOT ( fsh\fill_area_style_hatching.point_of_reference_hatch_line :=: fsh\
7766                fill_area_style_hatching.pattern_start ) ) ) ) = 0 ) ) ) ) = 0 );
7767      wr19: ( SIZEOF( QUERY ( ts <* QUERY ( sty <* SELF.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_STYLE'
7768                IN TYPEOF( sty.styles[1] ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
7769                'TEXT_STYLE_WITH_BOX_CHARACTERISTICS'  ) IN TYPEOF( ts.styles[1] ) ) ) ) ) = 0 );
7770      wr20: ( SIZEOF( QUERY ( ts <* QUERY ( sty <* SELF.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7771                + 'TEXT_STYLE_WITH_BOX_CHARACTERISTICS'  IN TYPEOF( sty.styles[1] ) ) ) | ( NOT ( SIZEOF( ts.styles[1]\
7772                text_style_with_box_characteristics.characteristics ) = 4 ) ) ) ) = 0 );
7773  END_ENTITY;
7774
7775  ENTITY draughting_callout
7776    SUBTYPE OF ( geometric_representation_item );
7777      contents  : SET [1 : ?] OF draughting_callout_element;
7778    WHERE
7779      wr1: ( ( SIZEOF( QUERY ( l_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7780               + 'LEADER_CURVE'  IN TYPEOF( l_1 ) ) ) ) = 0 ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7781               + 'LEADER_DIRECTED_CALLOUT'  IN TYPEOF( SELF ) ) AND ( SIZEOF( QUERY ( l_1 <* SELF\draughting_callout.contents |
7782               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN TYPEOF( l_1 ) ) ) ) = 0 ) ) OR ( (
7783               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT'  IN TYPEOF( SELF ) ) AND ( SIZEOF(
7784               QUERY ( l_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7785               + 'DIMENSION_CURVE'  IN TYPEOF( l_1 ) ) ) ) = 0 ) ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7786               + 'DIMENSION_CURVE_DIRECTED_CALLOUT'  IN TYPEOF( SELF ) ) );
7787  END_ENTITY;
7788
7789  ENTITY draughting_callout_relationship;
7790      name                         : label;
7791      description                  : text;
7792      relating_draughting_callout  : draughting_callout;
7793      related_draughting_callout   : draughting_callout;
7794  END_ENTITY;
7795
7796  ENTITY draughting_elements
7797    SUBTYPE OF ( draughting_callout );
7798    WHERE
7799      wr1: ( SIZEOF( QUERY ( l_c <* QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7800               + 'LEADER_CURVE'  IN TYPEOF( con ) ) ) | ( NOT ( SIZEOF( QUERY ( ldc <* USEDIN( l_c,
7801               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_CALLOUT.CONTENTS' ) | (
7802               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT'  IN TYPEOF( ldc ) ) ) ) <= 1 ) ) ) ) = 0 );
7803      wr2: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' IN TYPEOF( SELF ) ) ) OR
7804               ( SIZEOF( QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN
7805               TYPEOF( con ) ) ) ) <= 2 ) );
7806      wr3: ( SIZEOF( QUERY ( rc <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_' +
7807               'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'  ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
7808               'DIMENSION_CALLOUT_RELATIONSHIP'  ) IN TYPEOF( rc ) ) AND ( rc.name = 'primary' ) ) ) ) <= 1 );
7809      wr4: ( SIZEOF( QUERY ( rc <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_' +
7810               'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT'  ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
7811               'DIMENSION_CALLOUT_RELATIONSHIP'  ) IN TYPEOF( rc ) ) AND ( rc.name = 'secondary' ) ) ) ) <= 1 );
7812      wr5: ( SIZEOF( QUERY ( sec <* QUERY ( rc <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7813               + 'DRAUGHTING_CALLOUT_'  + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT' ) | ( ( (
7814               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DIMENSION_CALLOUT_RELATIONSHIP' ) IN TYPEOF( rc ) ) AND (
7815               rc.name = 'secondary' ) ) ) | ( NOT ( SIZEOF( QUERY ( prim <* USEDIN( SELF,
7816               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT_'  + 'RELATIONSHIP.RELATING_DRAUGHTING_CALLOUT' )
7817               | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DIMENSION_CALLOUT_RELATIONSHIP' ) IN TYPEOF( prim ) )
7818               AND ( prim.name = 'primary' ) ) ) ) = 1 ) ) ) ) = 0 );
7819  END_ENTITY;
7820
7821  ENTITY draughting_model
7822    SUBTYPE OF ( representation );
7823      SELF\representation.items  : SET [1 : ?] OF draughting_model_item_select;
7824    UNIQUE
7825      ur1 : name;
7826    WHERE
7827      wr1: ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
7828               TYPEOF( it ) ) ) | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION',
7829               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_MODEL' ] * TYPEOF( mi\mapped_item.mapping_source.
7830               mapped_representation ) ) = 1 ) ) ) ) = 0 );
7831      wr2: ( SIZEOF( QUERY ( smi <* QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7832               + 'STYLED_ITEM'  IN TYPEOF( it ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF(
7833               si\styled_item.item ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN
7834               TYPEOF( smi\styled_item.item\mapped_item.mapping_source.mapped_representation ) ) AND ( SIZEOF( QUERY ( sty <* smi\
7835               styled_item.styles | ( NOT ( SIZEOF( QUERY ( psa <* sty.styles | ( NOT (
7836               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'  IN TYPEOF( psa ) ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) )
7837               = 0 );
7838  END_ENTITY;
7839
7840  ENTITY draughting_model_item_association
7841    SUBTYPE OF ( item_identified_representation_usage );
7842      SELF\item_identified_representation_usage.definition : draughting_model_item_definition;
7843      SELF\item_identified_representation_usage.used_representation : annotation_representation_select;
7844      SELF\item_identified_representation_usage.identified_item : draughting_model_item_association_select;
7845  END_ENTITY;
7846
7847  ENTITY draughting_pre_defined_colour
7848    SUBTYPE OF ( pre_defined_colour );
7849    WHERE
7850      wr1: ( SELF.name IN [ 'red', 'green', 'blue', 'yellow', 'magenta', 'cyan', 'black', 'white'] );
7851  END_ENTITY;
7852
7853  ENTITY draughting_pre_defined_curve_font
7854    SUBTYPE OF ( pre_defined_curve_font );
7855    WHERE
7856      wr1: ( SELF.name IN [ 'continuous', 'chain', 'chain double dash', 'dashed', 'dotted'] );
7857  END_ENTITY;
7858
7859  ENTITY draughting_pre_defined_text_font
7860    SUBTYPE OF ( pre_defined_text_font );
7861    WHERE
7862      wr1: ( SELF.name[1 : 8] = 'ISO 3098' );
7863  END_ENTITY;
7864
7865  ENTITY draughting_subfigure_representation
7866    SUBTYPE OF ( symbol_representation );
7867      SELF\representation.items  : SET [1 : ?] OF draughting_subfigure_representation_item;
7868    WHERE
7869      wr1: ( SIZEOF( QUERY ( item <* SELF\representation.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7870               + 'ANNOTATION_OCCURRENCE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT'] * TYPEOF( item ) )
7871               = 1 ) ) ) >= 1 );
7872      wr2: ( SIZEOF( QUERY ( srm <* QUERY ( rm <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
7873               'REPRESENTATION_MAP.MAPPED_REPRESENTATION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7874               + 'SYMBOL_REPRESENTATION_MAP'  IN TYPEOF( rm ) ) ) | ( NOT ( SIZEOF( QUERY ( a_s <* QUERY ( mi <* srm.map_usage |
7875               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL' IN TYPEOF( mi ) ) ) | ( NOT ( SIZEOF(
7876               QUERY ( aso <* USEDIN( a_s, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'STYLED_ITEM.ITEM' ) | ( NOT (
7877               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SUBFIGURE_OCCURRENCE'  IN TYPEOF( aso ) ) ) ) ) = 0 ) ) ) )
7878               = 0 ) ) ) ) > 0 );
7879      wr3: ( SIZEOF( SELF.context_of_items.representations_in_context ) = 1 );
7880  END_ENTITY;
7881
7882  ENTITY draughting_symbol_representation
7883    SUBTYPE OF ( symbol_representation );
7884      SELF\representation.items  : SET [1 : ?] OF draughting_symbol_representation_item;
7885    UNIQUE
7886      ur1 : name;
7887    WHERE
7888      wr1: ( SIZEOF( QUERY ( item <* SELF\representation.items | ( SIZEOF( TYPEOF( item ) * [
7889               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_CURVE_OCCURRENCE' ,
7890               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_SYMBOL_OCCURRENCE' ,
7891               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_FILL_AREA_OCCURRENCE' ,
7892               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_OCCURRENCE' ] ) = 1 ) ) ) >= 1 );
7893      wr2: ( SIZEOF( QUERY ( item <* SELF\representation.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7894               + 'ANNOTATION_SUBFIGURE_OCCURRENCE'  IN TYPEOF( item ) ) ) ) = 0 );
7895      wr3: ( SIZEOF( QUERY ( rm <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_MAP.'
7896               + 'MAPPED_REPRESENTATION'  ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMBOL_REPRESENTATION_MAP'
7897               IN TYPEOF( rm ) ) ) ) ) = 0 );
7898      wr4: ( SIZEOF( SELF.context_of_items.representations_in_context ) = 1 );
7899  END_ENTITY;
7900
7901  ENTITY draughting_text_literal_with_delineation
7902    SUBTYPE OF ( text_literal_with_delineation );
7903    WHERE
7904      wr1: ( SELF.delineation IN [ 'underline', 'overline'] );
7905  END_ENTITY;
7906
7907  ENTITY draughting_title;
7908      items     : SET [1 : ?] OF draughting_titled_item;
7909      language  : label;
7910      contents  : text;
7911  END_ENTITY;
7912
7913  ENTITY drawing_definition;
7914      drawing_number  : identifier;
7915      drawing_type    : OPTIONAL label;
7916  END_ENTITY;
7917
7918  ENTITY drawing_revision
7919    SUBTYPE OF ( presentation_set );
7920      revision_identifier  : identifier;
7921      drawing_identifier   : drawing_definition;
7922      intended_scale       : OPTIONAL text;
7923    UNIQUE
7924      ur1 : revision_identifier, drawing_identifier;
7925  END_ENTITY;
7926
7927  ENTITY drawing_revision_sequence;
7928      predecessor  : drawing_revision;
7929      successor    : drawing_revision;
7930    WHERE
7931      wr1: ( predecessor :<>: successor );
7932  END_ENTITY;
7933
7934  ENTITY drawing_sheet_layout
7935    SUBTYPE OF ( draughting_symbol_representation );
7936  END_ENTITY;
7937
7938  ENTITY drawing_sheet_revision
7939    SUBTYPE OF ( presentation_area );
7940      revision_identifier  : identifier;
7941    WHERE
7942      wr1: ( SIZEOF( QUERY ( item <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'
7943               IN TYPEOF( item ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN TYPEOF( item\
7944               mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
7945  END_ENTITY;
7946
7947  ENTITY drawing_sheet_revision_sequence
7948    SUBTYPE OF ( representation_relationship );
7949    WHERE
7950      wr1: ( SELF\representation_relationship.rep_1 :<>: SELF\representation_relationship.rep_2 );
7951      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN TYPEOF( SELF\representation_relationship
7952               .rep_1 ) );
7953      wr3: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN TYPEOF( SELF\representation_relationship
7954               .rep_2 ) );
7955  END_ENTITY;
7956
7957  ENTITY drawing_sheet_revision_usage
7958    SUBTYPE OF ( area_in_set );
7959      sheet_number  : identifier;
7960    UNIQUE
7961      ur1 : sheet_number, in_set;
7962    WHERE
7963      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_SHEET_REVISION' IN TYPEOF( SELF\area_in_set.area ) ) AND
7964               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAWING_REVISION' IN TYPEOF( SELF\area_in_set.in_set ) ) );
7965  END_ENTITY;
7966
7967  ENTITY edge
7968    SUPERTYPE OF ( ONEOF ( edge_curve, oriented_edge, subedge ) )
7969    SUBTYPE OF ( topological_representation_item );
7970      edge_start  : vertex;
7971      edge_end    : vertex;
7972  END_ENTITY;
7973
7974  ENTITY edge_based_wireframe_model
7975    SUBTYPE OF ( geometric_representation_item );
7976      ebwm_boundary  : SET [1 : ?] OF connected_edge_set;
7977  END_ENTITY;
7978
7979  ENTITY edge_based_wireframe_shape_representation
7980    SUBTYPE OF ( shape_representation );
7981    WHERE
7982      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7983               + 'EDGE_BASED_WIREFRAME_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
7984               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
7985      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7986               + 'EDGE_BASED_WIREFRAME_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF( it ) ) =
7987               1 ) ) ) >= 1 );
7988      wr3: ( SIZEOF( QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7989               + 'EDGE_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( eb <* ebwm\
7990               edge_based_wireframe_model.ebwm_boundary | ( NOT ( SIZEOF( QUERY ( edges <* eb.ces_edges | ( NOT (
7991               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( edges ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) =
7992               0 );
7993      wr4: ( SIZEOF( QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7994               + 'EDGE_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( eb <* ebwm\
7995               edge_based_wireframe_model.ebwm_boundary | ( NOT ( SIZEOF( QUERY ( pline_edges <* QUERY ( edges <* eb.ces_edges |
7996               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF( edges\edge_curve.edge_geometry ) ) ) | (
7997               NOT ( SIZEOF( pline_edges\edge_curve.edge_geometry\polyline.points ) > 2 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
7998      wr5: ( SIZEOF( QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
7999               + 'EDGE_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( eb <* ebwm\
8000               edge_based_wireframe_model.ebwm_boundary | ( NOT ( SIZEOF( QUERY ( edges <* eb.ces_edges | ( NOT ( (
8001               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( edges.edge_start ) ) AND (
8002               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( edges.edge_end ) ) ) ) ) ) = 0 ) ) ) )
8003               = 0 ) ) ) ) = 0 );
8004      wr6: ( SIZEOF( QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8005               + 'EDGE_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( eb <* ebwm\
8006               edge_based_wireframe_model.ebwm_boundary | ( NOT ( SIZEOF( QUERY ( edges <* eb.ces_edges | ( NOT
8007               valid_wireframe_edge_curve( edges\edge_curve.edge_geometry ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8008      wr7: ( SIZEOF( QUERY ( ebwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8009               + 'EDGE_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( eb <* ebwm\
8010               edge_based_wireframe_model.ebwm_boundary | ( NOT ( SIZEOF( QUERY ( edges <* eb.ces_edges | ( NOT (
8011               valid_wireframe_vertex_point( edges.edge_start\vertex_point.vertex_geometry ) AND valid_wireframe_vertex_point(
8012               edges.edge_end\vertex_point.vertex_geometry ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8013      wr8: ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
8014               TYPEOF( it ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8015               'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION'  ) IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) )
8016               = 0 );
8017      wr9: ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3 );
8018  END_ENTITY;
8019
8020  ENTITY edge_blended_solid
8021    ABSTRACT SUPERTYPE OF ( track_blended_solid ANDOR ONEOF ( solid_with_constant_radius_edge_blend, solid_with_chamfered_edges ) )
8022    SUBTYPE OF ( modified_solid );
8023      blended_edges  : LIST [1 : ?] OF UNIQUE edge_curve;
8024  END_ENTITY;
8025
8026  ENTITY edge_curve
8027    SUBTYPE OF ( edge, geometric_representation_item );
8028      edge_geometry  : curve;
8029      same_sense     : BOOLEAN;
8030  END_ENTITY;
8031
8032  ENTITY edge_loop
8033    SUBTYPE OF ( loop, path );
8034    DERIVE
8035      ne  : INTEGER := SIZEOF( SELF\path.edge_list );
8036    WHERE
8037      wr1: ( SELF\path.edge_list[1].edge_start :=: SELF\path.edge_list[ne].edge_end );
8038  END_ENTITY;
8039
8040  ENTITY edge_round
8041    SUBTYPE OF ( transition_feature );
8042    WHERE
8043      wr1: ( ( NOT ( SELF\shape_aspect.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8044               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8045               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
8046               + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
8047               TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
8048      wr2: ( ( NOT ( SELF\shape_aspect.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8049               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8050               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8051               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8052               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
8053               used_representation.items ) >= 1 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 3 ) ) ) ) = 0 ) ) ) ) =
8054               0 ) );
8055      wr3: ( ( NOT ( SELF.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8056               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8057               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8058               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8059               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8060               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8061               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8062               TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8063      wr4: ( ( NOT ( SELF.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8064               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8065               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8066               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8067               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8068               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8069               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8070               TYPEOF( it ) ) = 2 ) AND ( it.name = 'first offset' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8071      wr5: ( ( NOT ( SELF.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8072               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8073               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8074               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8075               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8076               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8077               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8078               TYPEOF( it ) ) = 2 ) AND ( it.name = 'second offset' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8079      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
8080               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8081               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8082               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
8083               'edge round face'  ) ) ) ) <= 1 ) ) ) ) = 0 );
8084      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
8085               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8086               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8087               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
8088               'first face shape'  ) ) ) ) <= 1 ) ) ) ) = 0 );
8089      wr8: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
8090               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8091               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8092               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
8093               'second face shape'  ) ) ) ) <= 1 ) ) ) ) = 0 );
8094  END_ENTITY;
8095
8096  ENTITY edge_with_excessive_segments
8097    SUBTYPE OF ( overcomplex_topology_and_geometry_relationship );
8098      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
8099    WHERE
8100      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
8101               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
8102               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
8103               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
8104      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
8105      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
8106      wr4: validate_locations_of_extreme_value_type( SELF, [] );
8107      wr5: validate_accuracy_types( SELF, [] );
8108  END_ENTITY;
8109
8110  ENTITY effectivity
8111    SUPERTYPE OF ( ONEOF ( serial_numbered_effectivity, dated_effectivity, lot_effectivity, time_interval_based_effectivity ) );
8112      id  : identifier;
8113    DERIVE
8114      name         : label := get_name_value( SELF );
8115      description  : text := get_description_value( SELF );
8116    WHERE
8117      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
8118      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
8119               <= 1 );
8120  END_ENTITY;
8121
8122  ENTITY effectivity_assignment
8123    ABSTRACT SUPERTYPE;
8124      assigned_effectivity  : effectivity;
8125    DERIVE
8126      role  : object_role := get_role( SELF );
8127    WHERE
8128      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
8129               1 );
8130  END_ENTITY;
8131
8132  ENTITY effectivity_context_assignment
8133    ABSTRACT SUPERTYPE;
8134      assigned_effectivity_assignment  : effectivity_assignment;
8135      role                             : effectivity_context_role;
8136  END_ENTITY;
8137
8138  ENTITY effectivity_context_role;
8139      name         : label;
8140      description  : OPTIONAL text;
8141  END_ENTITY;
8142
8143  ENTITY effectivity_relationship;
8144      name                  : label;
8145      description           : OPTIONAL text;
8146      related_effectivity   : effectivity;
8147      relating_effectivity  : effectivity;
8148  END_ENTITY;
8149
8150  ENTITY electric_charge_measure_with_unit
8151    SUBTYPE OF ( measure_with_unit );
8152    WHERE
8153      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CHARGE_UNIT' IN TYPEOF( SELF\measure_with_unit.
8154               unit_component ) );
8155  END_ENTITY;
8156
8157  ENTITY electric_charge_unit
8158    SUBTYPE OF ( derived_unit );
8159    WHERE
8160      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.coulomb ) );
8161  END_ENTITY;
8162
8163  ENTITY electric_current_measure_with_unit
8164    SUBTYPE OF ( measure_with_unit );
8165    WHERE
8166      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CURRENT_UNIT' IN TYPEOF( SELF\measure_with_unit.
8167               unit_component ) );
8168  END_ENTITY;
8169
8170  ENTITY electric_current_unit
8171    SUBTYPE OF ( named_unit );
8172    WHERE
8173      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
8174               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 1 ) AND (
8175               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
8176               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
8177  END_ENTITY;
8178
8179  ENTITY electric_potential_measure_with_unit
8180    SUBTYPE OF ( measure_with_unit );
8181    WHERE
8182      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_POTENTIAL_UNIT' IN TYPEOF( SELF\measure_with_unit.
8183               unit_component ) );
8184  END_ENTITY;
8185
8186  ENTITY electric_potential_unit
8187    SUBTYPE OF ( derived_unit );
8188    WHERE
8189      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.volt ) );
8190  END_ENTITY;
8191
8192  ENTITY elementary_brep_shape_representation
8193    SUBTYPE OF ( shape_representation );
8194    WHERE
8195      wr1 : ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8196                + 'MANIFOLD_SOLID_BREP' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
8197                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8198                + 'AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
8199      wr2 : ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
8200                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF( it ) ) = 1 ) ) ) > 0 );
8201      wr3 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8202                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8203                SIZEOF( QUERY ( fcs <* csh.cfs_faces | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
8204                TYPEOF( fcs ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8205      wr4 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8206                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8207                SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8208                + 'ELEMENTARY_SURFACE'  IN TYPEOF( fcs\face_surface.face_geometry ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8209      wr5 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8210                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8211                SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* fcs
8212                .bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF( bnds.bound ) ) ) | ( NOT (
8213                SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8214                + 'EDGE_CURVE'  IN TYPEOF( oe.edge_element ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8215      wr6 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8216                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8217                SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* fcs
8218                .bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF( bnds.bound ) ) ) | ( NOT (
8219                SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( SIZEOF( [
8220                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
8221                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' ] * TYPEOF( oe.edge_element\edge_curve.edge_geometry ) )
8222                = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8223      wr7 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8224                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8225                SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* fcs
8226                .bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF( bnds.bound ) ) ) | ( NOT (
8227                SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8228                + 'VERTEX_POINT'  IN TYPEOF( oe.edge_start ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8229                + 'VERTEX_POINT'  IN TYPEOF( oe.edge_end ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
8230      wr8 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8231                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8232                SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( SIZEOF( QUERY ( elp_fbnds <* QUERY ( bnds <* fcs
8233                .bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN TYPEOF( bnds.bound ) ) ) | ( NOT (
8234                SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8235                + 'POLYLINE'  IN TYPEOF( oe.edge_element\edge_curve.edge_geometry ) ) AND ( NOT ( SIZEOF( oe\oriented_edge.
8236                edge_element\edge_curve.edge_geometry\polyline.points ) >= 3 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
8237                = 0 );
8238      wr9 : ( SIZEOF( QUERY ( msb <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP'
8239                IN TYPEOF( it ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF( msb\
8240                manifold_solid_brep.outer ) ) ) ) = 0 );
8241      wr10: ( SIZEOF( QUERY ( brv <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN
8242                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.
8243                orientation ) ) = 0 ) ) ) ) = 0 );
8244      wr11: ( SIZEOF( QUERY ( mi <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
8245                TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION'
8246                IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
8247      wr12: ( SIZEOF( QUERY ( msb <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8248                + 'MANIFOLD_SOLID_BREP'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( msb ) | ( NOT (
8249                SIZEOF( QUERY ( fcs <* csh\connected_face_set.cfs_faces | ( NOT ( SIZEOF( QUERY ( vlp_fbnds <* QUERY ( bnds <* fcs
8250                .bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' IN TYPEOF( bnds.bound ) ) ) | ( NOT ( (
8251                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( vlp_fbnds\face_bound.bound\vertex_loop
8252                .loop_vertex ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( vlp_fbnds\
8253                face_bound.bound\vertex_loop.loop_vertex\vertex_point.vertex_geometry ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
8254                = 0 );
8255  END_ENTITY;
8256
8257  ENTITY elementary_function
8258    SUBTYPE OF ( maths_function, generic_literal );
8259      func_id  : elementary_function_enumerators;
8260  END_ENTITY;
8261
8262  ENTITY elementary_space
8263    SUBTYPE OF ( maths_space, generic_literal );
8264      space_id  : elementary_space_enumerators;
8265  END_ENTITY;
8266
8267  ENTITY elementary_surface
8268    SUPERTYPE OF ( ONEOF ( plane, cylindrical_surface, conical_surface, spherical_surface, toroidal_surface ) )
8269    SUBTYPE OF ( surface );
8270      position  : axis2_placement_3d;
8271  END_ENTITY;
8272
8273  ENTITY ellipse
8274    SUBTYPE OF ( conic );
8275      semi_axis_1  : positive_length_measure;
8276      semi_axis_2  : positive_length_measure;
8277  END_ENTITY;
8278
8279  ENTITY elliptic_area
8280    SUBTYPE OF ( primitive_2d );
8281      position     : axis2_placement_2d;
8282      semi_axis_1  : positive_length_measure;
8283      semi_axis_2  : positive_length_measure;
8284  END_ENTITY;
8285
8286  ENTITY energy_measure_with_unit
8287    SUBTYPE OF ( measure_with_unit );
8288    WHERE
8289      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENERGY_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
8290  END_ENTITY;
8291
8292  ENTITY energy_unit
8293    SUBTYPE OF ( derived_unit );
8294    WHERE
8295      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.joule ) );
8296  END_ENTITY;
8297
8298  ENTITY entirely_narrow_face
8299    SUBTYPE OF ( topology_related_to_nearly_degenerate_geometry );
8300      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8301      width_tolerance                        : length_measure;
8302    WHERE
8303      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
8304      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
8305      wr3: validate_locations_of_extreme_value_type( SELF, [] );
8306      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
8307  END_ENTITY;
8308
8309  ENTITY entirely_narrow_solid
8310    SUBTYPE OF ( inapt_manifold_solid_brep );
8311      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8312      width_tolerance                        : length_measure;
8313    WHERE
8314      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
8315      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP'] );
8316      wr3: validate_locations_of_extreme_value_type( SELF, [] );
8317      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
8318  END_ENTITY;
8319
8320  ENTITY entirely_narrow_surface
8321    SUBTYPE OF ( nearly_degenerate_geometry );
8322      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8323      width_tolerance                        : length_measure;
8324    WHERE
8325      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
8326      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE'] );
8327      wr3: validate_locations_of_extreme_value_type( SELF, [] );
8328      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
8329  END_ENTITY;
8330
8331  ENTITY entity_assertion
8332    SUBTYPE OF ( fact_type );
8333  END_ENTITY;
8334
8335  ENTITY enum_reference_prefix
8336    SUBTYPE OF ( descriptive_representation_item );
8337  END_ENTITY;
8338
8339  ENTITY environment;
8340      syntactic_representation  : generic_variable;
8341      semantics                 : variable_semantics;
8342  END_ENTITY;
8343
8344  ENTITY equal_parameter_constraint
8345    SUBTYPE OF ( defined_constraint );
8346      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF variational_parameter;
8347      SELF\explicit_constraint.reference_elements : SET [0 : 1] OF variational_parameter;
8348    WHERE
8349      wr1: ( SIZEOF( SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements ) >= 2 );
8350  END_ENTITY;
8351
8352  ENTITY equals_expression
8353    SUBTYPE OF ( binary_boolean_expression );
8354  END_ENTITY;
8355
8356  ENTITY erroneous_b_spline_curve_definition
8357    SUBTYPE OF ( erroneous_geometry );
8358      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8359    WHERE
8360      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
8361      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS'] );
8362      wr3: validate_locations_of_extreme_value_type( SELF, [] );
8363      wr4: validate_accuracy_types( SELF, [] );
8364  END_ENTITY;
8365
8366  ENTITY erroneous_b_spline_surface_definition
8367    SUBTYPE OF ( erroneous_geometry );
8368      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
8369    WHERE
8370      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
8371      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS'] );
8372      wr3: validate_locations_of_extreme_value_type( SELF, [] );
8373      wr4: validate_accuracy_types( SELF, [] );
8374  END_ENTITY;
8375
8376  ENTITY erroneous_data
8377    ABSTRACT SUPERTYPE OF ( ONEOF ( erroneous_topology, erroneous_geometry, erroneous_topology_and_geometry_relationship,
8378        erroneous_manifold_solid_brep ) )
8379    SUBTYPE OF ( shape_data_quality_criterion );
8380  END_ENTITY;
8381
8382  ENTITY erroneous_geometry
8383    ABSTRACT SUPERTYPE OF ( ONEOF ( inconsistent_curve_transition_code, erroneous_b_spline_curve_definition,
8384        inconsistent_surface_transition_code, erroneous_b_spline_surface_definition ) )
8385    SUBTYPE OF ( erroneous_data );
8386  END_ENTITY;
8387
8388  ENTITY erroneous_manifold_solid_brep
8389    ABSTRACT SUPERTYPE OF ( ONEOF ( wrongly_oriented_void, wrongly_placed_void, intersecting_shells_in_solid,
8390        solid_with_wrong_number_of_voids ) )
8391    SUBTYPE OF ( erroneous_data );
8392  END_ENTITY;
8393
8394  ENTITY erroneous_topology
8395    ABSTRACT SUPERTYPE OF ( ONEOF ( open_edge_loop, open_closed_shell, inconsistent_adjacent_face_normals, disconnected_face_set ) )
8396    SUBTYPE OF ( erroneous_data );
8397  END_ENTITY;
8398
8399  ENTITY erroneous_topology_and_geometry_relationship
8400    ABSTRACT SUPERTYPE OF ( ONEOF ( inconsistent_edge_and_curve_directions, inconsistent_face_and_surface_normals,
8401        inconsistent_face_and_closed_shell_normals, intersecting_loops_in_face, wrongly_placed_loop ) )
8402    SUBTYPE OF ( erroneous_data );
8403  END_ENTITY;
8404
8405  ENTITY evaluated_characteristic
8406    SUBTYPE OF ( representation, representation_relationship );
8407    UNIQUE
8408      ur1 : rep_1, rep_2;
8409    WHERE
8410      wr1: ( SELF\representation_relationship.rep_1 <> SELF\representation_relationship.rep_2 );
8411  END_ENTITY;
8412
8413  ENTITY evaluated_characteristic_of_product_as_individual_test_result
8414    SUBTYPE OF ( evaluated_characteristic );
8415  END_ENTITY;
8416
8417  ENTITY evaluated_degenerate_pcurve
8418    SUBTYPE OF ( degenerate_pcurve );
8419      equivalent_point  : cartesian_point;
8420  END_ENTITY;
8421
8422  ENTITY evaluation_product_definition
8423    SUBTYPE OF ( product_definition );
8424  END_ENTITY;
8425
8426  ENTITY event_occurrence;
8427      id           : identifier;
8428      name         : label;
8429      description  : OPTIONAL text;
8430  END_ENTITY;
8431
8432  ENTITY event_occurrence_assignment
8433    ABSTRACT SUPERTYPE;
8434      assigned_event_occurrence  : event_occurrence;
8435      role                       : event_occurrence_role;
8436  END_ENTITY;
8437
8438  ENTITY event_occurrence_relationship;
8439      name            : label;
8440      description     : OPTIONAL text;
8441      relating_event  : event_occurrence;
8442      related_event   : event_occurrence;
8443  END_ENTITY;
8444
8445  ENTITY event_occurrence_role;
8446      name         : label;
8447      description  : OPTIONAL text;
8448  END_ENTITY;
8449
8450  ENTITY excessive_use_of_groups
8451    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
8452    WHERE
8453      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GROUP'] );
8454  END_ENTITY;
8455
8456  ENTITY excessive_use_of_layers
8457    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
8458    WHERE
8459      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8460               + 'PRESENTATION_LAYER_ASSIGNMENT' ] );
8461  END_ENTITY;
8462
8463  ENTITY excessively_high_degree_curve
8464    SUBTYPE OF ( overcomplex_geometry );
8465      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
8466    WHERE
8467      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
8468               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
8469               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
8470               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
8471      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
8472      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] );
8473      wr4: validate_locations_of_extreme_value_type( SELF, [] );
8474      wr5: validate_accuracy_types( SELF, [] );
8475  END_ENTITY;
8476
8477  ENTITY excessively_high_degree_surface
8478    SUBTYPE OF ( overcomplex_geometry );
8479      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
8480    WHERE
8481      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
8482               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
8483               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
8484               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
8485      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
8486      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
8487      wr4: validate_locations_of_extreme_value_type( SELF, [] );
8488      wr5: validate_accuracy_types( SELF, [] );
8489  END_ENTITY;
8490
8491  ENTITY exclusive_product_concept_feature_category
8492    SUBTYPE OF ( product_concept_feature_category );
8493  END_ENTITY;
8494
8495  ENTITY executed_action
8496    SUBTYPE OF ( action );
8497  END_ENTITY;
8498
8499  ENTITY exp_function
8500    SUBTYPE OF ( unary_function_call );
8501  END_ENTITY;
8502
8503  ENTITY expanded_uncertainty
8504    SUBTYPE OF ( standard_uncertainty );
8505      coverage_factor  : REAL;
8506  END_ENTITY;
8507
8508  ENTITY explicit_constraint
8509    ABSTRACT SUPERTYPE OF ( ONEOF ( defined_constraint, free_form_constraint ) )
8510    SUBTYPE OF ( variational_representation_item );
8511      description           : OPTIONAL text;
8512      constrained_elements  : SET [1 : ?] OF representation_item;
8513      reference_elements    : SET [0 : ?] OF representation_item;
8514    WHERE
8515      wr1: ( SIZEOF( constrained_elements * reference_elements ) = 0 );
8516  END_ENTITY;
8517
8518  ENTITY explicit_geometric_constraint
8519    ABSTRACT SUPERTYPE OF ( ONEOF ( fixed_element_geometric_constraint, parallel_geometric_constraint,
8520        point_distance_geometric_constraint, skew_line_distance_geometric_constraint, curve_distance_geometric_constraint,
8521        surface_distance_geometric_constraint, radius_geometric_constraint, curve_length_geometric_constraint,
8522        parallel_offset_geometric_constraint, angle_geometric_constraint, perpendicular_geometric_constraint,
8523        incidence_geometric_constraint, coaxial_geometric_constraint, tangent_geometric_constraint, symmetry_geometric_constraint,
8524        swept_point_curve_geometric_constraint, swept_curve_surface_geometric_constraint, curve_smoothness_geometric_constraint,
8525        surface_smoothness_geometric_constraint ) )
8526    SUBTYPE OF ( defined_constraint, geometric_representation_item );
8527      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_representation_item;
8528      SELF\explicit_constraint.reference_elements : SET [0 : ?] OF geometric_representation_item;
8529  END_ENTITY;
8530
8531  ENTITY explicit_procedural_geometric_representation_item_relationship
8532    SUBTYPE OF ( explicit_procedural_representation_item_relationship );
8533      SELF\representation_item_relationship.relating_representation_item : procedural_shape_representation_sequence;
8534      SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
8535    WHERE
8536      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION_SEQUENCE' IN TYPEOF( SELF\
8537               representation_item_relationship.related_representation_item ) ) );
8538  END_ENTITY;
8539
8540  ENTITY explicit_procedural_representation_item_relationship
8541    SUBTYPE OF ( representation_item_relationship );
8542      SELF\representation_item_relationship.relating_representation_item : procedural_representation_sequence;
8543    WHERE
8544      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_REPRESENTATION_SEQUENCE' IN TYPEOF( SELF\
8545               representation_item_relationship.related_representation_item ) ) );
8546      wr2: ( SIZEOF( QUERY ( q <* using_representations( SELF\representation_item_relationship.related_representation_item ) |
8547               item_in_context( SELF\representation_item_relationship.relating_representation_item, q.context_of_items ) ) ) > 0 );
8548  END_ENTITY;
8549
8550  ENTITY explicit_procedural_representation_relationship
8551    SUBTYPE OF ( representation_relationship );
8552      SELF\representation_relationship.rep_1 : procedural_representation;
8553    WHERE
8554      wr1: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_REPRESENTATION' IN TYPEOF( SELF\
8555               representation_relationship.rep_2 ) ) ) AND ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8556               + 'VARIATIONAL_REPRESENTATION'  IN TYPEOF( SELF\representation_relationship.rep_2 ) ) ) );
8557      wr2: ( SELF\representation_relationship.rep_1.context_of_items :=: SELF\representation_relationship.rep_2.context_of_items );
8558  END_ENTITY;
8559
8560  ENTITY explicit_procedural_shape_representation_relationship
8561    SUBTYPE OF ( explicit_procedural_representation_relationship );
8562      SELF\representation_relationship.rep_1 : procedural_shape_representation;
8563      SELF\representation_relationship.rep_2 : shape_representation;
8564  END_ENTITY;
8565
8566  ENTITY explicit_table_function
8567    ABSTRACT SUPERTYPE OF ( ONEOF ( listed_data, externally_listed_data, linearized_table_function, basic_sparse_matrix ) )
8568    SUBTYPE OF ( maths_function );
8569      index_base  : zero_or_one;
8570      shape       : LIST [1 : ?] OF positive_integer;
8571  END_ENTITY;
8572
8573  ENTITY expression
8574    ABSTRACT SUPERTYPE OF ( ONEOF ( numeric_expression, boolean_expression, string_expression ) )
8575    SUBTYPE OF ( generic_expression );
8576  END_ENTITY;
8577
8578  ENTITY expression_conversion_based_unit
8579    SUBTYPE OF ( context_dependent_unit, variable_semantics );
8580    INVERSE
8581      associated_variable_environment : environment FOR semantics;
8582  END_ENTITY;
8583
8584  ENTITY expression_denoted_function
8585    SUBTYPE OF ( maths_function, unary_generic_expression );
8586    DERIVE
8587      expr  : generic_expression := SELF\unary_generic_expression.operand;
8588    WHERE
8589      wr1: ( ( schema_prefix + 'FUNCTION_SPACE' ) IN TYPEOF( values_space_of( expr ) ) );
8590  END_ENTITY;
8591
8592  ENTITY expression_extension_numeric
8593    SUBTYPE OF ( measure_with_unit, numeric_expression );
8594  END_ENTITY;
8595
8596  ENTITY expression_extension_string
8597    SUBTYPE OF ( measure_with_unit, string_expression );
8598  END_ENTITY;
8599
8600  ENTITY expression_extension_to_select;
8601      type_expression_associated  : expression_extension_select;
8602  END_ENTITY;
8603
8604  ENTITY extended_tuple_space
8605    SUBTYPE OF ( maths_space, generic_literal );
8606      base      : product_space;
8607      extender  : maths_space;
8608    WHERE
8609      wr1: ( expression_is_constant( base ) AND expression_is_constant( extender ) );
8610      wr2: no_cyclic_space_reference( SELF, [] );
8611      wr3: ( extender <> the_empty_space );
8612  END_ENTITY;
8613
8614  ENTITY extension
8615    SUBTYPE OF ( derived_shape_aspect );
8616    WHERE
8617      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) = 1 );
8618  END_ENTITY;
8619
8620  ENTITY extent
8621    SUBTYPE OF ( characterized_object );
8622  END_ENTITY;
8623
8624  ENTITY external_class_library
8625    SUBTYPE OF ( external_source );
8626  END_ENTITY;
8627
8628  ENTITY external_identification_assignment
8629    ABSTRACT SUPERTYPE
8630    SUBTYPE OF ( identification_assignment );
8631      source  : external_source;
8632  END_ENTITY;
8633
8634  ENTITY external_source;
8635      source_id  : source_item;
8636    DERIVE
8637      description  : text := get_description_value( SELF );
8638    WHERE
8639      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
8640               <= 1 );
8641  END_ENTITY;
8642
8643  ENTITY external_source_relationship;
8644      name             : label;
8645      description      : OPTIONAL text;
8646      relating_source  : external_source;
8647      related_source   : external_source;
8648  END_ENTITY;
8649
8650  ENTITY externally_conditioned_data_quality_criteria_representation
8651    SUBTYPE OF ( data_quality_criteria_representation );
8652    WHERE
8653      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8654               'EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION'  ) IN TYPEOF( q ) ) ) ) > 0 );
8655  END_ENTITY;
8656
8657  ENTITY externally_conditioned_data_quality_criterion
8658    SUBTYPE OF ( data_quality_criterion, data_quality_measurement_requirement );
8659    WHERE
8660      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8661               'DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.'  + 'CRITERION' ) ) = 0 );
8662      wr2: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8663               'REPRESENTATION_ITEM_RELATIONSHIP.'  + 'RELATED_REPRESENTATION_ITEM' ) ) | ( (
8664               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' ) IN
8665               TYPEOF( i1 ) ) ) ) = 0 );
8666      wr3: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8667               'REPRESENTATION_ITEM_RELATIONSHIP.'  + 'RELATING_REPRESENTATION_ITEM' ) ) | ( (
8668               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' ) IN
8669               TYPEOF( i1 ) ) ) ) = 0 );
8670  END_ENTITY;
8671
8672  ENTITY externally_conditioned_data_quality_inspection_instance_report_item
8673    SUBTYPE OF ( data_quality_inspection_instance_report_item );
8674      SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1 : ?] OF inspected_ecdq_element_select;
8675    WHERE
8676      wr1: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8677               'DATA_QUALITY_INSPECTION_INSTANCE_REPORT.'  + 'INSPECTED_INSTANCES' ) ) | ( NOT ( (
8678               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' ) IN
8679               TYPEOF( i1.inspection_result ) ) ) ) ) = 0 );
8680  END_ENTITY;
8681
8682  ENTITY externally_conditioned_data_quality_inspection_result
8683    SUBTYPE OF ( data_quality_inspection_result );
8684    WHERE
8685      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'EXTERNALLY_CONDITIONED_DATA_QUALITY_CRITERION' ) IN TYPEOF(
8686               SELF\data_quality_inspection_result.criterion_inspected ) );
8687  END_ENTITY;
8688
8689  ENTITY externally_conditioned_data_quality_inspection_result_representation
8690    SUBTYPE OF ( data_quality_inspection_result_representation );
8691    WHERE
8692      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
8693               'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT'  ) IN TYPEOF( q ) ) ) ) > 0 );
8694  END_ENTITY;
8695
8696  ENTITY externally_defined_character_glyph
8697    SUBTYPE OF ( externally_defined_item );
8698  END_ENTITY;
8699
8700  ENTITY externally_defined_class
8701    SUBTYPE OF ( class, externally_defined_item );
8702  END_ENTITY;
8703
8704  ENTITY externally_defined_colour
8705    SUBTYPE OF ( colour_specification, externally_defined_item );
8706  END_ENTITY;
8707
8708  ENTITY externally_defined_context_dependent_unit
8709    SUBTYPE OF ( context_dependent_unit, externally_defined_item );
8710  END_ENTITY;
8711
8712  ENTITY externally_defined_conversion_based_unit
8713    SUBTYPE OF ( conversion_based_unit, externally_defined_item );
8714  END_ENTITY;
8715
8716  ENTITY externally_defined_currency
8717    SUBTYPE OF ( currency, externally_defined_context_dependent_unit );
8718  END_ENTITY;
8719
8720  ENTITY externally_defined_curve_font
8721    SUBTYPE OF ( externally_defined_item );
8722  END_ENTITY;
8723
8724  ENTITY externally_defined_dimension_definition
8725    SUBTYPE OF ( dimensional_size, externally_defined_item );
8726    WHERE
8727      wr1: ( ( SELF\externally_defined_item.item_id = 'external size dimension' ) AND ( SELF\externally_defined_item.source.
8728               source_id = 'external size dimension specification' ) );
8729      wr2: ( 1 >= SIZEOF( QUERY ( adr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8730               + 'APPLIED_DOCUMENT_REFERENCE.ITEMS'  ) | ( adr.assigned_document.description =
8731               'external size dimension specification'  ) ) ) );
8732  END_ENTITY;
8733
8734  ENTITY externally_defined_feature_definition
8735    SUBTYPE OF ( feature_definition, externally_defined_item );
8736    WHERE
8737      wr1 : ( ( ( SELF\characterized_object.description = 'thread' ) AND ( SELF\externally_defined_item.item_id = 'external thread'  )
8738                AND ( SELF\externally_defined_item.source.source_id = 'external feature specification' ) ) OR ( ( SELF\
8739                characterized_object.description = 'gear' ) AND ( SELF\externally_defined_item.item_id = 'external gear' ) AND (
8740                SELF\externally_defined_item.source.source_id = 'external feature specification' ) ) OR ( ( SELF\
8741                characterized_object.description = 'marking' ) AND ( SELF\externally_defined_item.item_id = 'external marking' )
8742                AND ( SELF\externally_defined_item.source.source_id = 'external feature specification' ) ) OR ( ( SELF\
8743                characterized_object.description = 'knurl' ) AND ( SELF\externally_defined_item.item_id = 'external knurl' ) AND
8744                ( SELF\externally_defined_item.source.source_id = 'external feature specification' ) ) );
8745      wr2 : ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8746                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( SIZEOF( QUERY ( pdr <*
8747                USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
8748                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
8749                used_representation ) ) AND ( 5 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.used_representation
8750                .items ) <= 10 ) ) ) ) = 1 ) ) ) = 1 ) );
8751      wr3 : ( ( NOT ( SELF\characterized_object.description = 'marking' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8752                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( SIZEOF( QUERY ( pdr <*
8753                USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
8754                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
8755                used_representation ) ) AND ( SIZEOF( pdr.used_representation.items ) = 2 ) ) ) ) = 1 ) ) ) = 1 ) );
8756      wr4 : ( ( NOT ( SELF\characterized_object.description = 'knurl' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8757                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( SIZEOF( QUERY ( pdr <*
8758                USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
8759                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
8760                used_representation ) ) AND ( SIZEOF( pdr.used_representation.items ) = 1 ) ) ) ) = 1 ) ) ) = 1 ) );
8761      wr5 : ( ( NOT ( SELF\characterized_object.description IN [ 'knurl', 'thread'] ) ) OR ( SIZEOF( QUERY ( pds <*
8762                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
8763                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) ) | ( NOT (
8764                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
8765                | ( ( sa_occ.description = 'partial area occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
8766                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) | ( (
8767                sar.description = 'applied area usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8768                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8769                + 'APPLIED_AREA'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 0 ) );
8770      wr6 : ( ( NOT ( SELF\characterized_object.description = 'marking' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8771                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8772                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8773                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8774                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8775                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8776                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'marking text' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
8777                = 0 ) );
8778      wr7 : ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8779                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8780                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8781                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8782                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8783                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8784                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'removal direction' ) AND ( ( it.
8785                description = 'internal' ) OR ( it.description = 'external' ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8786      wr8 : ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8787                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8788                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8789                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8790                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8791                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8792                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'qualifier' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) )
8793                = 0 ) );
8794      wr9 : ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8795                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8796                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8797                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8798                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8799                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8800                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'hand' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8801      wr10: ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8802                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8803                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8804                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8805                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8806                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8807                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'fit class' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
8808                = 0 ) );
8809      wr11: ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8810                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8811                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8812                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8813                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8814                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8815                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'form' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8816      wr12: ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8817                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8818                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8819                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8820                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8821                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8822                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8823                TYPEOF( it ) ) = 2 ) AND ( it.name = 'major diameter' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8824      wr13: ( ( NOT ( SELF\characterized_object.description = 'thread' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8825                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8826                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8827                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8828                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8829                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8830                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
8831                TYPEOF( it ) ) = 2 ) AND ( it.name = 'number of threads' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8832      wr14: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
8833                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8834                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8835                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8836                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8837                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'fit class 2' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) )
8838                = 0 );
8839      wr15: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
8840                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8841                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8842                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8843                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8844                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8845                TYPEOF( it ) ) = 2 ) AND ( it.name = 'nominal size' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
8846      wr16: ( ( NOT ( SELF\characterized_object.description IN [ 'knurl', 'gear', 'thread'] ) ) OR ( SIZEOF( QUERY ( pds <*
8847                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
8848                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) ) | ( NOT (
8849                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
8850                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8851                + 'SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) | ( ( sar.description = 'applied shape' ) AND (
8852                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
8853                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) )
8854                <= 1 ) ) ) ) = 0 ) );
8855      wr17: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8856                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( SIZEOF( QUERY ( pdr <*
8857                USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
8858                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
8859                used_representation ) ) AND ( 10 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.
8860                used_representation.items ) >= 11 ) ) ) ) = 1 ) ) ) = 1 ) );
8861      wr18: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8862                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8863                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8864                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8865                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8866                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8867                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
8868                TYPEOF( it ) ) = 2 ) AND ( it.name = 'number of teeth' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8869      wr19: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8870                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8871                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8872                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8873                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8874                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8875                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
8876                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'reference pressure angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8877      wr20: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8878                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8879                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8880                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8881                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8882                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8883                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8884                TYPEOF( it ) ) = 2 ) AND ( it.name = 'rake shift factor' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8885      wr21: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8886                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8887                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8888                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8889                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8890                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8891                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8892                TYPEOF( it ) ) = 2 ) AND ( it.name = 'nominal tooth depth' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8893      wr22: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8894                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8895                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8896                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8897                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8898                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8899                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8900                TYPEOF( it ) ) = 2 ) AND ( it.name = 'face width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8901      wr23: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8902                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8903                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8904                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8905                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8906                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8907                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8908                TYPEOF( it ) ) = 2 ) AND ( it.name = 'tip diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8909      wr24: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8910                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8911                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8912                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8913                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8914                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8915                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'module or diametral pitch' ) AND ( ( it.
8916                description = 'module' ) OR ( it.description = 'diametral pitch' ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8917      wr25: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8918                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8919                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8920                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8921                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8922                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8923                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
8924                TYPEOF( it ) ) = 2 ) AND ( it.name = 'normal attribute' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8925      wr26: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8926                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8927                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8928                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8929                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8930                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8931                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'internal or external gear' ) AND ( ( it.
8932                description = 'internal' ) OR ( it.description = 'external' ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8933      wr27: ( ( NOT ( SELF\characterized_object.description IN [ 'gear'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
8934                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
8935                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8936                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8937                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
8938                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
8939                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
8940                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'root fillet radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
8941  END_ENTITY;
8942
8943  ENTITY externally_defined_general_property
8944    SUBTYPE OF ( general_property, externally_defined_item );
8945  END_ENTITY;
8946
8947  ENTITY externally_defined_hatch_style
8948    SUBTYPE OF ( externally_defined_item, geometric_representation_item );
8949  END_ENTITY;
8950
8951  ENTITY externally_defined_item;
8952      item_id  : source_item;
8953      source   : external_source;
8954  END_ENTITY;
8955
8956  ENTITY externally_defined_item_relationship;
8957      name           : label;
8958      description    : OPTIONAL text;
8959      relating_item  : externally_defined_item;
8960      related_item   : externally_defined_item;
8961  END_ENTITY;
8962
8963  ENTITY externally_defined_item_with_multiple_references
8964    SUBTYPE OF ( externally_defined_item );
8965      references  : LIST [1 : ?] OF UNIQUE source_item;
8966    UNIQUE
8967      ur1 : references;
8968    WHERE
8969      wr1: ( NOT ( SELF\externally_defined_item.item_id IN references ) );
8970  END_ENTITY;
8971
8972  ENTITY externally_defined_marker
8973    SUBTYPE OF ( externally_defined_symbol, pre_defined_marker );
8974  END_ENTITY;
8975
8976  ENTITY externally_defined_picture_representation_item
8977    SUBTYPE OF ( picture_representation_item );
8978    INVERSE
8979      source : applied_external_identification_assignment FOR items;
8980    WHERE
8981      wr1: ( NOT ( SELF\representation_item.name IN pre_defined_picture_representation_types ) );
8982  END_ENTITY;
8983
8984  ENTITY externally_defined_representation
8985    SUBTYPE OF ( representation, externally_defined_item );
8986      SELF\representation.items  : SET [1 : ?] OF externally_defined_representation_item;
8987  END_ENTITY;
8988
8989  ENTITY externally_defined_representation_item
8990    SUBTYPE OF ( representation_item, externally_defined_item );
8991  END_ENTITY;
8992
8993  ENTITY externally_defined_string
8994    SUBTYPE OF ( externally_defined_representation_item );
8995  END_ENTITY;
8996
8997  ENTITY externally_defined_style
8998    SUBTYPE OF ( externally_defined_item, founded_item );
8999  END_ENTITY;
9000
9001  ENTITY externally_defined_symbol
9002    SUBTYPE OF ( externally_defined_item );
9003  END_ENTITY;
9004
9005  ENTITY externally_defined_terminator_symbol
9006    SUBTYPE OF ( externally_defined_symbol );
9007  END_ENTITY;
9008
9009  ENTITY externally_defined_text_font
9010    SUBTYPE OF ( externally_defined_item );
9011  END_ENTITY;
9012
9013  ENTITY externally_defined_tile
9014    SUBTYPE OF ( externally_defined_item );
9015  END_ENTITY;
9016
9017  ENTITY externally_defined_tile_style
9018    SUBTYPE OF ( externally_defined_item, geometric_representation_item );
9019  END_ENTITY;
9020
9021  ENTITY externally_listed_data
9022    SUBTYPE OF ( explicit_table_function, generic_literal, externally_defined_item );
9023      value_range  : maths_space;
9024    WHERE
9025      wr1: expression_is_constant( value_range );
9026  END_ENTITY;
9027
9028  ENTITY extreme_instance;
9029      locations_of_extreme_value  : SET [1 : ?] OF location_of_extreme_value_select;
9030      measured_value              : measured_value_select;
9031  END_ENTITY;
9032
9033  ENTITY extreme_patch_width_variation
9034    SUBTYPE OF ( geometry_with_local_irregularity );
9035      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9036    WHERE
9037      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9038               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9039               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN value_limit_type( SELF\
9040               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9041      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' );
9042      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
9043      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9044               'B_SPLINE_SURFACE_KNOT_LOCATOR' ] );
9045      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9046  END_ENTITY;
9047
9048  ENTITY extruded_area_solid
9049    SUBTYPE OF ( swept_area_solid );
9050      extruded_direction  : direction;
9051      depth               : positive_length_measure;
9052    WHERE
9053      wr1: ( dot_product( SELF\swept_area_solid.swept_area.basis_surface\elementary_surface.position.p[3], extruded_direction )
9054               <> 0 );
9055  END_ENTITY;
9056
9057  ENTITY extruded_face_solid
9058    SUBTYPE OF ( swept_face_solid );
9059      extruded_direction  : direction;
9060      depth               : positive_length_measure;
9061    WHERE
9062      wr1: ( dot_product( SELF\swept_face_solid.swept_face.face_geometry\elementary_surface.position.p[3], extruded_direction )
9063               <> 0 );
9064  END_ENTITY;
9065
9066  ENTITY extruded_face_solid_with_draft_angle
9067    SUBTYPE OF ( extruded_face_solid_with_trim_conditions );
9068      draft_angle  : plane_angle_measure;
9069    WHERE
9070      wr1: ( draft_angle <> 0 );
9071  END_ENTITY;
9072
9073  ENTITY extruded_face_solid_with_multiple_draft_angles
9074    SUBTYPE OF ( extruded_face_solid_with_trim_conditions );
9075      drafted_edges  : LIST [2 : ?] OF SET [1 : ?] OF edge_curve;
9076      draft_angles   : LIST [2 : ?] OF plane_angle_measure;
9077    WHERE
9078      wr1: ( SIZEOF( drafted_edges ) = SIZEOF( draft_angles ) );
9079      wr2: ( SIZEOF( QUERY ( q <* draft_angles | ( q = 0 ) ) ) = 0 );
9080      wr3: ( SIZEOF( QUERY ( q <* drafted_edges | ( SIZEOF( QUERY ( r <* q | ( NOT ( SELF\swept_face_solid.swept_face IN
9081               using_items( r, [] ) ) ) ) ) > 0 ) ) ) = 0 );
9082  END_ENTITY;
9083
9084  ENTITY extruded_face_solid_with_trim_conditions
9085    SUPERTYPE OF ( ONEOF ( extruded_face_solid_with_draft_angle, extruded_face_solid_with_multiple_draft_angles ) )
9086    SUBTYPE OF ( extruded_face_solid );
9087      first_trim_condition   : trim_condition_select;
9088      second_trim_condition  : trim_condition_select;
9089      first_trim_intent      : trim_intent;
9090      second_trim_intent     : trim_intent;
9091      first_offset           : non_negative_length_measure;
9092      second_offset          : non_negative_length_measure;
9093    WHERE
9094      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF( first_trim_condition ) ) OR
9095               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF( second_trim_condition ) ) ) );
9096      wr2: ( NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF( first_trim_condition ) ) AND
9097               ( ( first_trim_intent = trim_intent.offset ) OR ( first_trim_intent = trim_intent.up_to_next ) ) ) OR ( (
9098               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'  IN TYPEOF( second_trim_condition ) ) AND ( (
9099               second_trim_intent = trim_intent.offset ) OR ( second_trim_intent = trim_intent.up_to_next ) ) ) ) );
9100      wr3: ( NOT ( ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF( first_trim_condition ) ) )
9101               AND ( ( first_trim_intent = trim_intent.blind ) OR ( first_trim_intent = trim_intent.through_all ) ) ) OR ( ( NOT
9102               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF( second_trim_condition ) ) ) AND ( (
9103               second_trim_intent = trim_intent.blind ) OR ( second_trim_intent = trim_intent.through_all ) ) ) ) );
9104      wr4: ( ( ( ( first_trim_intent = trim_intent.offset ) AND ( first_offset > 0 ) ) XOR ( ( first_trim_intent <> trim_intent.
9105               offset ) AND ( first_offset = 0 ) ) ) AND ( ( ( second_trim_intent = trim_intent.offset ) AND ( second_offset > 0 ) )
9106               XOR ( ( second_trim_intent <> trim_intent.offset ) AND ( second_offset = 0 ) ) ) );
9107      wr5: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF( first_trim_condition ) ) AND (
9108               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'  IN TYPEOF( second_trim_condition ) ) AND (
9109               first_trim_condition = second_trim_condition ) ) );
9110  END_ENTITY;
9111
9112  ENTITY face
9113    SUPERTYPE OF ( ONEOF ( face_surface, subface, oriented_face ) )
9114    SUBTYPE OF ( topological_representation_item );
9115      bounds  : SET [1 : ?] OF face_bound;
9116    WHERE
9117      wr1: ( NOT mixed_loop_type_set( list_to_set( list_face_loops( SELF ) ) ) );
9118      wr2: ( SIZEOF( QUERY ( temp <* bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF(
9119               temp ) ) ) ) <= 1 );
9120  END_ENTITY;
9121
9122  ENTITY face_based_surface_model
9123    SUBTYPE OF ( geometric_representation_item );
9124      fbsm_faces  : SET [1 : ?] OF connected_face_set;
9125  END_ENTITY;
9126
9127  ENTITY face_bound
9128    SUBTYPE OF ( topological_representation_item );
9129      bound        : loop;
9130      orientation  : BOOLEAN;
9131  END_ENTITY;
9132
9133  ENTITY face_outer_bound
9134    SUBTYPE OF ( face_bound );
9135  END_ENTITY;
9136
9137  ENTITY face_shape_representation
9138    SUBTYPE OF ( shape_representation );
9139    WHERE
9140      wr1: ( SIZEOF( SELF.items ) >= 1 );
9141      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN
9142               TYPEOF( it ) ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF( it ) ) ) ) ) ) = 0 );
9143  END_ENTITY;
9144
9145  ENTITY face_shape_representation_relationship
9146    SUBTYPE OF ( representation_relationship );
9147    WHERE
9148      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( SELF.rep_1 ) );
9149      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( SELF.rep_2 ) );
9150  END_ENTITY;
9151
9152  ENTITY face_surface
9153    SUBTYPE OF ( face, geometric_representation_item );
9154      face_geometry  : surface;
9155      same_sense     : BOOLEAN;
9156    WHERE
9157      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_SURFACE' IN TYPEOF( face_geometry ) ) );
9158  END_ENTITY;
9159
9160  ENTITY face_surface_with_excessive_patches_in_one_direction
9161    SUBTYPE OF ( overcomplex_topology_and_geometry_relationship );
9162      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9163    WHERE
9164      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9165               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9166               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
9167               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9168      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
9169      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
9170      wr4: validate_locations_of_extreme_value_type( SELF, [] );
9171      wr5: validate_accuracy_types( SELF, [] );
9172  END_ENTITY;
9173
9174  ENTITY faceted_brep
9175    SUBTYPE OF ( manifold_solid_brep );
9176  END_ENTITY;
9177
9178  ENTITY faceted_brep_shape_representation
9179    SUBTYPE OF ( shape_representation );
9180    WHERE
9181      wr1: ( SIZEOF( QUERY ( it <* items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
9182               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9183               + 'AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
9184      wr2: ( SIZEOF( QUERY ( it <* items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP',
9185               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF( it ) ) = 1 ) ) ) > 0 );
9186      wr3: ( SIZEOF( QUERY ( fbrep <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP' IN
9187               TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( fbrep ) | ( NOT ( SIZEOF( QUERY ( fcs <* csh\
9188               connected_face_set.cfs_faces | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF(
9189               fcs ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( fcs\face_surface.face_geometry ) )
9190               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( fcs\face_surface.face_geometry\
9191               elementary_surface.position.location ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
9192      wr4: ( SIZEOF( QUERY ( fbrep <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP' IN
9193               TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* msb_shells( fbrep ) | ( NOT ( SIZEOF( QUERY ( fcs <* csh\
9194               connected_face_set.cfs_faces | ( NOT ( SIZEOF( QUERY ( bnds <* fcs.bounds | (
9195               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND'  IN TYPEOF( bnds ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
9196               = 0 ) ) ) ) = 0 );
9197      wr5: ( SIZEOF( QUERY ( msb <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP'
9198               IN TYPEOF( it ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF( msb\
9199               manifold_solid_brep.outer ) ) ) ) = 0 );
9200      wr6: ( SIZEOF( QUERY ( brv <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS' IN
9201               TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( csh <* brv\brep_with_voids.voids | csh\oriented_closed_shell.orientation ) )
9202               = 0 ) ) ) ) = 0 );
9203      wr7: ( SIZEOF( QUERY ( mi <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
9204               TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACETED_BREP_SHAPE_REPRESENTATION' IN
9205               TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
9206  END_ENTITY;
9207
9208  ENTITY fact_type
9209    SUBTYPE OF ( property_definition );
9210  END_ENTITY;
9211
9212  ENTITY feature_component_definition
9213    SUBTYPE OF ( characterized_object );
9214    WHERE
9215      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9216               | ( NOT ( SIZEOF( USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) ) = 1 ) ) ) )
9217               = 0 );
9218  END_ENTITY;
9219
9220  ENTITY feature_component_relationship
9221    SUPERTYPE OF ( ONEOF ( pattern_omit_membership, pattern_offset_membership ) )
9222    SUBTYPE OF ( shape_aspect_relationship );
9223    WHERE
9224      wr1: ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT',
9225               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE' ,
9226               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRANSITION_FEATURE' ,
9227               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' ] * TYPEOF( SELF.relating_shape_aspect ) ) = 1 )
9228               OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MACHINING_FEATURE_DEFINITION' IN TYPEOF( SELF.
9229               relating_shape_aspect.of_shape.definition ) ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9230               + 'FEATURE_COMPONENT_DEFINITION'  IN TYPEOF( SELF.relating_shape_aspect.of_shape.definition ) ) );
9231  END_ENTITY;
9232
9233  ENTITY feature_definition
9234    SUPERTYPE OF ( ONEOF ( boss, compound_feature, externally_defined_feature_definition, flat_face, gear, marking, outer_round,
9235        outside_profile, pocket, protrusion, removal_volume, replicate_feature, revolved_profile, rib_top, round_hole, rounded_end,
9236        spherical_cap, step, slot, thread, turned_knurl ) )
9237    SUBTYPE OF ( characterized_object );
9238  END_ENTITY;
9239
9240  ENTITY feature_definition_with_connection_area
9241    SUBTYPE OF ( shape_feature_definition );
9242  END_ENTITY;
9243
9244  ENTITY feature_for_datum_target_relationship
9245    SUBTYPE OF ( shape_aspect_relationship );
9246      SELF\shape_aspect_relationship.related_shape_aspect : datum_target;
9247    UNIQUE
9248      ur1 : SELF\shape_aspect_relationship.related_shape_aspect;
9249    WHERE
9250      wr1: ( relating_shape_aspect.of_shape :=: related_shape_aspect.of_shape );
9251      wr2: ( relating_shape_aspect\shape_aspect.product_definitional = TRUE );
9252  END_ENTITY;
9253
9254  ENTITY feature_in_panel
9255    SUBTYPE OF ( feature_definition );
9256    WHERE
9257      wr1 : ( SELF.description IN [ 'pocket', 'boss', 'stairstep'] );
9258      wr2 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
9259                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
9260                used_representation ) ) AND ( NOT ( ( 2 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.
9261                used_representation.items ) <= 3 ) ) ) ) ) ) = 0 );
9262      wr3 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
9263                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
9264                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( NOT ( i.name IN [ 'orientation',
9265                'base radius' , 'target radius'] ) ) ) ) > 0 ) ) ) ) = 0 );
9266      wr4 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
9267                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
9268                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'base radius' )
9269                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
9270                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
9271                = 1 );
9272      wr5 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
9273                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
9274                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'target radius' )
9275                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
9276                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
9277                = 1 );
9278      wr6 : ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'base boundary' ) AND ( sa.description IN [
9279                'directed angle occurrence' , 'closed profile occurrence'] ) ) ) ) = 1 );
9280      wr7 : ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'target boundary' ) AND ( sa.description IN [
9281                'directed angle occurrence' , 'closed profile occurrence'] ) ) ) ) = 1 );
9282      wr8 : ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( sa.description = 'directed angle occurrence' ) ) ) <= 1 );
9283      wr9 : ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.description = 'directed angle occurrence' ) AND ( SIZEOF(
9284                QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.'
9285                + 'RELATED_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
9286                IN TYPEOF( sar ) ) AND ( sar.name = 'directed angle usage' ) AND (
9287                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTED_ANGLE'  IN TYPEOF( sar.relating_shape_aspect ) ) ) ) )
9288                = 1 ) ) ) ) = SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( sa.description = 'directed angle occurrence' ) ) ) );
9289      wr10: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.description = 'closed profile occurrence' ) AND ( SIZEOF(
9290                QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.'
9291                + 'RELATED_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
9292                IN TYPEOF( sar ) ) AND ( sar.description = 'profile usage' ) AND ( SIZEOF( [
9293                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' ,
9294                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
9295                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
9296                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ] * TYPEOF( sar.relating_shape_aspect ) ) =
9297                1 ) ) ) ) = 1 ) ) ) ) = SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( sa.description =
9298                'closed profile occurrence'  ) ) ) );
9299      wr11: ( ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | (
9300                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) ) )
9301                <= 1 ) AND ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
9302                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
9303                AND ( NOT ( pdr.used_representation.name = 'target face' ) ) ) ) ) = 0 ) );
9304      wr12: ( ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'target boundary' ) AND ( sa.description =
9305                'directed angle occurrence'  ) ) ) ) = 0 ) OR ( SIZEOF( QUERY ( pdr <* get_property_definition_representations(
9306                SELF ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( pdr.
9307                used_representation ) ) ) ) = 1 ) );
9308  END_ENTITY;
9309
9310  ENTITY feature_pattern
9311    SUBTYPE OF ( replicate_feature );
9312    WHERE
9313      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9314               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9315               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9316               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
9317               pdr.used_representation.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF(
9318               srwp_i ) ) ) ) ) > 0 ) ) ) ) > 0 ) ) ) = 0 );
9319      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9320               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9321               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9322               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
9323               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
9324               IN TYPEOF( it ) ) AND ( it.name = 'base feature placement' ) ) ) ) > 1 ) ) ) ) = 0 ) ) ) ) = 0 );
9325  END_ENTITY;
9326
9327  ENTITY fill_area_style
9328    SUBTYPE OF ( founded_item );
9329      name         : label;
9330      fill_styles  : SET [1 : ?] OF fill_style_select;
9331    WHERE
9332      wr1: ( SIZEOF( QUERY ( fill_style <* SELF.fill_styles | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9333               'FILL_AREA_STYLE_COLOUR'  ) IN TYPEOF( fill_style ) ) ) ) <= 1 );
9334  END_ENTITY;
9335
9336  ENTITY fill_area_style_colour;
9337      name         : label;
9338      fill_colour  : colour;
9339  END_ENTITY;
9340
9341  ENTITY fill_area_style_hatching
9342    SUBTYPE OF ( geometric_representation_item );
9343      hatch_line_appearance          : curve_style;
9344      start_of_next_hatch_line       : one_direction_repeat_factor;
9345      point_of_reference_hatch_line  : cartesian_point;
9346      pattern_start                  : cartesian_point;
9347      hatch_line_angle               : plane_angle_measure;
9348  END_ENTITY;
9349
9350  ENTITY fill_area_style_tile_coloured_region
9351    SUBTYPE OF ( geometric_representation_item );
9352      closed_curve   : curve_or_annotation_curve_occurrence;
9353      region_colour  : colour;
9354    WHERE
9355      wr1: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( closed_curve ) ) ) OR (
9356               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'  IN TYPEOF( closed_curve ) ) OR (
9357               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE'  IN TYPEOF( closed_curve ) ) OR ( (
9358               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'  IN TYPEOF( closed_curve ) ) AND ( closed_curve\
9359               b_spline_curve.closed_curve = TRUE ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN
9360               TYPEOF( closed_curve ) ) AND ( closed_curve\composite_curve.closed_curve = TRUE ) ) OR ( (
9361               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'  IN TYPEOF( closed_curve ) ) AND ( closed_curve\
9362               polyline.points[LOINDEX( closed_curve\polyline.points )] = closed_curve\polyline.points[HIINDEX( closed_curve\
9363               polyline.points )] ) ) );
9364  END_ENTITY;
9365
9366  ENTITY fill_area_style_tile_curve_with_style
9367    SUBTYPE OF ( geometric_representation_item );
9368      styled_curve  : annotation_curve_occurrence;
9369  END_ENTITY;
9370
9371  ENTITY fill_area_style_tile_symbol_with_style
9372    SUBTYPE OF ( geometric_representation_item );
9373      symbol  : annotation_symbol_occurrence;
9374  END_ENTITY;
9375
9376  ENTITY fill_area_style_tiles
9377    SUBTYPE OF ( geometric_representation_item );
9378      tiling_pattern  : two_direction_repeat_factor;
9379      tiles           : SET [1 : ?] OF fill_area_style_tile_shape_select;
9380      tiling_scale    : positive_ratio_measure;
9381  END_ENTITY;
9382
9383  ENTITY fillet
9384    SUBTYPE OF ( transition_feature );
9385    WHERE
9386      wr1: ( ( NOT ( SELF\shape_aspect.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
9387               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
9388               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
9389               + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
9390               TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
9391      wr2: ( ( NOT ( SELF\shape_aspect.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
9392               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
9393               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9394               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9395               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
9396               used_representation.items ) >= 1 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 3 ) ) ) ) = 0 ) ) ) ) =
9397               0 ) );
9398      wr3: ( ( NOT ( SELF.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
9399               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
9400               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9401               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9402               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
9403               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9404               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
9405               TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
9406      wr4: ( ( NOT ( SELF.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
9407               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
9408               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9409               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9410               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
9411               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9412               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
9413               TYPEOF( it ) ) = 2 ) AND ( it.name = 'first offset' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
9414      wr5: ( ( NOT ( SELF.description = 'constant radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
9415               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
9416               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9417               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9418               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
9419               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9420               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
9421               TYPEOF( it ) ) = 2 ) AND ( it.name = 'second offset' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
9422      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9423               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9424               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9425               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
9426               'fillet face'  ) ) ) ) = 1 ) ) ) ) = 0 );
9427      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9428               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9429               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9430               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
9431               'first face shape'  ) ) ) ) = 1 ) ) ) ) = 0 );
9432      wr8: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9433               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9434               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9435               + 'FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
9436               'second face shape'  ) ) ) ) = 1 ) ) ) ) = 0 );
9437  END_ENTITY;
9438
9439  ENTITY finite_function
9440    SUBTYPE OF ( maths_function, generic_literal );
9441      pairs  : SET [1 : ?] OF LIST [2 : 2] OF maths_value;
9442    WHERE
9443      wr1: VALUE_UNIQUE( list_selected_components( pairs, 1 ) );
9444  END_ENTITY;
9445
9446  ENTITY finite_integer_interval
9447    SUBTYPE OF ( maths_space, generic_literal );
9448      min  : INTEGER;
9449      max  : INTEGER;
9450    DERIVE
9451      size  : positive_integer := ( max - min ) + 1;
9452    WHERE
9453      wr1: ( min <= max );
9454  END_ENTITY;
9455
9456  ENTITY finite_real_interval
9457    SUBTYPE OF ( maths_space, generic_literal );
9458      min          : REAL;
9459      min_closure  : open_closed;
9460      max          : REAL;
9461      max_closure  : open_closed;
9462    WHERE
9463      wr1: ( min < max );
9464  END_ENTITY;
9465
9466  ENTITY finite_space
9467    SUBTYPE OF ( maths_space, generic_literal );
9468      members  : SET OF maths_value;
9469    WHERE
9470      wr1: VALUE_UNIQUE( members );
9471      wr2: ( SIZEOF( QUERY ( expr <* QUERY ( member <* members | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9472               + 'GENERIC_EXPRESSION'  IN TYPEOF( member ) ) ) | ( NOT expression_is_constant( expr ) ) ) ) = 0 );
9473      wr3: no_cyclic_space_reference( SELF, [] );
9474  END_ENTITY;
9475
9476  ENTITY fixed_constituent_assembly_constraint
9477    SUBTYPE OF ( assembly_geometric_constraint, fixed_element_geometric_constraint );
9478      fixed_constituent  : representative_shape_representation;
9479    WHERE
9480      wr1: ( SELF\explicit_constraint.constrained_elements[1]\geometric_representation_item.dim = 3 );
9481      wr2: assembly_leaf( using_product_definition_of_shape_representation( fixed_constituent )[1] );
9482      wr3: ( ( SIZEOF( SELF\explicit_constraint.constrained_elements ) = 1 ) AND ( SIZEOF( SELF\explicit_constraint.
9483               reference_elements ) = 0 ) );
9484      wr4: ( fixed_constituent IN ( using_representations( SELF\explicit_constraint.constrained_elements[1] ) +
9485               using_representation_with_mapping( SELF\explicit_constraint.constrained_elements[1] ) ) );
9486  END_ENTITY;
9487
9488  ENTITY fixed_element_geometric_constraint
9489    SUBTYPE OF ( explicit_geometric_constraint );
9490      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_constraint_element;
9491    WHERE
9492      wr1: ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 );
9493  END_ENTITY;
9494
9495  ENTITY fixed_instance_attribute_set
9496    SUBTYPE OF ( variational_representation_item );
9497      fixed_attributes  : SET [1 : ?] OF instance_attribute_reference;
9498    WHERE
9499      wr1: ( SIZEOF( QUERY ( q <* using_representations( SELF ) | ( SIZEOF( QUERY ( r <* q.items | (
9500               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FIXED_INSTANCE_ATTRIBUTE_SET'  IN TYPEOF( r ) ) ) ) > 1 ) ) ) = 0 );
9501  END_ENTITY;
9502
9503  ENTITY flat_face
9504    SUBTYPE OF ( feature_definition );
9505    WHERE
9506      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9507               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9508               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9509               + 'DIRECTION_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
9510               'removal direction'  ) ) ) ) = 1 ) ) ) ) = 0 );
9511      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9512               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9513               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
9514               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
9515               'course of travel occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
9516               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
9517               description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9518               + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9519               + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description =
9520               'linear' ) AND ( sdr.name = 'course of travel' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
9521      wr3: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9522               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9523               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
9524               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
9525               'removal boundary occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
9526               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
9527               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
9528               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE' IN TYPEOF( sdr.
9529               relating_shape_aspect ) ) AND ( sdr.name = 'removal boundary' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
9530      wr4: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9531               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9532               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
9533               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
9534               'enclosed boundary occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
9535               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
9536               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
9537               IN TYPEOF( sar ) ) ) ) | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
9538               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
9539               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
9540               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ] * TYPEOF( sdr.relating_shape_aspect ) ) =
9541               1 ) AND ( sdr.relating_shape_aspect.description = 'boundary' ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 0 );
9542      wr5: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
9543               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
9544               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
9545      wr6: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9546               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
9547               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
9548               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( csa.name =
9549               'uncut volume'  ) AND ( SIZEOF( QUERY ( sar <* csa.component_relationships | ( (
9550               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND (
9551               SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9552               + 'PROTRUSION' ] * TYPEOF( sar.related_shape_aspect ) ) = 1 ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 1 );
9553      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9554               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9555               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9556               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
9557               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9558               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
9559               TYPEOF( it ) ) = 2 ) AND ( it.name = 'removal depth' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
9560  END_ENTITY;
9561
9562  ENTITY flat_pattern_ply_representation_relationship
9563    SUBTYPE OF ( shape_representation_relationship );
9564    WHERE
9565      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN ( TYPEOF( SELF\representation_relationship
9566               .rep_1 ) * TYPEOF( SELF\representation_relationship.rep_2 ) ) );
9567      wr2: ( SELF\representation_relationship.rep_1.context_of_items\geometric_representation_context.coordinate_space_dimension
9568               = 3 );
9569  END_ENTITY;
9570
9571  ENTITY flatness_tolerance
9572    SUBTYPE OF ( geometric_tolerance );
9573    WHERE
9574      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' ) IN
9575               TYPEOF( SELF ) ) );
9576  END_ENTITY;
9577
9578  ENTITY force_measure_with_unit
9579    SUBTYPE OF ( measure_with_unit );
9580    WHERE
9581      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
9582  END_ENTITY;
9583
9584  ENTITY force_unit
9585    SUBTYPE OF ( derived_unit );
9586    WHERE
9587      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.newton ) );
9588  END_ENTITY;
9589
9590  ENTITY format_function
9591    SUBTYPE OF ( string_expression, binary_generic_expression );
9592    DERIVE
9593      value_to_format  : generic_expression := SELF\binary_generic_expression.operands[1];
9594      format_string    : generic_expression := SELF\binary_generic_expression.operands[2];
9595    WHERE
9596      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION' IN TYPEOF( value_to_format ) ) AND (
9597               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION'  IN TYPEOF( format_string ) ) );
9598  END_ENTITY;
9599
9600  ENTITY forward_chaining_rule
9601    SUBTYPE OF ( rule_definition );
9602  END_ENTITY;
9603
9604  ENTITY forward_chaining_rule_premise
9605    SUBTYPE OF ( property_definition, property_definition_representation, representation );
9606  END_ENTITY;
9607
9608  ENTITY founded_item
9609    SUPERTYPE OF ( ONEOF ( b_spline_curve_knot_locator, b_spline_curve_segment, b_spline_surface_knot_locator,
9610        b_spline_surface_patch, b_spline_surface_strip, boundary_curve_of_b_spline_or_rectangular_composite_surface, box_domain,
9611        character_glyph_style_outline, character_glyph_style_stroke, composite_curve_segment, composite_curve_transition_locator,
9612        curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, externally_defined_style,
9613        fill_area_style, interpolated_configuration_segment, kinematic_path_segment, plane_angle_and_length_pair,
9614        plane_angle_and_ratio_pair, point_style, presentation_style_assignment, rectangular_composite_surface_transition_locator,
9615        surface_patch, surface_side_style, surface_style_boundary, surface_style_control_grid, surface_style_fill_area,
9616        surface_style_parameter_line, surface_style_segmentation_curve, surface_style_silhouette, surface_style_usage,
9617        symbol_style, text_style, view_volume ) ANDOR ONEOF ( character_glyph_style_outline, character_glyph_style_stroke,
9618        curve_style, curve_style_font, curve_style_font_and_scaling, curve_style_font_pattern, externally_defined_style,
9619        fill_area_style, point_style, presentation_style_assignment, surface_side_style, surface_style_boundary,
9620        surface_style_control_grid, surface_style_fill_area, surface_style_parameter_line, surface_style_segmentation_curve,
9621        surface_style_silhouette, surface_style_usage, symbol_style, text_style ) );
9622    DERIVE
9623      users  : SET [0 : ?] OF founded_item_select := using_items( SELF, [] );
9624    WHERE
9625      wr1: ( SIZEOF( users ) > 0 );
9626      wr2: ( NOT ( SELF IN users ) );
9627  END_ENTITY;
9628
9629  ENTITY free_edge
9630    SUBTYPE OF ( inapt_topology );
9631      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
9632    WHERE
9633      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
9634      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
9635      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
9636      wr4: validate_accuracy_types( SELF, [] );
9637      wr5: ( SIZEOF( QUERY ( sdqr <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9638               'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( (
9639               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( sdqr ) )
9640               AND ( SIZEOF( QUERY ( sdqiir <* bag_to_set( USEDIN( sdqr, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9641               'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( (
9642               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' ) IN
9643               TYPEOF( sdqiir ) ) AND ( SIZEOF( QUERY ( sdqiri <* sdqiir.inspected_instances | (
9644               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL'  IN TYPEOF( sdqiri.inspected_elements[1] ) ) ) ) =
9645               0 ) ) ) ) = 0 ) ) ) ) = 0 );
9646  END_ENTITY;
9647
9648  ENTITY free_form_assignment
9649    SUBTYPE OF ( free_form_constraint );
9650    WHERE
9651      wr1: ( SIZEOF( QUERY ( q <* SELF\free_form_constraint.constrained_elements | ( q IN used_variables( SELF\
9652               free_form_constraint.constraining_expression ) ) ) ) = 0 );
9653      wr2: ( SIZEOF( QUERY ( q <* SELF\free_form_constraint.reference_elements | ( NOT ( q IN used_variables( SELF\
9654               free_form_constraint.constraining_expression ) ) ) ) ) = 0 );
9655      wr3: ( SIZEOF( SELF\free_form_constraint.reference_elements ) >= 1 );
9656      wr4: ( SIZEOF( QUERY ( q <* SELF\free_form_constraint.constrained_elements | ( NOT compatible_spaces( values_space_of( SELF
9657               \free_form_constraint.constraining_expression ), q\maths_variable.values_space ) ) ) ) = 0 );
9658  END_ENTITY;
9659
9660  ENTITY free_form_constraint
9661    ABSTRACT SUPERTYPE OF ( ONEOF ( free_form_assignment, free_form_relation ) )
9662    SUBTYPE OF ( explicit_constraint );
9663      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF variational_parameter;
9664      SELF\explicit_constraint.reference_elements : SET [0 : ?] OF variational_parameter;
9665      constraining_expression                : expression;
9666  END_ENTITY;
9667
9668  ENTITY free_form_relation
9669    SUBTYPE OF ( free_form_constraint );
9670    WHERE
9671      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_EXPRESSION' IN TYPEOF( SELF\free_form_constraint.
9672               constraining_expression ) );
9673      wr2: ( SIZEOF( QUERY ( q <* ( SELF\free_form_constraint.constrained_elements + SELF\free_form_constraint.reference_elements )
9674               | ( NOT ( q IN used_variables( SELF\free_form_constraint.constraining_expression ) ) ) ) ) = 0 );
9675  END_ENTITY;
9676
9677  ENTITY free_kinematic_motion_representation
9678    SUBTYPE OF ( representation_relationship_with_transformation );
9679      SELF\representation_relationship.rep_1 : representative_shape_representation;
9680      SELF\representation_relationship.rep_2 : representative_shape_representation;
9681      motion                                 : kinematic_path;
9682    WHERE
9683      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ITEM_DEFINED_TRANSFORMATION' IN TYPEOF( SELF\
9684               representation_relationship_with_transformation.transformation_operator ) );
9685      wr2: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( SELF\
9686               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
9687               transform_item_1 ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM' IN
9688               TYPEOF( SELF\representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
9689               transform_item_2 ) ) );
9690      wr3: ( ( dimension_of( SELF\representation_relationship_with_transformation.transformation_operator\
9691               item_defined_transformation.transform_item_1 ) = 3 ) AND ( dimension_of( SELF\
9692               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
9693               transform_item_2 ) = 3 ) );
9694      wr4: ( ( SELF\representation_relationship.rep_1 IN ( using_representations( SELF\
9695               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
9696               transform_item_1 ) + using_representation_with_mapping( SELF\representation_relationship_with_transformation.
9697               transformation_operator\item_defined_transformation.transform_item_1 ) ) ) AND ( SELF\representation_relationship.
9698               rep_2 IN ( using_representations( SELF\representation_relationship_with_transformation.transformation_operator\
9699               item_defined_transformation.transform_item_2 ) + using_representation_with_mapping( SELF\
9700               representation_relationship_with_transformation.transformation_operator\item_defined_transformation.
9701               transform_item_2 ) ) ) );
9702  END_ENTITY;
9703
9704  ENTITY frequency_measure_with_unit
9705    SUBTYPE OF ( measure_with_unit );
9706    WHERE
9707      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREQUENCY_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
9708  END_ENTITY;
9709
9710  ENTITY frequency_unit
9711    SUBTYPE OF ( derived_unit );
9712    WHERE
9713      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.hertz ) );
9714  END_ENTITY;
9715
9716  ENTITY frozen_assignment
9717    SUBTYPE OF ( approval_assignment );
9718      items  : SET [1 : ?] OF change_management_object;
9719  END_ENTITY;
9720
9721  ENTITY fully_constrained_pair
9722    SUBTYPE OF ( low_order_kinematic_pair );
9723    DERIVE
9724      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := FALSE;
9725      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
9726      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
9727      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := FALSE;
9728      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := FALSE;
9729      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := FALSE;
9730  END_ENTITY;
9731
9732  ENTITY func
9733    SUBTYPE OF ( compound_representation_item );
9734  END_ENTITY;
9735
9736  ENTITY function_application
9737    SUBTYPE OF ( multiple_arity_generic_expression );
9738      func       : maths_function_select;
9739      arguments  : LIST [1 : ?] OF maths_expression;
9740    DERIVE
9741      SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF generic_expression := [convert_to_maths_function( func )]
9742                                                 + convert_to_operands( arguments );
9743    WHERE
9744      wr1: function_applicability( func, arguments );
9745  END_ENTITY;
9746
9747  ENTITY function_space
9748    SUBTYPE OF ( maths_space, generic_literal );
9749      domain_constraint  : space_constraint_type;
9750      domain_argument    : maths_space;
9751      range_constraint   : space_constraint_type;
9752      range_argument     : maths_space;
9753    WHERE
9754      wr1: ( expression_is_constant( domain_argument ) AND expression_is_constant( range_argument ) );
9755      wr2: ( ( domain_argument <> the_empty_space ) AND ( range_argument <> the_empty_space ) );
9756      wr3: ( ( domain_constraint <> sc_member ) OR ( NOT member_of( the_empty_space, domain_argument ) ) );
9757      wr4: ( ( range_constraint <> sc_member ) OR ( NOT member_of( the_empty_space, range_argument ) ) );
9758      wr5: ( NOT ( any_space_satisfies( domain_constraint, domain_argument ) AND any_space_satisfies( range_constraint,
9759               range_argument ) ) );
9760  END_ENTITY;
9761
9762  ENTITY functional_breakdown_context
9763    SUBTYPE OF ( breakdown_context );
9764  END_ENTITY;
9765
9766  ENTITY functional_element_usage
9767    SUBTYPE OF ( breakdown_element_usage );
9768  END_ENTITY;
9769
9770  ENTITY functionally_defined_transformation;
9771      name         : label;
9772      description  : OPTIONAL text;
9773  END_ENTITY;
9774
9775  ENTITY g1_discontinuity_between_adjacent_faces
9776    SUBTYPE OF ( non_smooth_geometry_transition_across_edge );
9777      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9778    WHERE
9779      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9780               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9781               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
9782               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9783      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
9784      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
9785      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9786               'POINT_ON_EDGE_CURVE' ] );
9787      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE'] );
9788  END_ENTITY;
9789
9790  ENTITY g1_discontinuous_curve
9791    SUBTYPE OF ( discontinuous_geometry );
9792      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9793    WHERE
9794      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9795               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9796               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
9797               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9798      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
9799      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] );
9800      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9801               'B_SPLINE_CURVE_KNOT_LOCATOR' ] );
9802      wr5: validate_accuracy_types( SELF, [] );
9803  END_ENTITY;
9804
9805  ENTITY g1_discontinuous_surface
9806    SUBTYPE OF ( discontinuous_geometry );
9807      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9808    WHERE
9809      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9810               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9811               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
9812               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9813      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
9814      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
9815      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9816               'B_SPLINE_SURFACE_KNOT_LOCATOR' ] );
9817      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE'] );
9818  END_ENTITY;
9819
9820  ENTITY g2_discontinuity_between_adjacent_faces
9821    SUBTYPE OF ( non_smooth_geometry_transition_across_edge );
9822      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9823      assessment_specification_2             : shape_data_quality_assessment_by_numerical_test;
9824      flat_curvature_radius_tolerance        : length_measure;
9825    WHERE
9826      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9827               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9828               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
9829               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9830      wr2: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF(
9831               assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold ) ) AND (
9832               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE'  IN value_limit_type( assessment_specification_2\
9833               shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9834      wr3: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANE_ANGLE_AND_RATIO_PAIR' );
9835      wr4: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
9836      wr5: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9837               'POINT_ON_EDGE_CURVE' ] );
9838      wr6: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE'] );
9839  END_ENTITY;
9840
9841  ENTITY g2_discontinuous_curve
9842    SUBTYPE OF ( discontinuous_geometry );
9843      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9844      assessment_specification_2             : shape_data_quality_assessment_by_numerical_test;
9845      flat_curvature_radius_tolerance        : length_measure;
9846    WHERE
9847      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9848               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9849               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
9850               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9851      wr2: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF(
9852               assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold ) ) AND (
9853               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE'  IN value_limit_type( assessment_specification_2\
9854               shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9855      wr3: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANE_ANGLE_AND_RATIO_PAIR' );
9856      wr4: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] );
9857      wr5: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9858               'B_SPLINE_CURVE_KNOT_LOCATOR' ] );
9859      wr6: validate_accuracy_types( SELF, [] );
9860  END_ENTITY;
9861
9862  ENTITY g2_discontinuous_surface
9863    SUBTYPE OF ( discontinuous_geometry );
9864      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9865      assessment_specification_2             : shape_data_quality_assessment_by_numerical_test;
9866      flat_curvature_radius_tolerance        : length_measure;
9867    WHERE
9868      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9869               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9870               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
9871               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9872      wr2: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF(
9873               assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold ) ) AND (
9874               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE'  IN value_limit_type( assessment_specification_2\
9875               shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9876      wr3: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANE_ANGLE_AND_RATIO_PAIR' );
9877      wr4: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
9878      wr5: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9879               'B_SPLINE_SURFACE_KNOT_LOCATOR' ] );
9880      wr6: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE'] );
9881  END_ENTITY;
9882
9883  ENTITY gap_between_adjacent_edges_in_loop
9884    SUBTYPE OF ( geometric_gap_in_topology );
9885      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9886    WHERE
9887      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9888               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9889               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
9890               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9891      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
9892      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'] );
9893      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE'] );
9894      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9895  END_ENTITY;
9896
9897  ENTITY gap_between_edge_and_base_surface
9898    SUBTYPE OF ( geometric_gap_in_topology );
9899      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9900    WHERE
9901      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9902               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9903               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
9904               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9905      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
9906      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
9907      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9908               'POINT_ON_EDGE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POINT_ON_FACE_SURFACE'] );
9909      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9910  END_ENTITY;
9911
9912  ENTITY gap_between_faces_related_to_an_edge
9913    SUBTYPE OF ( geometric_gap_in_topology );
9914      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9915    WHERE
9916      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9917               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9918               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
9919               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9920      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
9921      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
9922      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
9923               'POINT_ON_EDGE_CURVE' ] );
9924      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9925  END_ENTITY;
9926
9927  ENTITY gap_between_pcurves_related_to_an_edge
9928    SUBTYPE OF ( geometric_gap_in_topology );
9929      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9930    WHERE
9931      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9932               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9933               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
9934               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9935      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
9936      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
9937      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
9938               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] );
9939      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9940  END_ENTITY;
9941
9942  ENTITY gap_between_vertex_and_base_surface
9943    SUBTYPE OF ( geometric_gap_in_topology );
9944      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9945    WHERE
9946      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9947               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9948               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
9949               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9950      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
9951      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
9952      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
9953               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'POINT_ON_FACE_SURFACE'] );
9954      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9955  END_ENTITY;
9956
9957  ENTITY gap_between_vertex_and_edge
9958    SUBTYPE OF ( geometric_gap_in_topology );
9959      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
9960    WHERE
9961      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
9962               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
9963               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
9964               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
9965      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
9966      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
9967      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
9968               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'POINT_ON_EDGE_CURVE'] );
9969      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
9970  END_ENTITY;
9971
9972  ENTITY gear
9973    SUBTYPE OF ( feature_definition );
9974    WHERE
9975      wr1 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
9976                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9977                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9978                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( 10 <= SIZEOF( pdr.
9979                used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.items ) <= 13 ) ) ) ) = 1 ) ) ) = 1 );
9980      wr2 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
9981                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9982                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
9983                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
9984                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
9985                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
9986                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
9987                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
9988                = 'number of teeth' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
9989      wr3 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
9990                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
9991                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
9992                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
9993                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
9994                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
9995                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
9996                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it
9997                .name = 'reference pressure angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
9998      wr4 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
9999                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10000                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10001                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10002                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10003                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
10004                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
10005                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
10006                = 'rake shift factor' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10007      wr5 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10008                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10009                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10010                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10011                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10012                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
10013                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
10014                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
10015                = 'nominal tooth depth' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10016      wr6 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10017                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10018                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10019                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10020                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10021                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
10022                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
10023                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
10024                = 'face width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10025      wr7 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10026                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10027                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10028                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10029                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10030                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
10031                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
10032                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
10033                = 'tip diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10034      wr8 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10035                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10036                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10037                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10038                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10039                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( (
10040                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.
10041                name = 'module or diametral pitch' ) AND ( ( it.description = 'module' ) OR ( it.description = 'diametral pitch' ) ) ) ) )
10042                = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10043      wr9 : ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10044                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10045                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10046                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10047                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10048                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( (
10049                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.
10050                name = 'internal or external gear' ) AND ( ( it.description = 'internal' ) OR ( it.description = 'external' ) ) ) ) )
10051                = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10052      wr10: ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10053                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10054                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10055                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10056                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10057                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
10058                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
10059                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
10060                = 'normal attribute' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10061      wr11: ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear', 'spur gear',
10062                'helical gear' ] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10063                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd,
10064                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | (
10065                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
10066                used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [
10067                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
10068                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( it ) ) = 2 ) AND ( it.name
10069                = 'root fillet radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10070      wr12: ( ( NOT ( SELF\characterized_object.description IN [ 'helix gear', 'helical bevel gear'] ) ) OR ( SIZEOF(
10071                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
10072                ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10073                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10074                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10075                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10076                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
10077                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'reference helix angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10078      wr13: ( ( NOT ( SELF\characterized_object.description IN [ 'helix gear', 'helical bevel gear'] ) ) OR ( SIZEOF(
10079                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
10080                ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10081                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10082                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10083                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10084                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'gear tooth' ) AND ( ( it.description =
10085                'left hand tooth'  ) OR ( it.description = 'right hand tooth' ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10086      wr14: ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear'] ) ) OR ( SIZEOF(
10087                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
10088                ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10089                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10090                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10091                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10092                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
10093                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'tip angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10094      wr15: ( ( NOT ( SELF\characterized_object.description IN [ 'straight bevel gear', 'helical bevel gear'] ) ) OR ( SIZEOF(
10095                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
10096                ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10097                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10098                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10099                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10100                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
10101                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'root angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10102      wr16: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10103                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10104                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
10105                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( SIZEOF( QUERY ( sdr <*
10106                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
10107                + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'applied shape' ) AND (
10108                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
10109                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) )
10110                = 1 ) ) ) ) = 0 );
10111  END_ENTITY;
10112
10113  ENTITY gear_pair
10114    SUBTYPE OF ( low_order_kinematic_pair_with_motion_coupling );
10115      radius_first_link   : length_measure;
10116      radius_second_link  : length_measure;
10117      bevel               : plane_angle_measure;
10118      helical_angle       : plane_angle_measure;
10119      gear_ratio          : REAL;
10120    WHERE
10121      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
10122               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
10123  END_ENTITY;
10124
10125  ENTITY gear_pair_value
10126    SUBTYPE OF ( pair_value );
10127      SELF\pair_value.applies_to_pair  : gear_pair;
10128      actual_rotation_1                : plane_angle_measure;
10129    DERIVE
10130      actual_rotation_2  : plane_angle_measure := ( -actual_rotation_1 ) * SELF\pair_value.applies_to_pair\gear_pair.gear_ratio;
10131  END_ENTITY;
10132
10133  ENTITY gear_pair_with_range
10134    SUBTYPE OF ( gear_pair );
10135      lower_limit_actual_rotation_1  : OPTIONAL plane_angle_measure;
10136      upper_limit_actual_rotation_1  : OPTIONAL plane_angle_measure;
10137    WHERE
10138      wr1: ( ( ( NOT EXISTS( lower_limit_actual_rotation_1 ) ) OR ( NOT EXISTS( upper_limit_actual_rotation_1 ) ) ) XOR (
10139               lower_limit_actual_rotation_1 < upper_limit_actual_rotation_1 ) );
10140  END_ENTITY;
10141
10142  ENTITY general_datum_reference
10143    ABSTRACT SUPERTYPE OF ( ONEOF ( datum_reference_compartment, datum_reference_element ) )
10144    SUBTYPE OF ( shape_aspect );
10145      base       : datum_or_common_datum;
10146      modifiers  : OPTIONAL SET [1 : ?] OF datum_reference_modifier;
10147    WHERE
10148      wr1: ( SELF\shape_aspect.name = '' );
10149      wr2: ( NOT EXISTS( SELF\shape_aspect.description ) );
10150      wr3: ( NOT EXISTS( SELF\shape_aspect.id ) );
10151      wr4: ( SELF\shape_aspect.product_definitional = FALSE );
10152      wr5: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM' IN TYPEOF( base ) ) ) OR ( SELF\shape_aspect.
10153               of_shape = base\shape_aspect.of_shape ) );
10154      wr6: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMMON_DATUM_LIST' IN TYPEOF( base ) ) ) OR ( SELF\
10155               shape_aspect.of_shape = base[1]\shape_aspect.of_shape ) );
10156  END_ENTITY;
10157
10158  ENTITY general_feature
10159    SUBTYPE OF ( shape_feature_definition );
10160    WHERE
10161      wr1: ( ( SIZEOF( get_property_definition_representations( SELF ) ) <= 1 ) AND ( SIZEOF( QUERY ( pdr <*
10162               get_property_definition_representations( SELF ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10163               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) <= 1 ) );
10164      wr2: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( sa.description = 'course of travel occurrence' ) ) ) = SIZEOF(
10165               QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.description = 'course of travel occurrence' ) AND ( SIZEOF(
10166               QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
10167               + 'RELATED_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
10168               TYPEOF( sar ) ) AND ( sar.name = 'course of travel' ) ) ) ) = 1 ) ) ) ) );
10169      wr3: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( sa.description = 'course of travel occurrence' ) ) ) = SIZEOF(
10170               QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.description = 'course of travel occurrence' ) AND ( SIZEOF(
10171               QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
10172               + 'RELATED_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
10173               TYPEOF( sar ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN TYPEOF( sar.
10174               relating_shape_aspect ) ) ) ) ) = 1 ) ) ) ) );
10175      wr4: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( sa.description = 'boundary occurrence' ) ) ) = SIZEOF(
10176               QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.description = 'boundary occurrence' ) AND ( SIZEOF(
10177               QUERY ( sar <* USEDIN( sa, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
10178               + 'RELATED_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
10179               TYPEOF( sar ) ) AND ( sar.description = 'profile usage' ) ) ) ) = 1 ) ) ) ) );
10180      wr5: ( ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10181               + 'COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( sa ) ) ) ) <= 1 ) AND ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) |
10182               ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN TYPEOF( sa ) ) AND ( sa.name =
10183               'general compound feature'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
10184               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( (
10185               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND (
10186               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE'  IN TYPEOF( sar.related_shape_aspect ) ) ) ) )
10187               >= 2 ) ) ) ) <= 1 ) );
10188  END_ENTITY;
10189
10190  ENTITY general_linear_function
10191    SUBTYPE OF ( maths_function, unary_generic_expression );
10192      SELF\unary_generic_expression.operand  : maths_function;
10193      sum_index                              : one_or_two;
10194    DERIVE
10195      mat  : maths_function := SELF\unary_generic_expression.operand;
10196    WHERE
10197      wr1: function_is_2d_table( mat );
10198      wr2: ( ( space_dimension( mat.range ) = 1 ) AND subspace_of_es( factor1( mat.range ), es_numbers ) );
10199  END_ENTITY;
10200
10201  ENTITY general_material_property
10202    SUBTYPE OF ( general_property );
10203    WHERE
10204      wr1: ( SIZEOF( QUERY ( gpa <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERAL_PROPERTY_ASSOCIATION.'
10205               + 'BASE_DEFINITION'  ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MATERIAL_PROPERTY' IN TYPEOF(
10206               gpa\general_property_association.derived_definition ) ) ) ) ) = 0 );
10207  END_ENTITY;
10208
10209  ENTITY general_property;
10210      id           : identifier;
10211      name         : label;
10212      description  : OPTIONAL text;
10213  END_ENTITY;
10214
10215  ENTITY general_property_association;
10216      name                : label;
10217      description         : OPTIONAL text;
10218      base_definition     : general_property;
10219      derived_definition  : derived_property_select;
10220    WHERE
10221      wr1: ( SIZEOF( USEDIN( derived_definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
10222               'GENERAL_PROPERTY_ASSOCIATION.'  + 'DERIVED_DEFINITION' ) ) = 1 );
10223      wr2: ( derived_definition.name = base_definition.name );
10224  END_ENTITY;
10225
10226  ENTITY general_property_relationship;
10227      name               : label;
10228      description        : OPTIONAL text;
10229      relating_property  : general_property;
10230      related_property   : general_property;
10231  END_ENTITY;
10232
10233  ENTITY generated_finite_numeric_space
10234    SUBTYPE OF ( finite_space );
10235      start_value       : maths_number;
10236      increment_value   : maths_number;
10237      increment_number  : positive_integer;
10238    DERIVE
10239      SELF\finite_space.members  : SET [2 : ?] OF maths_number := make_numeric_set( start_value, increment_value,
10240                                     increment_number );
10241    WHERE
10242      wr1: ( increment_value <> 0 );
10243  END_ENTITY;
10244
10245  ENTITY generic_character_glyph_symbol
10246    ABSTRACT SUPERTYPE
10247    SUBTYPE OF ( symbol_representation );
10248  END_ENTITY;
10249
10250  ENTITY generic_expression
10251    ABSTRACT SUPERTYPE OF ( ONEOF ( simple_generic_expression, unary_generic_expression, binary_generic_expression,
10252        multiple_arity_generic_expression ) );
10253    WHERE
10254      wr1: is_acyclic( SELF );
10255  END_ENTITY;
10256
10257  ENTITY generic_literal
10258    ABSTRACT SUPERTYPE
10259    SUBTYPE OF ( simple_generic_expression );
10260  END_ENTITY;
10261
10262  ENTITY generic_product_definition_reference
10263    ABSTRACT SUPERTYPE OF ( ONEOF ( product_definition_reference, product_definition_reference_with_local_representation ) );
10264      source  : external_source;
10265  END_ENTITY;
10266
10267  ENTITY generic_variable
10268    ABSTRACT SUPERTYPE
10269    SUBTYPE OF ( simple_generic_expression );
10270    INVERSE
10271      interpretation : environment FOR syntactic_representation;
10272  END_ENTITY;
10273
10274  ENTITY geometric_alignment
10275    SUBTYPE OF ( derived_shape_aspect );
10276    WHERE
10277      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) > 1 );
10278  END_ENTITY;
10279
10280  ENTITY geometric_contact
10281    SUBTYPE OF ( derived_shape_aspect );
10282    WHERE
10283      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) = 2 );
10284  END_ENTITY;
10285
10286  ENTITY geometric_curve_set
10287    SUBTYPE OF ( geometric_set );
10288    WHERE
10289      wr1: ( SIZEOF( QUERY ( temp <* SELF\geometric_set.elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN
10290               TYPEOF( temp ) ) ) ) = 0 );
10291  END_ENTITY;
10292
10293  ENTITY geometric_gap_in_topology
10294    ABSTRACT SUPERTYPE OF ( ONEOF ( gap_between_adjacent_edges_in_loop, gap_between_vertex_and_base_surface,
10295        gap_between_vertex_and_edge, gap_between_edge_and_base_surface, gap_between_pcurves_related_to_an_edge,
10296        gap_between_faces_related_to_an_edge ) )
10297    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
10298  END_ENTITY;
10299
10300  ENTITY geometric_intersection
10301    SUBTYPE OF ( derived_shape_aspect );
10302    WHERE
10303      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) > 1 );
10304  END_ENTITY;
10305
10306  ENTITY geometric_item_specific_usage
10307    SUBTYPE OF ( item_identified_representation_usage );
10308      SELF\item_identified_representation_usage.definition : geometric_item_specific_usage_select;
10309      SELF\item_identified_representation_usage.used_representation : shape_model;
10310      SELF\item_identified_representation_usage.identified_item : geometric_model_item;
10311    UNIQUE
10312      ur1 : SELF\item_identified_representation_usage.definition;
10313  END_ENTITY;
10314
10315  ENTITY geometric_model_element_relationship
10316    SUBTYPE OF ( geometric_representation_item, representation_item_relationship );
10317      SELF\representation_item_relationship.relating_representation_item : geometric_representation_item;
10318      SELF\representation_item_relationship.related_representation_item : geometric_representation_item;
10319    UNIQUE
10320      ur1 : relating_representation_item, related_representation_item;
10321    WHERE
10322      wr1: ( SELF\representation_item_relationship.relating_representation_item :<>: SELF\representation_item_relationship.
10323               related_representation_item );
10324  END_ENTITY;
10325
10326  ENTITY geometric_representation_context
10327    SUPERTYPE OF ( ONEOF ( geometric_representation_context_with_parameter, path_parameter_representation_context ) )
10328    SUBTYPE OF ( representation_context );
10329      coordinate_space_dimension  : dimension_count;
10330  END_ENTITY;
10331
10332  ENTITY geometric_representation_context_with_parameter
10333    SUBTYPE OF ( geometric_representation_context );
10334      parameter_unit  : OPTIONAL unit;
10335  END_ENTITY;
10336
10337  ENTITY geometric_representation_item
10338    SUPERTYPE OF ( ONEOF ( point, direction, vector, placement, cartesian_transformation_operator, curve, surface, edge_curve,
10339        face_surface, poly_loop, vertex_point, solid_model, boolean_result, sphere, right_circular_cone, right_circular_cylinder,
10340        torus, block, primitive_2d, right_angular_wedge, volume, half_space_solid, shell_based_surface_model,
10341        face_based_surface_model, shell_based_wireframe_model, edge_based_wireframe_model, geometric_set, tessellated_item ) ANDOR
10342        ONEOF ( camera_model, camera_model_d3_multi_clipping_intersection, camera_model_d3_multi_clipping_union, curve, direction,
10343        light_source ) ANDOR ONEOF ( annotation_fill_area, composite_text, curve, defined_character_glyph, defined_symbol, point,
10344        symbol_target, text_literal ) ANDOR ONEOF ( kinematic_path, placement ) ANDOR ONEOF ( curve,
10345        externally_defined_hatch_style, externally_defined_tile_style, fill_area_style_hatching,
10346        fill_area_style_tile_coloured_region, fill_area_style_tile_curve_with_style, fill_area_style_tile_symbol_with_style,
10347        fill_area_style_tiles, one_direction_repeat_factor, point, vector ) ANDOR ONEOF ( curve, planar_extent ) ANDOR ONEOF (
10348        rotation_about_direction, su_parameters ) )
10349    SUBTYPE OF ( representation_item );
10350    DERIVE
10351      dim  : dimension_count := dimension_of( SELF );
10352    WHERE
10353      wr1: ( SIZEOF( QUERY ( using_rep <* using_representations( SELF ) | ( NOT (
10354               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT'  IN TYPEOF( using_rep.
10355               context_of_items ) ) ) ) ) = 0 );
10356  END_ENTITY;
10357
10358  ENTITY geometric_set
10359    SUBTYPE OF ( geometric_representation_item );
10360      elements  : SET [1 : ?] OF geometric_set_select;
10361  END_ENTITY;
10362
10363  ENTITY geometric_tolerance
10364    ABSTRACT SUPERTYPE OF ( geometric_tolerance_with_datum_reference ANDOR geometric_tolerance_with_defined_unit ANDOR ONEOF (
10365        geometric_tolerance_with_modifiers, modified_geometric_tolerance ) ANDOR unequally_disposed_geometric_tolerance ANDOR
10366        ONEOF ( cylindricity_tolerance, flatness_tolerance, line_profile_tolerance, position_tolerance, roundness_tolerance,
10367        straightness_tolerance, surface_profile_tolerance ) );
10368      name                     : label;
10369      description              : OPTIONAL text;
10370      magnitude                : OPTIONAL length_measure_with_unit;
10371      toleranced_shape_aspect  : geometric_tolerance_target;
10372    DERIVE
10373      controlling_shape  : product_definition_shape := sts_get_product_definition_shape( toleranced_shape_aspect );
10374      id                 : identifier := get_id_value( SELF );
10375    UNIQUE
10376      ur1 : id, controlling_shape;
10377    WHERE
10378      wr1: ( magnitude\measure_with_unit.value_component >= 0 );
10379      wr2: EXISTS( controlling_shape );
10380      wr3: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP' IN TYPEOF(
10381               toleranced_shape_aspect ) ) ) OR ( toleranced_shape_aspect\shape_aspect_relationship.relating_shape_aspect.of_shape
10382               :=: toleranced_shape_aspect\shape_aspect_relationship.related_shape_aspect.of_shape ) );
10383      wr4: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
10384  END_ENTITY;
10385
10386  ENTITY geometric_tolerance_relationship;
10387      name                          : label;
10388      description                   : text;
10389      relating_geometric_tolerance  : geometric_tolerance;
10390      related_geometric_tolerance   : geometric_tolerance;
10391  END_ENTITY;
10392
10393  ENTITY geometric_tolerance_with_datum_reference
10394    SUPERTYPE OF ( ONEOF ( angularity_tolerance, circular_runout_tolerance, coaxiality_tolerance, concentricity_tolerance,
10395        parallelism_tolerance, perpendicularity_tolerance, symmetry_tolerance, total_runout_tolerance ) )
10396    SUBTYPE OF ( geometric_tolerance );
10397      datum_system  : SET [1 : ?] OF datum_system_or_reference;
10398    WHERE
10399      wr1: ( ( SIZEOF( QUERY ( ds <* datum_system | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DATUM_SYSTEM' ) IN
10400               TYPEOF( ds ) ) ) ) = 0 ) OR ( SIZEOF( datum_system ) = 1 ) );
10401  END_ENTITY;
10402
10403  ENTITY geometric_tolerance_with_defined_area_unit
10404    SUBTYPE OF ( geometric_tolerance_with_defined_unit );
10405      area_type         : area_unit_type;
10406      second_unit_size  : OPTIONAL length_measure_with_unit;
10407    WHERE
10408      wr1: ( NOT ( EXISTS( second_unit_size ) XOR ( area_type = area_unit_type.rectangular ) ) );
10409  END_ENTITY;
10410
10411  ENTITY geometric_tolerance_with_defined_unit
10412    SUBTYPE OF ( geometric_tolerance );
10413      unit_size  : length_measure_with_unit;
10414    WHERE
10415      wr1: ( ( 'NUMBER' IN TYPEOF( unit_size\measure_with_unit.value_component ) ) AND ( unit_size\measure_with_unit.
10416               value_component > 0 ) );
10417  END_ENTITY;
10418
10419  ENTITY geometric_tolerance_with_maximum_tolerance
10420    SUBTYPE OF ( geometric_tolerance_with_modifiers );
10421      maximum_upper_tolerance  : length_measure_with_unit;
10422    WHERE
10423      wr1: ( ( geometric_tolerance_modifier.maximum_material_requirement IN SELF\geometric_tolerance_with_modifiers.modifiers )
10424               OR ( geometric_tolerance_modifier.least_material_requirement IN SELF\geometric_tolerance_with_modifiers.modifiers ) );
10425      wr2: ( ( maximum_upper_tolerance\measure_with_unit.unit_component = SELF\geometric_tolerance.magnitude\measure_with_unit.
10426               unit_component ) AND ( maximum_upper_tolerance\measure_with_unit.value_component > SELF\geometric_tolerance.
10427               magnitude\measure_with_unit.value_component ) );
10428  END_ENTITY;
10429
10430  ENTITY geometric_tolerance_with_modifiers
10431    SUBTYPE OF ( geometric_tolerance );
10432      modifiers  : SET [1 : ?] OF geometric_tolerance_modifier;
10433  END_ENTITY;
10434
10435  ENTITY geometrical_tolerance_callout
10436    SUBTYPE OF ( draughting_callout );
10437  END_ENTITY;
10438
10439  ENTITY geometrically_bounded_2d_wireframe_representation
10440    SUBTYPE OF ( shape_representation );
10441    WHERE
10442      wr1: ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 2 );
10443      wr2: ( SIZEOF( QUERY ( item <* SELF.items | ( NOT ( SIZEOF( TYPEOF( item ) * [
10444               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_CURVE_SET' ,
10445               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' ,
10446               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] ) = 1 ) ) ) ) = 0 );
10447      wr3: ( SIZEOF( QUERY ( item <* SELF.items | ( SIZEOF( TYPEOF( item ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10448               + 'GEOMETRIC_CURVE_SET' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] ) = 1 ) ) ) >= 1 );
10449      wr4: ( SIZEOF( QUERY ( mi <* QUERY ( item <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'
10450               IN TYPEOF( item ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
10451               'GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION'  ) IN TYPEOF( mi\mapped_item.mapping_source.
10452               mapped_representation ) ) ) ) ) = 0 );
10453      wr5: ( SIZEOF( QUERY ( gcs <* QUERY ( item <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10454               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( item ) ) ) | ( NOT ( SIZEOF( QUERY ( elem <* gcs\geometric_set.elements | (
10455               NOT ( SIZEOF( TYPEOF( elem ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
10456               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10457               + 'COMPOSITE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
10458               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D' ,
10459               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10460               + 'POLYLINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE'] ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
10461      wr6: ( SIZEOF( QUERY ( gcs <* QUERY ( item <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10462               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( item ) ) ) | ( NOT ( SIZEOF( QUERY ( crv <* QUERY ( elem <* gcs\geometric_set.
10463               elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( elem ) ) ) | ( NOT
10464               valid_basis_curve_in_2d_wireframe( crv ) ) ) ) = 0 ) ) ) ) = 0 );
10465      wr7: ( SIZEOF( QUERY ( gcs <* QUERY ( item <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10466               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( item ) ) ) | ( NOT ( SIZEOF( QUERY ( pnt <* QUERY ( elem <* gcs\geometric_set.
10467               elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF( elem ) ) ) | ( NOT ( SIZEOF(
10468               TYPEOF( pnt ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
10469               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ] ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
10470  END_ENTITY;
10471
10472  ENTITY geometrically_bounded_surface_shape_representation
10473    SUBTYPE OF ( shape_representation );
10474    WHERE
10475      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET',
10476               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10477               + 'AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
10478      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET',
10479               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] * TYPEOF( it ) ) = 1 ) ) ) > 0 );
10480      wr3: ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
10481               TYPEOF( it ) ) ) | ( NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
10482               'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION'  ) IN TYPEOF( mi\mapped_item.mapping_source.
10483               mapped_representation ) ) AND ( SIZEOF( QUERY ( mr_it <* mi\mapped_item.mapping_source.mapped_representation.items
10484               | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET' IN TYPEOF( mr_it ) ) ) ) > 0 ) ) ) ) ) = 0 );
10485      wr4: ( SIZEOF( QUERY ( gs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET'
10486               IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( pnt <* QUERY ( gsel <* gs\geometric_set.elements | (
10487               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT'  IN TYPEOF( gsel ) ) ) | ( NOT gbsf_check_point( pnt ) ) ) )
10488               = 0 ) ) ) ) = 0 );
10489      wr5: ( SIZEOF( QUERY ( gs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET'
10490               IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cv <* QUERY ( gsel <* gs\geometric_set.elements | (
10491               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE'  IN TYPEOF( gsel ) ) ) | ( NOT gbsf_check_curve( cv ) ) ) )
10492               = 0 ) ) ) ) = 0 );
10493      wr6: ( SIZEOF( QUERY ( gs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET'
10494               IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( sf <* QUERY ( gsel <* gs\geometric_set.elements | (
10495               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'  IN TYPEOF( gsel ) ) ) | ( NOT gbsf_check_surface( sf ) ) ) )
10496               = 0 ) ) ) ) = 0 );
10497      wr7: ( SIZEOF( QUERY ( gs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_SET'
10498               IN TYPEOF( it ) ) ) | ( SIZEOF( QUERY ( gsel <* gs\geometric_set.elements | (
10499               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'  IN TYPEOF( gsel ) ) ) ) > 0 ) ) ) > 0 );
10500  END_ENTITY;
10501
10502  ENTITY geometrically_bounded_wireframe_shape_representation
10503    SUBTYPE OF ( shape_representation );
10504    WHERE
10505      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( TYPEOF( it ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10506               + 'GEOMETRIC_CURVE_SET' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D',
10507               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' ] ) = 1 ) ) ) ) = 0 );
10508      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( TYPEOF( it ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10509               + 'GEOMETRIC_CURVE_SET' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] ) = 1 ) ) ) >= 1 );
10510      wr3: ( SIZEOF( QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10511               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( crv <* QUERY ( elem <* gcs\geometric_set.
10512               elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( elem ) ) ) | ( NOT
10513               valid_geometrically_bounded_wf_curve( crv ) ) ) ) = 0 ) ) ) ) = 0 );
10514      wr4: ( SIZEOF( QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10515               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( pnts <* QUERY ( elem <* gcs\geometric_set.
10516               elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF( elem ) ) ) | ( NOT
10517               valid_geometrically_bounded_wf_point( pnts ) ) ) ) = 0 ) ) ) ) = 0 );
10518      wr5: ( SIZEOF( QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10519               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cnc <* QUERY ( elem <* gcs\geometric_set.
10520               elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' IN TYPEOF( elem ) ) ) | ( NOT (
10521               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'  IN TYPEOF( cnc\conic.position ) ) ) ) ) = 0 ) ) ) )
10522               = 0 );
10523      wr6: ( SIZEOF( QUERY ( gcs <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10524               + 'GEOMETRIC_CURVE_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( pline <* QUERY ( elem <* gcs\geometric_set.
10525               elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF( elem ) ) ) | ( NOT ( SIZEOF(
10526               pline\polyline.points ) > 2 ) ) ) ) = 0 ) ) ) ) = 0 );
10527      wr7: ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
10528               TYPEOF( it ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
10529               'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION'  ) IN TYPEOF( mi\mapped_item.mapping_source.
10530               mapped_representation ) ) ) ) ) = 0 );
10531  END_ENTITY;
10532
10533  ENTITY geometry_with_local_irregularity
10534    ABSTRACT SUPERTYPE OF ( ONEOF ( extreme_patch_width_variation, zero_surface_normal, abrupt_change_of_surface_normal ) )
10535    SUBTYPE OF ( inapt_geometry );
10536  END_ENTITY;
10537
10538  ENTITY geometry_with_local_near_degeneracy
10539    ABSTRACT SUPERTYPE OF ( ONEOF ( curve_with_small_curvature_radius, short_length_curve_segment,
10540        surface_with_small_curvature_radius, small_area_surface_patch, narrow_surface_patch, indistinct_surface_knots,
10541        indistinct_curve_knots, nearly_degenerate_surface_boundary, nearly_degenerate_surface_patch ) )
10542    SUBTYPE OF ( inapt_geometry );
10543  END_ENTITY;
10544
10545  ENTITY global_assignment
10546    SUBTYPE OF ( representation_item_relationship );
10547  END_ENTITY;
10548
10549  ENTITY global_uncertainty_assigned_context
10550    SUBTYPE OF ( representation_context );
10551      uncertainty  : SET [1 : ?] OF uncertainty_measure_with_unit;
10552  END_ENTITY;
10553
10554  ENTITY global_unit_assigned_context
10555    SUBTYPE OF ( representation_context );
10556      units  : SET [1 : ?] OF unit;
10557  END_ENTITY;
10558
10559  ENTITY ground_fact
10560    SUBTYPE OF ( atomic_formula );
10561  END_ENTITY;
10562
10563  ENTITY group
10564    SUPERTYPE OF ( ONEOF ( change_group, change_element ) );
10565      name         : label;
10566      description  : OPTIONAL text;
10567    DERIVE
10568      id  : identifier := get_id_value( SELF );
10569    WHERE
10570      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
10571  END_ENTITY;
10572
10573  ENTITY group_assignment
10574    ABSTRACT SUPERTYPE OF ( ONEOF ( current_change_element_assignment, previous_change_element_assignment,
10575        change_group_assignment ) );
10576      assigned_group  : group;
10577    DERIVE
10578      role  : object_role := get_role( SELF );
10579    WHERE
10580      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
10581               1 );
10582  END_ENTITY;
10583
10584  ENTITY group_relationship;
10585      name            : label;
10586      description     : OPTIONAL text;
10587      relating_group  : group;
10588      related_group   : group;
10589  END_ENTITY;
10590
10591  ENTITY half_space_2d
10592    SUBTYPE OF ( primitive_2d );
10593      base_curve      : curve;
10594      agreement_flag  : BOOLEAN;
10595  END_ENTITY;
10596
10597  ENTITY half_space_solid
10598    SUBTYPE OF ( geometric_representation_item );
10599      base_surface    : surface;
10600      agreement_flag  : BOOLEAN;
10601  END_ENTITY;
10602
10603  ENTITY hardness_representation
10604    SUBTYPE OF ( representation );
10605    WHERE
10606      wr1: ( ( 2 <= SIZEOF( SELF.items ) ) AND ( SIZEOF( SELF.items ) <= 4 ) AND ( ( SIZEOF( QUERY ( i <* items | ( ( (
10607               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DESCRIPTIVE_REPRESENTATION_ITEM' ) IN TYPEOF( i ) ) AND ( i
10608               .name IN [ 'measuring method', 'measuring position'] ) ) ) ) + SIZEOF( QUERY ( i <* items | ( ( SIZEOF( [
10609               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MEASURE_REPRESENTATION_ITEM',
10610               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'VALUE_RANGE'] * TYPEOF( i ) ) = 1 ) AND ( i.name IN [ 'depth',
10611               'hardness' ] ) ) ) ) ) = SIZEOF( SELF.items ) ) );
10612      wr2: ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'measuring method' ) ) ) = 1 );
10613      wr3: ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'hardness' ) ) ) = 1 );
10614      wr4: ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'measuring position' ) ) ) <= 1 );
10615      wr5: ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'depth' ) ) ) <= 1 );
10616      wr6: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' +
10617               'USED_REPRESENTATION' ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( SELF,
10618               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION' )
10619               | ( SIZEOF( QUERY ( gpa <* USEDIN( pdr.definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
10620               'GENERAL_PROPERTY_ASSOCIATION.'  + 'DERIVED_DEFINITION' ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10621               + 'GENERAL_PROPERTY' ) IN TYPEOF( gpa.base_definition ) ) AND ( gpa\general_property_association.base_definition\
10622               general_property.name = 'surface_condition' ) ) ) ) = 1 ) ) ) = 1 ) );
10623  END_ENTITY;
10624
10625  ENTITY hidden_element_over_riding_styled_item
10626    SUBTYPE OF ( context_dependent_over_riding_styled_item );
10627      SELF\context_dependent_over_riding_styled_item.style_context : LIST [1 : 1] OF presentation_view;
10628      SELF\styled_item.item                  : camera_image;
10629    INVERSE
10630      container : SET [1 : ?] OF presentation_view FOR items;
10631    WHERE
10632      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAMERA_MODEL_D3_WITH_HLHSR' IN TYPEOF( SELF.item\mapped_item.
10633               mapping_source.mapping_origin ) );
10634  END_ENTITY;
10635
10636  ENTITY high_degree_axi_symmetric_surface
10637    SUBTYPE OF ( overcomplex_geometry );
10638      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10639      approximation_tolerance                : length_measure;
10640    WHERE
10641      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
10642               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
10643               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
10644               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
10645      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
10646      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
10647      wr4: validate_locations_of_extreme_value_type( SELF, [] );
10648      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
10649  END_ENTITY;
10650
10651  ENTITY high_degree_conic
10652    SUBTYPE OF ( overcomplex_geometry );
10653      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10654      approximation_tolerance                : length_measure;
10655    WHERE
10656      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
10657               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
10658               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
10659               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
10660      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
10661      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] );
10662      wr4: validate_locations_of_extreme_value_type( SELF, [] );
10663      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
10664  END_ENTITY;
10665
10666  ENTITY high_degree_linear_curve
10667    SUBTYPE OF ( overcomplex_geometry );
10668      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10669      approximation_tolerance                : length_measure;
10670    WHERE
10671      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
10672               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
10673               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
10674               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
10675      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
10676      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] );
10677      wr4: validate_locations_of_extreme_value_type( SELF, [] );
10678      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
10679  END_ENTITY;
10680
10681  ENTITY high_degree_planar_surface
10682    SUBTYPE OF ( overcomplex_geometry );
10683      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
10684      approximation_tolerance                : length_measure;
10685    WHERE
10686      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
10687               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
10688               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
10689               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
10690      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
10691      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
10692      wr4: validate_locations_of_extreme_value_type( SELF, [] );
10693      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
10694  END_ENTITY;
10695
10696  ENTITY high_order_kinematic_pair
10697    ABSTRACT SUPERTYPE OF ( ONEOF ( linear_flexible_and_planar_curve_pair, point_on_surface_pair, point_on_planar_curve_pair,
10698        planar_curve_pair, surface_pair ) )
10699    SUBTYPE OF ( kinematic_pair );
10700    WHERE
10701      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT (
10702               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
10703  END_ENTITY;
10704
10705  ENTITY hole_bottom
10706    SUBTYPE OF ( shape_aspect );
10707    WHERE
10708      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
10709      wr2 : ( SELF.description IN [ 'through', 'flat', 'flat with radius', 'flat with taper', 'spherical', 'conical'] );
10710      wr3 : ( ( NOT ( SELF.description = 'through' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10711                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( USEDIN( pd,
10712                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) ) = 0 ) ) ) )
10713                = 0 ) );
10714      wr4 : ( ( NOT ( SELF.description IN [ 'flat with radius', 'flat with taper', 'spherical', 'conical'] ) ) OR ( SIZEOF(
10715                QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) |
10716                ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10717                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10718                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
10719      wr5 : ( ( NOT ( SELF.description = 'flat' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10720                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10721                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10722                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10723                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
10724                used_representation.items ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10725      wr6 : ( ( NOT ( SELF.description IN [ 'flat with radius', 'spherical'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10726                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10727                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10728                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10729                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
10730                used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10731      wr7 : ( ( NOT ( SELF.description = 'flat with taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10732                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10733                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10734                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10735                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
10736                used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10737      wr8 : ( ( NOT ( SELF.description = 'conical' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10738                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10739                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10740                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10741                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
10742                used_representation.items ) >= 1 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 2 ) ) ) ) = 0 ) ) ) ) =
10743                0 ) );
10744      wr9 : ( ( SELF.description = 'through' ) OR ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF,
10745                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar.
10746                description = 'hole bottom usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10747                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( fcr.name IN [ 'hole depth start', 'hole depth end'] ) ) )
10748                >= 1 ) );
10749      wr10: ( ( NOT ( SELF.description = 'flat with radius' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10750                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10751                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10752                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10753                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10754                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10755                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
10756                TYPEOF( it ) ) = 2 ) AND ( it.name = 'corner radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10757      wr11: ( ( NOT ( SELF.description = 'spherical' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10758                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10759                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10760                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10761                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10762                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10763                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
10764                TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10765      wr12: ( ( NOT ( SELF.description = 'conical' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10766                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10767                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10768                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10769                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10770                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10771                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
10772                TYPEOF( it ) ) = 2 ) AND ( it.name = 'tip radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10773      wr13: ( ( NOT ( SELF.description = 'conical' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10774                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10775                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10776                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10777                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10778                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10779                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
10780                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'tip angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10781      wr14: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10782                + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar.description = 'hole bottom usage' ) AND (
10783                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
10784                fcr.related_shape_aspect.description = 'bottom condition occurrence' ) AND (
10785                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE'  IN TYPEOF( fcr.related_shape_aspect.of_shape.
10786                definition ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HOLE_BOTTOM' IN TYPEOF( fcr.
10787                relating_shape_aspect ) ) ) ) ) >= 1 );
10788      wr15: ( ( NOT ( SELF.description = 'flat with taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10789                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10790                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10791                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10792                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10793                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10794                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
10795                TYPEOF( it ) ) = 2 ) AND ( it.name = 'final diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10796      wr16: ( ( NOT ( SELF.description = 'flat with taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
10797                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
10798                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10799                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10800                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
10801                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10802                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
10803                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'taper diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
10804  END_ENTITY;
10805
10806  ENTITY hole_in_panel
10807    SUBTYPE OF ( feature_definition );
10808    WHERE
10809      wr1: ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'hole profile' ) AND ( sa.description =
10810               'closed profile occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
10811               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
10812               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
10813               description = 'profile usage' ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10814               + 'CIRCULAR_CLOSED_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE',
10815               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
10816               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ] * TYPEOF( sar.relating_shape_aspect ) ) =
10817               1 ) ) ) ) = 1 ) ) ) ) = 1 );
10818      wr2: ( SIZEOF( get_property_definition_representations( SELF ) ) = SIZEOF( QUERY ( pdr <*
10819               get_property_definition_representations( SELF ) | ( SIZEOF( pdr.used_representation.items ) = 1 ) ) ) );
10820  END_ENTITY;
10821
10822  ENTITY homogeneous_linear_function
10823    SUBTYPE OF ( maths_function, unary_generic_expression );
10824      SELF\unary_generic_expression.operand  : maths_function;
10825      sum_index                              : one_or_two;
10826    DERIVE
10827      mat  : maths_function := SELF\unary_generic_expression.operand;
10828    WHERE
10829      wr1: function_is_2d_table( mat );
10830      wr2: ( ( space_dimension( mat.range ) = 1 ) AND subspace_of_es( factor1( mat.range ), es_numbers ) );
10831  END_ENTITY;
10832
10833  ENTITY homokinetic_pair
10834    SUBTYPE OF ( universal_pair );
10835    WHERE
10836      wr1: ( NOT EXISTS( SELF.input_skew_angle ) );
10837  END_ENTITY;
10838
10839  ENTITY hyperbola
10840    SUBTYPE OF ( conic );
10841      semi_axis       : positive_length_measure;
10842      semi_imag_axis  : positive_length_measure;
10843  END_ENTITY;
10844
10845  ENTITY id_attribute;
10846      attribute_value  : identifier;
10847      identified_item  : id_attribute_select;
10848  END_ENTITY;
10849
10850  ENTITY identification_assignment
10851    ABSTRACT SUPERTYPE;
10852      assigned_id  : identifier;
10853      role         : identification_role;
10854  END_ENTITY;
10855
10856  ENTITY identification_role;
10857      name         : label;
10858      description  : OPTIONAL text;
10859  END_ENTITY;
10860
10861  ENTITY illuminance_measure_with_unit
10862    SUBTYPE OF ( measure_with_unit );
10863    WHERE
10864      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ILLUMINANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
10865  END_ENTITY;
10866
10867  ENTITY illuminance_unit
10868    SUBTYPE OF ( derived_unit );
10869    WHERE
10870      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.lux ) );
10871  END_ENTITY;
10872
10873  ENTITY implicit_explicit_positioned_sketch_relationship
10874    SUBTYPE OF ( representation_item_relationship );
10875      SELF\representation_item_relationship.relating_representation_item : repositioned_neutral_sketch;
10876      SELF\representation_item_relationship.related_representation_item : positioned_sketch;
10877    WHERE
10878      wr1: ( SIZEOF( QUERY ( q <* using_representations( SELF\representation_item_relationship.related_representation_item ) |
10879               item_in_context( SELF\representation_item_relationship.relating_representation_item, q.context_of_items ) ) ) > 0 );
10880  END_ENTITY;
10881
10882  ENTITY implicit_intersection_curve
10883    SUBTYPE OF ( implicit_planar_curve );
10884      external_surface  : surface;
10885  END_ENTITY;
10886
10887  ENTITY implicit_model_intersection_curve
10888    SUBTYPE OF ( implicit_planar_curve );
10889      intersected_model  : surface_or_solid_model;
10890  END_ENTITY;
10891
10892  ENTITY implicit_planar_curve
10893    ABSTRACT SUPERTYPE OF ( ONEOF ( implicit_intersection_curve, implicit_projected_curve, implicit_model_intersection_curve,
10894        implicit_silhouette_curve ) )
10895    SUBTYPE OF ( curve, auxiliary_geometric_representation_item );
10896      using_sketch             : positioned_sketch;
10897      computed_representation  : curve;
10898    DERIVE
10899      curve_plane  : plane := get_plane_of_implicit_geometry( using_sketch );
10900    WHERE
10901      wr1: ( SIZEOF( TYPEOF( computed_representation ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.IMPLICIT_PLANAR_CURVE',
10902               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' ] ) = 0 );
10903  END_ENTITY;
10904
10905  ENTITY implicit_planar_intersection_point
10906    SUBTYPE OF ( implicit_point_on_plane );
10907      external_curve  : curve;
10908  END_ENTITY;
10909
10910  ENTITY implicit_planar_projection_point
10911    SUBTYPE OF ( implicit_point_on_plane );
10912      external_point        : point;
10913      projection_direction  : direction;
10914  END_ENTITY;
10915
10916  ENTITY implicit_point_on_plane
10917    ABSTRACT SUPERTYPE OF ( ONEOF ( implicit_planar_intersection_point, implicit_planar_projection_point ) )
10918    SUBTYPE OF ( point, auxiliary_geometric_representation_item );
10919      using_sketch             : positioned_sketch;
10920      computed_representation  : cartesian_point;
10921    DERIVE
10922      plane_of_point  : plane := get_plane_of_implicit_geometry( using_sketch );
10923    WHERE
10924      wr1: ( ( plane_of_point\elementary_surface.position.location = computed_representation ) XOR ( dot_product( plane_of_point\
10925               elementary_surface.position.p[3], get_relative_direction_2points( plane_of_point\elementary_surface.position.
10926               location, computed_representation ) ) = 0 ) );
10927      wr2: ( SIZEOF( TYPEOF( computed_representation ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10928               + 'IMPLICIT_POINT_ON_PLANE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA'] ) = 0 );
10929  END_ENTITY;
10930
10931  ENTITY implicit_projected_curve
10932    SUBTYPE OF ( implicit_planar_curve );
10933      external_curve        : curve;
10934      projection_direction  : direction;
10935  END_ENTITY;
10936
10937  ENTITY implicit_silhouette_curve
10938    SUBTYPE OF ( implicit_planar_curve );
10939      silhouetted_model  : surface_or_solid_model;
10940      view_direction     : direction;
10941  END_ENTITY;
10942
10943  ENTITY imported_curve_function
10944    SUBTYPE OF ( maths_function, generic_literal );
10945      geometry           : curve;
10946      parametric_domain  : tuple_space;
10947    WHERE
10948      wr1: expression_is_constant( parametric_domain );
10949  END_ENTITY;
10950
10951  ENTITY imported_point_function
10952    SUBTYPE OF ( maths_function, generic_literal );
10953      geometry  : point;
10954  END_ENTITY;
10955
10956  ENTITY imported_surface_function
10957    SUBTYPE OF ( maths_function, generic_literal );
10958      geometry           : surface;
10959      parametric_domain  : tuple_space;
10960    WHERE
10961      wr1: expression_is_constant( parametric_domain );
10962  END_ENTITY;
10963
10964  ENTITY imported_volume_function
10965    SUBTYPE OF ( maths_function, generic_literal );
10966      geometry           : volume;
10967      parametric_domain  : tuple_space;
10968    WHERE
10969      wr1: expression_is_constant( parametric_domain );
10970  END_ENTITY;
10971
10972  ENTITY inappropriate_element_visibility
10973    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
10974    WHERE
10975      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'] );
10976  END_ENTITY;
10977
10978  ENTITY inappropriate_use_of_layer
10979    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
10980    WHERE
10981      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
10982               + 'PRESENTATION_LAYER_ASSIGNMENT' ] );
10983  END_ENTITY;
10984
10985  ENTITY inapt_data
10986    ABSTRACT SUPERTYPE OF ( ONEOF ( inapt_topology, inapt_geometry, inapt_topology_and_geometry_relationship,
10987        inapt_manifold_solid_brep ) )
10988    SUBTYPE OF ( shape_data_quality_criterion );
10989  END_ENTITY;
10990
10991  ENTITY inapt_geometry
10992    ABSTRACT SUPERTYPE OF ( ONEOF ( nearly_degenerate_geometry, discontinuous_geometry, self_intersecting_geometry,
10993        geometry_with_local_near_degeneracy, overlapping_geometry, multiply_defined_geometry, geometry_with_local_irregularity,
10994        overcomplex_geometry ) )
10995    SUBTYPE OF ( inapt_data );
10996  END_ENTITY;
10997
10998  ENTITY inapt_manifold_solid_brep
10999    ABSTRACT SUPERTYPE OF ( ONEOF ( partly_overlapping_solids, small_volume_solid, multiply_defined_solids, entirely_narrow_solid,
11000        solid_with_excessive_number_of_voids ) )
11001    SUBTYPE OF ( inapt_data );
11002  END_ENTITY;
11003
11004  ENTITY inapt_topology
11005    ABSTRACT SUPERTYPE OF ( ONEOF ( free_edge, non_manifold_at_edge, non_manifold_at_vertex, over_used_vertex ) )
11006    SUBTYPE OF ( inapt_data );
11007  END_ENTITY;
11008
11009  ENTITY inapt_topology_and_geometry_relationship
11010    ABSTRACT SUPERTYPE OF ( ONEOF ( topology_related_to_nearly_degenerate_geometry, geometric_gap_in_topology,
11011        non_smooth_geometry_transition_across_edge, topology_related_to_self_intersecting_geometry,
11012        steep_geometry_transition_across_edge, topology_related_to_overlapping_geometry,
11013        topology_related_to_multiply_defined_geometry, overcomplex_topology_and_geometry_relationship ) )
11014    SUBTYPE OF ( inapt_data );
11015  END_ENTITY;
11016
11017  ENTITY incidence_assembly_constraint
11018    SUBTYPE OF ( binary_assembly_constraint, incidence_geometric_constraint );
11019  END_ENTITY;
11020
11021  ENTITY incidence_geometric_constraint
11022    SUBTYPE OF ( explicit_geometric_constraint );
11023      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF geometric_constraint_element;
11024      SELF\explicit_constraint.reference_elements : SET [0 : ?] OF geometric_constraint_element;
11025      near_points                            : SET [0 : ?] OF near_point_relationship;
11026    WHERE
11027      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) > 0 ) OR ( SIZEOF( SELF\explicit_constraint.
11028               constrained_elements ) = 2 ) );
11029      wr2: ( SIZEOF( near_points ) <= SIZEOF( SELF\explicit_constraint.reference_elements ) );
11030      wr3: ( SIZEOF( QUERY ( q <* near_points | ( NOT ( q\representation_item_relationship.relating_representation_item IN SELF\
11031               explicit_constraint.reference_elements ) ) ) ) = 0 );
11032  END_ENTITY;
11033
11034  ENTITY included_text_block
11035    SUBTYPE OF ( mapped_item );
11036    WHERE
11037      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRUCTURED_TEXT_REPRESENTATION' IN TYPEOF( SELF\mapped_item.
11038               mapping_source.mapped_representation ) );
11039  END_ENTITY;
11040
11041  ENTITY inclusion_product_concept_feature
11042    SUBTYPE OF ( conditional_concept_feature );
11043    WHERE
11044      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PACKAGE_PRODUCT_CONCEPT_FEATURE' ) IN TYPEOF( SELF ) ) );
11045      wr2: ( ( SIZEOF( QUERY ( cfr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11046               'CONCEPT_FEATURE_RELATIONSHIP.RELATING_PRODUCT_CONCEPT_FEATURE'  ) | ( (
11047               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' ) IN TYPEOF(
11048               cfr ) ) ) ) + SIZEOF( QUERY ( cfr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11049               'CONCEPT_FEATURE_RELATIONSHIP.RELATED_PRODUCT_CONCEPT_FEATURE'  ) | ( (
11050               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' ) IN TYPEOF(
11051               cfr ) ) ) ) ) = 0 );
11052      wr3: ( SELF.condition.conditional_operator.name = 'implication' );
11053  END_ENTITY;
11054
11055  ENTITY inconsistent_adjacent_face_normals
11056    SUBTYPE OF ( erroneous_topology );
11057      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11058    WHERE
11059      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11060      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11061               'CLOSED_OR_OPEN_SHELL_SELECT' ] );
11062      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
11063      wr4: validate_accuracy_types( SELF, [] );
11064  END_ENTITY;
11065
11066  ENTITY inconsistent_curve_transition_code
11067    SUBTYPE OF ( erroneous_geometry );
11068      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11069      angle_tolerance                        : plane_angle_measure;
11070      curvature_ratio_tolerance              : ratio_measure;
11071      distance_tolerance                     : length_measure;
11072      flat_curvature_radius_tolerance        : length_measure;
11073    WHERE
11074      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11075      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE'] );
11076      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11077               'COMPOSITE_CURVE_TRANSITION_LOCATOR' ] );
11078      wr4: validate_accuracy_types( SELF, [] );
11079  END_ENTITY;
11080
11081  ENTITY inconsistent_edge_and_curve_directions
11082    SUBTYPE OF ( erroneous_topology_and_geometry_relationship );
11083      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11084      distance_tolerance                     : length_measure;
11085    WHERE
11086      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11087      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
11088      wr3: validate_locations_of_extreme_value_type( SELF, [] );
11089      wr4: validate_accuracy_types( SELF, [] );
11090  END_ENTITY;
11091
11092  ENTITY inconsistent_element_reference
11093    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
11094    WHERE
11095      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM'] );
11096  END_ENTITY;
11097
11098  ENTITY inconsistent_face_and_closed_shell_normals
11099    SUBTYPE OF ( erroneous_topology_and_geometry_relationship );
11100      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11101    WHERE
11102      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11103      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
11104      wr3: validate_locations_of_extreme_value_type( SELF, [] );
11105      wr4: validate_accuracy_types( SELF, [] );
11106  END_ENTITY;
11107
11108  ENTITY inconsistent_face_and_surface_normals
11109    SUBTYPE OF ( erroneous_topology_and_geometry_relationship );
11110      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11111    WHERE
11112      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11113      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
11114      wr3: validate_locations_of_extreme_value_type( SELF, [] );
11115      wr4: validate_accuracy_types( SELF, [] );
11116  END_ENTITY;
11117
11118  ENTITY inconsistent_surface_transition_code
11119    SUBTYPE OF ( erroneous_geometry );
11120      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11121      angle_tolerance                        : plane_angle_measure;
11122      curvature_ratio_tolerance              : ratio_measure;
11123      distance_tolerance                     : length_measure;
11124      flat_curvature_radius_tolerance        : length_measure;
11125    WHERE
11126      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11127      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11128               + 'RECTANGULAR_COMPOSITE_SURFACE' ] );
11129      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11130               'RECTANGULAR_COMPOSITE_SURFACE_TRANSITION_LOCATOR' ] );
11131      wr4: validate_accuracy_types( SELF, [] );
11132  END_ENTITY;
11133
11134  ENTITY index_expression
11135    SUBTYPE OF ( string_expression, binary_generic_expression );
11136    DERIVE
11137      operand  : generic_expression := SELF\binary_generic_expression.operands[1];
11138      index    : generic_expression := SELF\binary_generic_expression.operands[2];
11139    WHERE
11140      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF( operand ) ) AND (
11141               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION'  IN TYPEOF( index ) ) );
11142      wr2: is_int_expr( index );
11143  END_ENTITY;
11144
11145  ENTITY indirectly_selected_elements
11146    SUBTYPE OF ( user_selected_elements );
11147      indirectly_picked_items  : SET [1 : ?] OF representation_item;
11148  END_ENTITY;
11149
11150  ENTITY indirectly_selected_shape_elements
11151    SUBTYPE OF ( indirectly_selected_elements, user_selected_shape_elements );
11152      SELF\indirectly_selected_elements.indirectly_picked_items : SET [1 : ?] OF shape_representation_item;
11153  END_ENTITY;
11154
11155  ENTITY indistinct_curve_knots
11156    SUBTYPE OF ( geometry_with_local_near_degeneracy );
11157      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
11158    WHERE
11159      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
11160               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
11161               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' IN value_limit_type( SELF\
11162               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
11163      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' );
11164      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE_WITH_KNOTS'] );
11165      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11166               'B_SPLINE_CURVE_KNOT_LOCATOR' ] );
11167      wr5: validate_accuracy_types( SELF, [] );
11168  END_ENTITY;
11169
11170  ENTITY indistinct_surface_knots
11171    SUBTYPE OF ( geometry_with_local_near_degeneracy );
11172      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
11173    WHERE
11174      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
11175               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
11176               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' IN value_limit_type( SELF\
11177               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
11178      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARAMETER_VALUE' );
11179      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE_WITH_KNOTS'] );
11180      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11181               'B_SPLINE_SURFACE_KNOT_LOCATOR' ] );
11182      wr5: validate_accuracy_types( SELF, [] );
11183  END_ENTITY;
11184
11185  ENTITY inductance_measure_with_unit
11186    SUBTYPE OF ( measure_with_unit );
11187    WHERE
11188      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDUCTANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
11189  END_ENTITY;
11190
11191  ENTITY inductance_unit
11192    SUBTYPE OF ( derived_unit );
11193    WHERE
11194      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.henry ) );
11195  END_ENTITY;
11196
11197  ENTITY information_right
11198    SUBTYPE OF ( action_method );
11199  END_ENTITY;
11200
11201  ENTITY information_usage_right
11202    SUBTYPE OF ( action_method );
11203  END_ENTITY;
11204
11205  ENTITY instance_attribute_reference
11206    SUBTYPE OF ( variable_semantics );
11207      attribute_name   : attribute_identifier;
11208      owning_instance  : representation_item;
11209  END_ENTITY;
11210
11211  ENTITY instance_report_item_with_extreme_instances
11212    SUBTYPE OF ( shape_data_quality_inspection_instance_report_item );
11213      extreme_instances  : LIST [1 : ?] OF extreme_instance;
11214  END_ENTITY;
11215
11216  ENTITY instance_usage_context_assignment
11217    SUBTYPE OF ( product_definition_context );
11218      items  : SET [1 : ?] OF instance_usage_context_select;
11219  END_ENTITY;
11220
11221  ENTITY instanced_feature
11222    SUBTYPE OF ( feature_definition, shape_aspect );
11223    WHERE
11224      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
11225      wr2: SELF.product_definitional;
11226  END_ENTITY;
11227
11228  ENTITY int_literal
11229    SUBTYPE OF ( literal_number );
11230      SELF\literal_number.the_value  : INTEGER;
11231  END_ENTITY;
11232
11233  ENTITY int_numeric_variable
11234    SUBTYPE OF ( numeric_variable );
11235  END_ENTITY;
11236
11237  ENTITY int_value_function
11238    SUBTYPE OF ( value_function );
11239  END_ENTITY;
11240
11241  ENTITY integer_defined_function
11242    ABSTRACT SUPERTYPE
11243    SUBTYPE OF ( numeric_defined_function );
11244  END_ENTITY;
11245
11246  ENTITY integer_interval_from_min
11247    SUBTYPE OF ( maths_space, generic_literal );
11248      min  : INTEGER;
11249  END_ENTITY;
11250
11251  ENTITY integer_interval_to_max
11252    SUBTYPE OF ( maths_space, generic_literal );
11253      max  : INTEGER;
11254  END_ENTITY;
11255
11256  ENTITY integer_representation_item
11257    SUBTYPE OF ( representation_item, int_literal );
11258  END_ENTITY;
11259
11260  ENTITY integer_tuple_literal
11261    SUBTYPE OF ( generic_literal );
11262      lit_value  : LIST [1 : ?] OF INTEGER;
11263  END_ENTITY;
11264
11265  ENTITY interfaced_group_component
11266    SUBTYPE OF ( assembly_group_component );
11267  END_ENTITY;
11268
11269  ENTITY interpolated_configuration_representation
11270    SUBTYPE OF ( representation );
11271      SELF\representation.context_of_items  : geometric_representation_context_with_parameter;
11272      SELF\representation.items             : SET [1 : ?] OF interpolated_configuration_sequence;
11273  END_ENTITY;
11274
11275  ENTITY interpolated_configuration_segment
11276    SUBTYPE OF ( founded_item );
11277      state          : mechanism_state_representation;
11278      t_parameter    : parameter_value;
11279      interpolation  : interpolation_type;
11280  END_ENTITY;
11281
11282  ENTITY interpolated_configuration_sequence
11283    SUBTYPE OF ( representation_item );
11284      segments  : LIST [2 : ?] OF interpolated_configuration_segment;
11285    DERIVE
11286      n_segments            : INTEGER := SIZEOF( segments );
11287      closed_interpolation  : LOGICAL := segments[n_segments].interpolation <> discontinuous_interpolation_type;
11288      configured_mechanism  : mechanism_representation := segments[1].state.represented_mechanism;
11289    WHERE
11290      wr1: ( SIZEOF( QUERY ( ics <* segments | ( ics.state.represented_mechanism :<>: configured_mechanism ) ) ) = 0 );
11291  END_ENTITY;
11292
11293  ENTITY intersecting_connected_face_sets
11294    SUBTYPE OF ( topology_related_to_self_intersecting_geometry );
11295      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11296      interference_tolerance                 : length_measure;
11297    WHERE
11298      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11299      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET',
11300               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET' ] );
11301      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11302               'POINT_ON_FACE_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POINT_ON_FACE_SURFACE'] );
11303      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
11304  END_ENTITY;
11305
11306  ENTITY intersecting_loops_in_face
11307    SUBTYPE OF ( erroneous_topology_and_geometry_relationship );
11308      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11309      interference_tolerance                 : length_measure;
11310    WHERE
11311      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11312      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE'] );
11313      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
11314               'POINT_ON_EDGE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POINT_ON_EDGE_CURVE'] );
11315      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
11316  END_ENTITY;
11317
11318  ENTITY intersecting_shells_in_solid
11319    SUBTYPE OF ( erroneous_manifold_solid_brep );
11320      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
11321      interference_tolerance                 : length_measure;
11322    WHERE
11323      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
11324      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS'] );
11325      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] );
11326      wr4: validate_accuracy_types( SELF, [] );
11327  END_ENTITY;
11328
11329  ENTITY intersection_curve
11330    SUBTYPE OF ( surface_curve );
11331    WHERE
11332      wr1: ( SIZEOF( SELF\surface_curve.associated_geometry ) = 2 );
11333      wr2: ( associated_surface( SELF\surface_curve.associated_geometry[1] ) <> associated_surface( SELF\surface_curve.
11334               associated_geometry[2] ) );
11335  END_ENTITY;
11336
11337  ENTITY interval_expression
11338    SUBTYPE OF ( boolean_expression, multiple_arity_generic_expression );
11339    DERIVE
11340      interval_low   : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
11341      interval_item  : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
11342      interval_high  : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
11343    WHERE
11344      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION' IN TYPEOF( interval_low ) ) AND (
11345               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION'  IN TYPEOF( interval_item ) ) AND (
11346               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPRESSION'  IN TYPEOF( interval_high ) ) );
11347      wr2: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF( SELF.interval_low ) ) AND (
11348               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION'  IN TYPEOF( SELF.interval_high ) ) AND (
11349               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION'  IN TYPEOF( SELF.interval_item ) ) ) OR ( (
11350               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION'  IN TYPEOF( SELF.interval_low ) ) AND (
11351               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION'  IN TYPEOF( SELF.interval_item ) ) AND (
11352               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION'  IN TYPEOF( SELF.interval_high ) ) ) );
11353  END_ENTITY;
11354
11355  ENTITY invisibility;
11356      invisible_items  : SET [1 : ?] OF invisible_item;
11357  END_ENTITY;
11358
11359  ENTITY iso4217_currency
11360    SUBTYPE OF ( currency );
11361  END_ENTITY;
11362
11363  ENTITY item_defined_transformation;
11364      name              : label;
11365      description       : OPTIONAL text;
11366      transform_item_1  : representation_item;
11367      transform_item_2  : representation_item;
11368  END_ENTITY;
11369
11370  ENTITY item_identified_representation_usage;
11371      name                 : label;
11372      description          : OPTIONAL text;
11373      definition           : item_identified_representation_usage_definition;
11374      used_representation  : representation;
11375      identified_item      : item_identified_representation_usage_select;
11376    WHERE
11377      wr1: ( SELF.used_representation IN using_representations( SELF.identified_item ) );
11378  END_ENTITY;
11379
11380  ENTITY item_link_motion_relationship
11381    SUBTYPE OF ( link_motion_relationship );
11382      SELF\representation_relationship.rep_1 : shape_representation;
11383      item                                   : geometric_representation_item;
11384  END_ENTITY;
11385
11386  ENTITY joggle
11387    SUBTYPE OF ( feature_definition );
11388    WHERE
11389      wr1 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11390                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11391                used_representation ) ) AND ( NOT ( ( 5 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.
11392                used_representation.items ) <= 10 ) ) ) ) ) ) = 0 );
11393      wr2 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11394                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11395                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( NOT ( i.name IN [ 'orientation',
11396                'base radius 1' , 'base radius 2', 'direction angle 1', 'direction angle 2', 'height', 'slope angle 1',
11397                'slope angle 2' , 'top radius 1', 'top radius 2'] ) ) ) ) > 0 ) ) ) ) = 0 );
11398      wr3 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11399                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11400                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'direction angle 1' )
11401                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11402                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11403                = 1 );
11404      wr4 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11405                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11406                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'direction angle 2' )
11407                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11408                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11409                = 1 );
11410      wr5 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11411                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11412                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'height' ) AND (
11413                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11414                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11415                <= 1 );
11416      wr6 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11417                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11418                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'slope angle 1' )
11419                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11420                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11421                = 1 );
11422      wr7 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11423                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11424                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'slope angle 2' )
11425                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11426                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11427                = 1 );
11428      wr8 : ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'defining path' ) AND ( sa.description =
11429                'path feature component occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
11430                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
11431                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
11432                description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11433                + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sar.relating_shape_aspect ) ) AND ( sar.relating_shape_aspect.description
11434                = 'linear' ) ) ) ) = 1 ) ) ) ) = 1 );
11435      wr9 : ( SIZEOF( QUERY ( sa <* get_shape_aspects( SELF ) | ( ( sa.name = 'termination' ) AND ( sa.description =
11436                'joggle termination occurrence'  ) AND ( SIZEOF( QUERY ( sar <* USEDIN( sa,
11437                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
11438                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar.
11439                name = 'joggle termination usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.JOGGLE_TERMINATION' IN
11440                TYPEOF( sar.relating_shape_aspect ) ) ) ) ) = 1 ) ) ) ) = 1 );
11441      wr10: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11442                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11443                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'base radius 1' )
11444                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11445                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11446                <= 1 );
11447      wr11: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11448                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11449                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'base radius 2' )
11450                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11451                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11452                <= 1 );
11453      wr12: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11454                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11455                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'top radius 1' )
11456                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11457                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11458                <= 1 );
11459      wr13: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11460                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11461                used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'top radius 2' )
11462                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11463                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11464                <= 1 );
11465  END_ENTITY;
11466
11467  ENTITY joggle_termination
11468    SUBTYPE OF ( shape_aspect );
11469    WHERE
11470      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
11471      wr2: ( SELF.description IN [ 'value termination', 'face termination'] );
11472      wr3: ( ( SELF.description = 'value termination' ) XOR ( SIZEOF( QUERY ( pdr <*
11473               get_shape_aspect_property_definition_representations( SELF ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11474               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 0 ) );
11475      wr4: ( ( SELF.description <> 'value termination' ) OR ( SIZEOF( QUERY ( pdr <*
11476               get_shape_aspect_property_definition_representations( SELF ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11477               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( pdr.
11478               used_representation.items ) = 2 ) ) ) ) = 1 ) );
11479      wr5: ( ( SELF.description <> 'value termination' ) OR ( SIZEOF( QUERY ( pdr <*
11480               get_shape_aspect_property_definition_representations( SELF ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11481               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.
11482               used_representation.items | ( ( i.name = 'depth' ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11483               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
11484               TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) ) = 1 ) );
11485      wr6: ( ( SELF.description <> 'value termination' ) OR ( SIZEOF( QUERY ( pdr <*
11486               get_shape_aspect_property_definition_representations( SELF ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11487               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.
11488               used_representation.items | ( ( i.name = 'angle' ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11489               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
11490               * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) ) = 1 ) );
11491      wr7: ( SIZEOF( QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT_RELATIONSHIP.'
11492               + 'RELATING_SHAPE_ASPECT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
11493               IN TYPEOF( sar ) ) AND ( sar.name = 'joggle termination usage' ) AND (
11494               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.JOGGLE'  IN TYPEOF( sar.related_shape_aspect.of_shape.definition ) )
11495               AND ( sar.related_shape_aspect.of_shape.definition\characterized_object.name = 'termination' ) AND ( sar.
11496               related_shape_aspect.of_shape.definition\characterized_object.description = 'joggle termination occurrence' ) ) ) )
11497               = 1 );
11498  END_ENTITY;
11499
11500  ENTITY kinematic_analysis_consistency;
11501      control  : kinematic_control;
11502      result   : kinematic_analysis_result;
11503    WHERE
11504      wr1: ( control.controlled_mechanism :=: result.analysed_mechanism );
11505  END_ENTITY;
11506
11507  ENTITY kinematic_analysis_result;
11508      analysed_mechanism  : mechanism_representation;
11509      result              : kinematic_result;
11510  END_ENTITY;
11511
11512  ENTITY kinematic_control;
11513      controlled_mechanism          : mechanism_representation;
11514      contained_kinematic_programs  : kinematic_analysis_definition;
11515  END_ENTITY;
11516
11517  ENTITY kinematic_joint
11518    SUBTYPE OF ( edge );
11519      SELF\edge.edge_start  : kinematic_link;
11520      SELF\edge.edge_end    : kinematic_link;
11521    UNIQUE
11522      ur1 : SELF\edge.edge_start, SELF\edge.edge_end;
11523    WHERE
11524      wr1: ( edge_start :<>: edge_end );
11525  END_ENTITY;
11526
11527  ENTITY kinematic_link
11528    SUBTYPE OF ( vertex );
11529  END_ENTITY;
11530
11531  ENTITY kinematic_link_representation
11532    ABSTRACT SUPERTYPE OF ( ONEOF ( linear_flexible_link_representation, rigid_link_representation ) )
11533    SUBTYPE OF ( representation );
11534      SELF\representation.context_of_items  : geometric_representation_context;
11535      SELF\representation.items             : SET [1 : ?] OF kinematic_link_representation_items;
11536      represented_link                      : kinematic_link;
11537    INVERSE
11538      associated_shape_representation : SET [0 : 1] OF kinematic_link_representation_association FOR rep_1;
11539  END_ENTITY;
11540
11541  ENTITY kinematic_link_representation_association
11542    SUBTYPE OF ( representation_relationship );
11543      SELF\representation_relationship.rep_1 : kinematic_link_representation;
11544      SELF\representation_relationship.rep_2 : shape_representation;
11545    WHERE
11546      wr1: ( ( SELF\representation_relationship.rep_2.context_of_items :=: SELF\representation_relationship.rep_1.
11547               context_of_items ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11548               + 'REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION'  IN TYPEOF( SELF ) ) );
11549  END_ENTITY;
11550
11551  ENTITY kinematic_loop
11552    SUBTYPE OF ( edge_loop );
11553      SELF\path.edge_list  : LIST [1 : ?] OF UNIQUE oriented_joint;
11554  END_ENTITY;
11555
11556  ENTITY kinematic_pair
11557    ABSTRACT SUPERTYPE OF ( ONEOF ( high_order_kinematic_pair, low_order_kinematic_pair_with_motion_coupling,
11558        low_order_kinematic_pair ) ANDOR actuated_kinematic_pair )
11559    SUBTYPE OF ( geometric_representation_item, item_defined_transformation );
11560      joint                                  : kinematic_joint;
11561      SELF\item_defined_transformation.transform_item_1 : rigid_placement;
11562      SELF\item_defined_transformation.transform_item_2 : rigid_placement;
11563    DERIVE
11564      associated_link_representations_1      : SET [1 : ?] OF kinematic_link_representation := sort_link_associations(
11565                                                 link_representation_associations, TRUE );
11566      associated_link_representations_2      : SET [1 : ?] OF kinematic_link_representation := sort_link_associations(
11567                                                 link_representation_associations, FALSE );
11568      SELF\item_defined_transformation.name  : label := SELF\representation_item.name;
11569    INVERSE
11570      link_representation_associations : SET [1 : ?] OF pair_representation_relationship FOR transformation_operator;
11571  END_ENTITY;
11572
11573  ENTITY kinematic_path
11574    ABSTRACT SUPERTYPE OF ( ONEOF ( kinematic_path_defined_by_nodes, kinematic_path_defined_by_curves ) )
11575    SUBTYPE OF ( geometric_representation_item );
11576      segments  : LIST [1 : ?] OF kinematic_path_segment;
11577      t_start   : parameter_value;
11578    DERIVE
11579      n_segments   : INTEGER := SIZEOF( segments );
11580      closed_path  : LOGICAL := segments[n_segments].transition <> discontinuous;
11581    WHERE
11582      wr1: ( SIZEOF( QUERY ( using_rep <* using_representations( SELF ) | ( NOT (
11583               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT_WITH_PARAMETER'  IN TYPEOF(
11584               using_rep.context_of_items ) ) ) ) ) = 0 );
11585  END_ENTITY;
11586
11587  ENTITY kinematic_path_defined_by_curves
11588    SUBTYPE OF ( kinematic_path );
11589      SELF\kinematic_path.segments  : LIST [1 : ?] OF curve_based_path_with_orientation;
11590  END_ENTITY;
11591
11592  ENTITY kinematic_path_defined_by_nodes
11593    SUBTYPE OF ( kinematic_path );
11594      SELF\kinematic_path.segments  : LIST [1 : ?] OF path_node;
11595      placement_start               : placement;
11596  END_ENTITY;
11597
11598  ENTITY kinematic_path_segment
11599    ABSTRACT SUPERTYPE OF ( ONEOF ( path_node, curve_based_path_with_orientation ) )
11600    SUBTYPE OF ( founded_item );
11601      t_end       : parameter_value;
11602      transition  : transition_code;
11603  END_ENTITY;
11604
11605  ENTITY kinematic_property_definition_representation
11606    ABSTRACT SUPERTYPE OF ( ONEOF ( kinematic_property_topology_representation, kinematic_property_mechanism_representation ) )
11607    SUBTYPE OF ( property_definition_representation );
11608      SELF\property_definition_representation.definition : product_definition_kinematics;
11609  END_ENTITY;
11610
11611  ENTITY kinematic_property_mechanism_representation
11612    SUBTYPE OF ( kinematic_property_definition_representation );
11613      SELF\property_definition_representation.used_representation : mechanism_representation;
11614      base                                   : kinematic_link_representation;
11615    WHERE
11616      wr1: ( SIZEOF( QUERY ( i <* used_representation.items | ( ( base :=: i\representation_relationship.rep_1 ) OR ( base :=: i\
11617               representation_relationship.rep_2 ) ) ) ) > 0 );
11618  END_ENTITY;
11619
11620  ENTITY kinematic_property_topology_representation
11621    SUBTYPE OF ( kinematic_property_definition_representation );
11622      SELF\property_definition_representation.used_representation : kinematic_topology_representation_select;
11623      base                                   : kinematic_link;
11624    WHERE
11625      wr1: ( used_representation IN using_representations( base ) );
11626  END_ENTITY;
11627
11628  ENTITY kinematic_topology_directed_structure
11629    SUBTYPE OF ( representation );
11630      SELF\representation.items  : SET [1 : ?] OF oriented_joint;
11631      parent                     : kinematic_topology_structure;
11632    WHERE
11633      wr1: ( context_of_items :=: parent.context_of_items );
11634      wr2: ( get_kinematic_joints_from_oriented_joints( items ) <= parent.items );
11635  END_ENTITY;
11636
11637  ENTITY kinematic_topology_network_structure
11638    SUBTYPE OF ( representation );
11639      SELF\representation.items  : SET [1 : ?] OF kinematic_loop;
11640      parent                     : kinematic_topology_structure;
11641    WHERE
11642      wr1: ( context_of_items :=: parent.context_of_items );
11643      wr2: ( get_kinematic_joints_from_kinematic_loops( items ) <= parent.items );
11644  END_ENTITY;
11645
11646  ENTITY kinematic_topology_structure
11647    SUBTYPE OF ( representation );
11648      SELF\representation.items  : SET [1 : ?] OF kinematic_joint;
11649    WHERE
11650      wr1: ( SIZEOF( QUERY ( item <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF( item ) ) ) )
11651               = 0 );
11652  END_ENTITY;
11653
11654  ENTITY kinematic_topology_substructure
11655    SUBTYPE OF ( kinematic_topology_structure );
11656      parent  : kinematic_topology_structure;
11657    WHERE
11658      wr1: ( context_of_items :=: parent.context_of_items );
11659      wr2: ( SELF\kinematic_topology_structure.items <= parent\kinematic_topology_structure.items );
11660  END_ENTITY;
11661
11662  ENTITY kinematic_topology_tree_structure
11663    SUBTYPE OF ( kinematic_topology_directed_structure );
11664  END_ENTITY;
11665
11666  ENTITY known_source
11667    SUBTYPE OF ( external_source, pre_defined_item );
11668  END_ENTITY;
11669
11670  ENTITY laid_defined_transformation
11671    SUBTYPE OF ( transformation_with_derived_angle );
11672  END_ENTITY;
11673
11674  ENTITY laminate_table
11675    SUPERTYPE OF ( ONEOF ( part_laminate_table, zone_structural_makeup ) )
11676    SUBTYPE OF ( product_definition );
11677  END_ENTITY;
11678
11679  ENTITY language
11680    SUBTYPE OF ( group );
11681    WHERE
11682      wr1: ( SELF\group.name <> '' );
11683  END_ENTITY;
11684
11685  ENTITY leader_curve
11686    SUBTYPE OF ( annotation_curve_occurrence );
11687    WHERE
11688      wr1: ( SIZEOF( QUERY ( ldc <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_CALLOUT.'
11689               + 'CONTENTS'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'LEADER_DIRECTED_CALLOUT' ) IN TYPEOF(
11690               ldc ) ) ) ) >= 1 );
11691  END_ENTITY;
11692
11693  ENTITY leader_directed_callout
11694    SUBTYPE OF ( draughting_callout );
11695    WHERE
11696      wr1: ( SIZEOF( QUERY ( l_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11697               + 'LEADER_CURVE'  IN TYPEOF( l_1 ) ) ) ) >= 1 );
11698      wr2: ( SIZEOF( SELF\draughting_callout.contents ) >= 2 );
11699  END_ENTITY;
11700
11701  ENTITY leader_directed_dimension
11702    SUBTYPE OF ( leader_directed_callout );
11703    WHERE
11704      wr1: ( SIZEOF( QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF(
11705               con ) ) ) ) = 1 );
11706  END_ENTITY;
11707
11708  ENTITY leader_terminator
11709    SUBTYPE OF ( terminator_symbol );
11710    WHERE
11711      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_CURVE' IN TYPEOF( SELF\terminator_symbol.annotated_curve ) );
11712  END_ENTITY;
11713
11714  ENTITY length_function
11715    SUBTYPE OF ( numeric_expression, unary_generic_expression );
11716      SELF\unary_generic_expression.operand  : string_expression;
11717  END_ENTITY;
11718
11719  ENTITY length_measure_with_unit
11720    SUBTYPE OF ( measure_with_unit );
11721    WHERE
11722      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
11723  END_ENTITY;
11724
11725  ENTITY length_unit
11726    SUBTYPE OF ( named_unit );
11727    WHERE
11728      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 1 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
11729               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
11730               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
11731               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
11732  END_ENTITY;
11733
11734  ENTITY light_source
11735    SUPERTYPE OF ( ONEOF ( light_source_ambient, light_source_directional, light_source_positional, light_source_spot ) )
11736    SUBTYPE OF ( geometric_representation_item );
11737      light_colour  : colour;
11738    WHERE
11739      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'STYLED_ITEM.ITEM' ) ) = 0 );
11740  END_ENTITY;
11741
11742  ENTITY light_source_ambient
11743    SUBTYPE OF ( light_source );
11744  END_ENTITY;
11745
11746  ENTITY light_source_directional
11747    SUBTYPE OF ( light_source );
11748      orientation  : direction;
11749  END_ENTITY;
11750
11751  ENTITY light_source_positional
11752    SUBTYPE OF ( light_source );
11753      position              : cartesian_point;
11754      constant_attenuation  : REAL;
11755      distance_attenuation  : REAL;
11756  END_ENTITY;
11757
11758  ENTITY light_source_spot
11759    SUBTYPE OF ( light_source );
11760      position                : cartesian_point;
11761      orientation             : direction;
11762      concentration_exponent  : REAL;
11763      constant_attenuation    : REAL;
11764      distance_attenuation    : REAL;
11765      spread_angle            : positive_plane_angle_measure;
11766  END_ENTITY;
11767
11768  ENTITY like_expression
11769    SUBTYPE OF ( comparison_expression );
11770    WHERE
11771      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF( SELF\binary_generic_expression.
11772               operands[1] ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF( SELF\
11773               binary_generic_expression.operands[2] ) ) );
11774  END_ENTITY;
11775
11776  ENTITY limits_and_fits;
11777      form_variance  : label;
11778      zone_variance  : label;
11779      grade          : label;
11780      source         : text;
11781  END_ENTITY;
11782
11783  ENTITY line
11784    SUBTYPE OF ( curve );
11785      pnt  : cartesian_point;
11786      dir  : vector;
11787    WHERE
11788      wr1: ( dir.dim = pnt.dim );
11789  END_ENTITY;
11790
11791  ENTITY line_profile_tolerance
11792    SUBTYPE OF ( geometric_tolerance );
11793  END_ENTITY;
11794
11795  ENTITY linear_array_component_definition_link
11796    SUBTYPE OF ( product_definition, product_definition_relationship );
11797      SELF\product_definition_relationship.relating_product_definition : linear_array_placement_group_component;
11798      SELF\product_definition_relationship.related_product_definition : linear_array_placement_group_component;
11799    WHERE
11800      wr1: ( SELF\product_definition_relationship.related_product_definition :<>: SELF\product_definition_relationship.
11801               relating_product_definition );
11802      wr2: acyclic_product_definition_relationship( SELF, [SELF\product_definition_relationship.related_product_definition],
11803               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_ARRAY_COMPONENT_DEFINITION_LINK'  );
11804  END_ENTITY;
11805
11806  ENTITY linear_array_placement_group_component
11807    SUBTYPE OF ( array_placement_group );
11808  END_ENTITY;
11809
11810  ENTITY linear_dimension
11811    SUBTYPE OF ( dimension_curve_directed_callout );
11812  END_ENTITY;
11813
11814  ENTITY linear_flexible_and_pinion_pair
11815    SUBTYPE OF ( low_order_kinematic_pair_with_motion_coupling );
11816      pinion_radius  : length_measure;
11817    WHERE
11818      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
11819               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_FLEXIBLE_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
11820  END_ENTITY;
11821
11822  ENTITY linear_flexible_and_planar_curve_pair
11823    SUBTYPE OF ( high_order_kinematic_pair );
11824      pair_curve   : curve;
11825      orientation  : BOOLEAN;
11826    WHERE
11827      wr1: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( pair_curve IN r.items ) ) ) ) =
11828               0 );
11829      wr2: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
11830               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_FLEXIBLE_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
11831  END_ENTITY;
11832
11833  ENTITY linear_flexible_link_representation
11834    SUBTYPE OF ( kinematic_link_representation );
11835  END_ENTITY;
11836
11837  ENTITY linear_path
11838    SUBTYPE OF ( path_node );
11839    DERIVE
11840      SELF\kinematic_path_segment.transition : transition_code := continuous;
11841  END_ENTITY;
11842
11843  ENTITY linear_profile
11844    SUBTYPE OF ( shape_aspect );
11845    WHERE
11846      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
11847      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
11848               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11849               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11850               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
11851      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
11852               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11853               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11854               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
11855               used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 );
11856      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
11857               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11858               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11859               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
11860               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
11861               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
11862      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
11863               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11864               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11865               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
11866               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
11867               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
11868               TYPEOF( it ) ) = 2 ) AND ( it.name = 'profile length' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
11869  END_ENTITY;
11870
11871  ENTITY linearized_table_function
11872    SUBTYPE OF ( explicit_table_function, unary_generic_expression );
11873      SELF\unary_generic_expression.operand  : maths_function;
11874      first                                  : INTEGER;
11875    DERIVE
11876      source  : maths_function := SELF\unary_generic_expression.operand;
11877    WHERE
11878      wr1: function_is_1d_array( source );
11879      wr2: member_of( first, source\maths_function.domain );
11880  END_ENTITY;
11881
11882  ENTITY link_motion_relationship
11883    SUBTYPE OF ( definitional_representation_relationship, representation_relationship_with_transformation );
11884      SELF\representation_relationship.rep_1 : link_or_shape_representation;
11885      SELF\representation_relationship.rep_2 : link_motion_representation_along_path;
11886      SELF\representation_relationship_with_transformation.transformation_operator : link_motion_transformation;
11887    WHERE
11888      wr1: ( transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items );
11889      wr2: ( transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items );
11890  END_ENTITY;
11891
11892  ENTITY link_motion_representation_along_path
11893    SUPERTYPE OF ( ONEOF ( prescribed_path, resulting_path ) )
11894    SUBTYPE OF ( representation );
11895      SELF\representation.items             : SET [1 : ?] OF kinematic_path;
11896      SELF\representation.context_of_items  : geometric_representation_context_with_parameter;
11897  END_ENTITY;
11898
11899  ENTITY link_motion_transformation
11900    SUBTYPE OF ( item_defined_transformation );
11901      SELF\item_defined_transformation.transform_item_1 : rigid_placement;
11902      SELF\item_defined_transformation.transform_item_2 : kinematic_path;
11903  END_ENTITY;
11904
11905  ENTITY listed_data
11906    SUBTYPE OF ( explicit_table_function, generic_literal );
11907      values       : LIST [1 : ?] OF maths_value;
11908      value_range  : maths_space;
11909    DERIVE
11910      SELF\explicit_table_function.shape  : LIST [1 : ?] OF positive_integer := [SIZEOF( values )];
11911    WHERE
11912      wr1: expression_is_constant( value_range );
11913      wr2: ( SIZEOF( QUERY ( val <* values | ( NOT member_of( val, value_range ) ) ) ) = 0 );
11914  END_ENTITY;
11915
11916  ENTITY listed_product_space
11917    SUBTYPE OF ( maths_space, generic_literal );
11918      factors  : LIST OF maths_space;
11919    WHERE
11920      wr1: ( SIZEOF( QUERY ( space <* factors | ( NOT expression_is_constant( space ) ) ) ) = 0 );
11921      wr2: no_cyclic_space_reference( SELF, [] );
11922      wr3: ( NOT ( the_empty_space IN factors ) );
11923  END_ENTITY;
11924
11925  ENTITY literal_conjunction
11926    SUBTYPE OF ( simple_clause );
11927  END_ENTITY;
11928
11929  ENTITY literal_disjunction
11930    SUBTYPE OF ( simple_clause );
11931  END_ENTITY;
11932
11933  ENTITY literal_number
11934    ABSTRACT SUPERTYPE OF ( ONEOF ( int_literal, real_literal ) )
11935    SUBTYPE OF ( simple_numeric_expression, generic_literal );
11936      the_value  : NUMBER;
11937  END_ENTITY;
11938
11939  ENTITY local_time;
11940      hour_component    : hour_in_day;
11941      minute_component  : OPTIONAL minute_in_hour;
11942      second_component  : OPTIONAL second_in_minute;
11943      zone              : coordinated_universal_time_offset;
11944    WHERE
11945      wr1: valid_time( SELF );
11946  END_ENTITY;
11947
11948  ENTITY location_in_aggregate_representation_item
11949    SUBTYPE OF ( compound_representation_item );
11950      SELF\compound_representation_item.item_element : location_in_aggregate_item;
11951  END_ENTITY;
11952
11953  ENTITY location_shape_representation
11954    SUBTYPE OF ( shape_representation );
11955    WHERE
11956      wr1: ( SIZEOF( SELF.items ) = 1 );
11957      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT' IN TYPEOF( it ) ) ) ) )
11958               = 0 );
11959  END_ENTITY;
11960
11961  ENTITY locator
11962    SUBTYPE OF ( feature_definition );
11963    WHERE
11964      wr1: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11965               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11966               used_representation ) ) AND ( NOT ( ( 2 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.
11967               used_representation.items ) <= 5 ) ) ) ) ) ) = 0 );
11968      wr2: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11969               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11970               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'diameter' ) AND (
11971               SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11972               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11973               = 1 );
11974      wr3: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11975               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11976               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'tip radius' ) AND
11977               ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11978               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11979               <= 1 );
11980      wr4: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11981               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11982               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'tip angle' ) AND
11983               ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11984               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11985               = 1 );
11986      wr5: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
11987               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
11988               used_representation ) ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( i.name = 'base radius' ) AND
11989               ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
11990               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) )
11991               <= 1 );
11992  END_ENTITY;
11993
11994  ENTITY log10_function
11995    SUBTYPE OF ( unary_function_call );
11996  END_ENTITY;
11997
11998  ENTITY log2_function
11999    SUBTYPE OF ( unary_function_call );
12000  END_ENTITY;
12001
12002  ENTITY log_function
12003    SUBTYPE OF ( unary_function_call );
12004  END_ENTITY;
12005
12006  ENTITY logical_literal
12007    SUBTYPE OF ( generic_literal );
12008      lit_value  : LOGICAL;
12009  END_ENTITY;
12010
12011  ENTITY logical_representation_item
12012    SUBTYPE OF ( representation_item, logical_literal );
12013  END_ENTITY;
12014
12015  ENTITY loop
12016    SUPERTYPE OF ( ONEOF ( vertex_loop, edge_loop, poly_loop ) )
12017    SUBTYPE OF ( topological_representation_item );
12018  END_ENTITY;
12019
12020  ENTITY loss_tangent_measure_with_unit
12021    SUBTYPE OF ( ratio_measure_with_unit );
12022  END_ENTITY;
12023
12024  ENTITY lot_effectivity
12025    SUBTYPE OF ( effectivity );
12026      effectivity_lot_id    : identifier;
12027      effectivity_lot_size  : measure_with_unit;
12028  END_ENTITY;
12029
12030  ENTITY low_order_kinematic_pair
12031    SUPERTYPE OF ( ONEOF ( revolute_pair, cylindrical_pair, spherical_pair, spherical_pair_with_pin, planar_pair,
12032        unconstrained_pair, fully_constrained_pair, prismatic_pair, universal_pair, low_order_kinematic_pair_with_range ) )
12033    SUBTYPE OF ( kinematic_pair );
12034      t_x  : BOOLEAN;
12035      t_y  : BOOLEAN;
12036      t_z  : BOOLEAN;
12037      r_x  : BOOLEAN;
12038      r_y  : BOOLEAN;
12039      r_z  : BOOLEAN;
12040    WHERE
12041      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
12042               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
12043      wr2: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT (
12044               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
12045  END_ENTITY;
12046
12047  ENTITY low_order_kinematic_pair_value
12048    SUBTYPE OF ( pair_value );
12049      SELF\pair_value.applies_to_pair  : low_order_kinematic_pair;
12050      actual_translation_x             : length_measure;
12051      actual_translation_y             : length_measure;
12052      actual_translation_z             : length_measure;
12053      actual_rotation_x                : plane_angle_measure;
12054      actual_rotation_y                : plane_angle_measure;
12055      actual_rotation_z                : plane_angle_measure;
12056  END_ENTITY;
12057
12058  ENTITY low_order_kinematic_pair_with_motion_coupling
12059    ABSTRACT SUPERTYPE OF ( ONEOF ( gear_pair, linear_flexible_and_pinion_pair, rack_and_pinion_pair, screw_pair ) )
12060    SUBTYPE OF ( kinematic_pair );
12061    WHERE
12062      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT (
12063               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
12064  END_ENTITY;
12065
12066  ENTITY low_order_kinematic_pair_with_range
12067    SUBTYPE OF ( low_order_kinematic_pair );
12068      lower_limit_actual_rotation_x     : OPTIONAL plane_angle_measure;
12069      upper_limit_actual_rotation_x     : OPTIONAL plane_angle_measure;
12070      lower_limit_actual_rotation_y     : OPTIONAL plane_angle_measure;
12071      upper_limit_actual_rotation_y     : OPTIONAL plane_angle_measure;
12072      lower_limit_actual_rotation_z     : OPTIONAL plane_angle_measure;
12073      upper_limit_actual_rotation_z     : OPTIONAL plane_angle_measure;
12074      lower_limit_actual_translation_x  : OPTIONAL length_measure;
12075      upper_limit_actual_translation_x  : OPTIONAL length_measure;
12076      lower_limit_actual_translation_y  : OPTIONAL length_measure;
12077      upper_limit_actual_translation_y  : OPTIONAL length_measure;
12078      lower_limit_actual_translation_z  : OPTIONAL length_measure;
12079      upper_limit_actual_translation_z  : OPTIONAL length_measure;
12080  END_ENTITY;
12081
12082  ENTITY luminous_flux_measure_with_unit
12083    SUBTYPE OF ( measure_with_unit );
12084    WHERE
12085      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_FLUX_UNIT' IN TYPEOF( SELF\measure_with_unit.
12086               unit_component ) );
12087  END_ENTITY;
12088
12089  ENTITY luminous_flux_unit
12090    SUBTYPE OF ( named_unit );
12091    WHERE
12092      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.lumen ) );
12093  END_ENTITY;
12094
12095  ENTITY luminous_intensity_measure_with_unit
12096    SUBTYPE OF ( measure_with_unit );
12097    WHERE
12098      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_INTENSITY_UNIT' IN TYPEOF( SELF\measure_with_unit.
12099               unit_component ) );
12100  END_ENTITY;
12101
12102  ENTITY luminous_intensity_unit
12103    SUBTYPE OF ( named_unit );
12104    WHERE
12105      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
12106               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
12107               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
12108               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 1 ) );
12109  END_ENTITY;
12110
12111  ENTITY magnetic_flux_density_measure_with_unit
12112    SUBTYPE OF ( measure_with_unit );
12113    WHERE
12114      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_DENSITY_UNIT' IN TYPEOF( SELF\measure_with_unit.
12115               unit_component ) );
12116  END_ENTITY;
12117
12118  ENTITY magnetic_flux_density_unit
12119    SUBTYPE OF ( derived_unit );
12120    WHERE
12121      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.tesla ) );
12122  END_ENTITY;
12123
12124  ENTITY magnetic_flux_measure_with_unit
12125    SUBTYPE OF ( measure_with_unit );
12126    WHERE
12127      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_UNIT' IN TYPEOF( SELF\measure_with_unit.
12128               unit_component ) );
12129  END_ENTITY;
12130
12131  ENTITY magnetic_flux_unit
12132    SUBTYPE OF ( derived_unit );
12133    WHERE
12134      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.weber ) );
12135  END_ENTITY;
12136
12137  ENTITY make_from_feature_relationship
12138    SUBTYPE OF ( component_feature_relationship );
12139  END_ENTITY;
12140
12141  ENTITY make_from_usage_option
12142    SUBTYPE OF ( product_definition_usage );
12143      ranking            : INTEGER;
12144      ranking_rationale  : text;
12145      quantity           : measure_with_unit;
12146    WHERE
12147      wr1: ( ( NOT ( 'NUMBER' IN TYPEOF( quantity.value_component ) ) ) OR ( quantity.value_component > 0 ) );
12148  END_ENTITY;
12149
12150  ENTITY manifold_solid_brep
12151    SUBTYPE OF ( solid_model );
12152      outer  : closed_shell;
12153  END_ENTITY;
12154
12155  ENTITY manifold_subsurface_shape_representation
12156    SUBTYPE OF ( shape_representation );
12157    WHERE
12158      wr1 : ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12159                + 'CONNECTED_FACE_SUB_SET' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
12160                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
12161      wr2 : ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12162                + 'CONNECTED_FACE_SUB_SET' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF( it ) ) = 1 ) ) )
12163                > 0 );
12164      wr3 : ( SIZEOF( QUERY ( mi <* QUERY ( it <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12165                TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12166                + 'MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION'  IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) )
12167                = 0 );
12168      wr4 : ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12169                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12170                + 'OPEN_SHELL'  IN TYPEOF( cfss ) ) ) ) ) = 0 );
12171      wr5 : ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12172                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12173                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( cfss\connected_face_sub_set.parent_face_set ) ) AND ( SIZEOF(
12174                QUERY ( fac <* cfss\connected_face_sub_set.parent_face_set\connected_face_set.cfs_faces | ( NOT
12175                advanced_face_properties( fac ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( fac <* cfss\connected_face_sub_set.
12176                parent_face_set\connected_face_set.cfs_faces | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12177                + 'ADVANCED_FACE'  IN TYPEOF( fac ) ) ) ) ) = 0 ) ) ) ) ) = 0 );
12178      wr6 : ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12179                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( SIZEOF( QUERY ( fac <* cfss\connected_face_set.cfs_faces | (
12180                NOT advanced_face_properties( fac ) ) ) ) = 0 ) ) ) = 0 );
12181      wr7 : ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12182                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( fcs <* cfss\connected_face_set.
12183                cfs_faces | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( fcs ) ) AND ( NOT ( SIZEOF(
12184                QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12185                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( (
12186                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( oe.edge_element ) ) OR (
12187                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE'  IN TYPEOF( oe.edge_element ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) )
12188                = 0 ) ) ) ) = 0 );
12189      wr8 : ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12190                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( fcs <* cfss\connected_face_set.
12191                cfs_faces | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( fcs ) ) AND ( NOT ( SIZEOF(
12192                QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12193                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( (
12194                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe.edge_start ) ) AND (
12195                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe.edge_end ) ) ) ) ) ) = 0 ) ) ) ) =
12196                0 ) ) ) ) ) = 0 ) ) ) ) = 0 );
12197      wr9 : ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12198                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( fcs <* cfss\connected_face_set.
12199                cfs_faces | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( fcs ) ) AND ( NOT ( SIZEOF(
12200                QUERY ( bnds <* fcs.bounds | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
12201                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' ] * TYPEOF( bnds.bound ) ) = 1 ) ) ) ) = 0 ) ) ) ) )
12202                = 0 ) ) ) ) = 0 );
12203      wr10: ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12204                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( fcs <* cfss\connected_face_set.
12205                cfs_faces | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( fcs ) ) AND ( NOT ( SIZEOF(
12206                QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12207                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( NOT ( SIZEOF( [
12208                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
12209                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12210                + 'SURFACE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] * TYPEOF( oe.edge_element\
12211                edge_curve.edge_geometry ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 );
12212      wr11: ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12213                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( fcs <* cfss\connected_face_set.
12214                cfs_faces | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( fcs ) ) AND ( NOT ( SIZEOF(
12215                QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12216                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( (
12217                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'  IN TYPEOF( oe.edge_element\edge_curve.
12218                edge_geometry ) ) AND ( NOT ( SIZEOF( QUERY ( sc_ag <* oe.edge_element\edge_curve.edge_geometry\surface_curve.
12219                associated_geometry | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( sc_ag ) ) ) ) )
12220                = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 );
12221      wr12: ( SIZEOF( QUERY ( cfss <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12222                + 'CONNECTED_FACE_SUB_SET'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( fcs <* cfss\connected_face_set.
12223                cfs_faces | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( fcs ) ) AND ( NOT ( SIZEOF(
12224                QUERY ( elp_fbnds <* QUERY ( bnds <* fcs.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12225                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds.bound\path.edge_list | ( (
12226                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'  IN TYPEOF( oe.edge_element\edge_curve.edge_geometry ) )
12227                AND ( NOT ( SIZEOF( oe\oriented_edge.edge_element\edge_curve.edge_geometry\polyline.points ) >= 3 ) ) ) ) ) = 0 ) ) ) )
12228                = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 );
12229  END_ENTITY;
12230
12231  ENTITY manifold_surface_shape_representation
12232    SUBTYPE OF ( shape_representation );
12233    WHERE
12234      wr1 : ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12235                + 'SHELL_BASED_SURFACE_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
12236                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
12237      wr2 : ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12238                + 'SHELL_BASED_SURFACE_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF( it ) ) =
12239                1 ) ) ) > 0 );
12240      wr3 : ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12241                TYPEOF( it ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12242                + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION'  IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) AND
12243                ( SIZEOF( QUERY ( mr_it <* mi\mapped_item.mapping_source.mapped_representation.items | (
12244                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( mr_it ) ) ) ) > 0 ) ) ) ) )
12245                = 0 );
12246      wr4 : ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12247                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( sh <* sbsm\shell_based_surface_model
12248                .sbsm_boundary | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL',
12249                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' ,
12250                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' ] * TYPEOF( sh ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
12251      wr5 : ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12252                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12253                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12254                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF( fa ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) =
12255                0 );
12256      wr6 : ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12257                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12258                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12259                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR msf_surface_check( fa\
12260                face_surface.face_geometry ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12261      wr7 : ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12262                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12263                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12264                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12265                QUERY ( bnds <* fa.bounds | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
12266                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' ] * TYPEOF( bnds.bound ) ) = 1 ) ) ) ) = 0 ) ) ) ) )
12267                = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12268      wr8 : ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12269                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12270                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12271                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12272                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12273                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT (
12274                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( oe.edge_element ) ) ) ) ) = 0 ) ) ) ) =
12275                0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12276      wr9 : ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12277                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12278                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12279                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12280                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12281                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe_cv <* QUERY ( oe <* elp_fbnds\path.edge_list | (
12282                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( oe.edge_element ) ) ) | ( NOT ( SIZEOF(
12283                [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
12284                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12285                + 'CURVE_REPLICA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
12286                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' ,
12287                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12288                + 'POLYLINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] * TYPEOF( oe_cv.edge_element\
12289                edge_curve.edge_geometry ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12290      wr10: ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12291                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12292                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12293                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12294                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12295                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT msf_curve_check( oe.
12296                edge_element\edge_curve.edge_geometry ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12297      wr11: ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12298                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12299                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12300                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12301                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12302                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ( (
12303                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe.edge_element.edge_start ) ) AND (
12304                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe.edge_element.edge_end ) ) ) ) ) ) =
12305                0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12306      wr12: ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12307                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12308                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12309                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12310                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
12311                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ( ( SIZEOF( [
12312                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' ,
12313                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE' ,
12314                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ,
12315                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] * TYPEOF( oe.edge_element.edge_start\
12316                vertex_point.vertex_geometry ) ) = 1 ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12317                + 'CARTESIAN_POINT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
12318                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ,
12319                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] * TYPEOF( oe.edge_element.edge_end\
12320                vertex_point.vertex_geometry ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12321      wr13: ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12322                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12323                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12324                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12325                QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'
12326                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(
12327                vlp_fbnds\vertex_loop.loop_vertex ) ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12328      wr14: ( SIZEOF( QUERY ( sbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12329                + 'SHELL_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* sbsm\
12330                shell_based_surface_model.sbsm_boundary | ( NOT ( SIZEOF( QUERY ( fa <* cfs\connected_face_set.cfs_faces | ( NOT
12331                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( fa ) ) OR ( SIZEOF(
12332                QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'
12333                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
12334                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE' ,
12335                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ,
12336                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] * TYPEOF( vlp_fbnds\vertex_loop.loop_vertex\
12337                vertex_point.vertex_geometry ) ) = 1 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12338  END_ENTITY;
12339
12340  ENTITY mapped_item
12341    SUBTYPE OF ( representation_item );
12342      mapping_source  : representation_map;
12343      mapping_target  : representation_item;
12344    WHERE
12345      wr1: acyclic_mapped_representation( SELF );
12346  END_ENTITY;
12347
12348  ENTITY marking
12349    SUBTYPE OF ( feature_definition );
12350    WHERE
12351      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
12352               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12353               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12354               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( 2 <= SIZEOF( pdr.
12355               used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.items ) <= 6 ) ) ) ) = 1 ) ) ) = 1 );
12356      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
12357               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12358               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12359               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
12360               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12361               + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'marking text' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
12362               = 0 );
12363      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
12364               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12365               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12366               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
12367               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12368               + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'special instructions' ) ) ) ) <= 1 ) ) ) )
12369               = 0 ) ) ) ) = 0 );
12370      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
12371               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12372               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12373               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
12374               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12375               + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'font name' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) )
12376               = 0 );
12377      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
12378               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12379               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12380               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
12381               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12382               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
12383               TYPEOF( it ) ) = 2 ) AND ( it.name = 'character height' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
12384      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
12385               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12386               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12387               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
12388               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12389               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
12390               TYPEOF( it ) ) = 2 ) AND ( it.name = 'character spacing' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
12391      wr7: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12392               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12393               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
12394               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( SIZEOF( QUERY ( sdr <*
12395               QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.' +
12396               'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'applied shape' ) AND (
12397               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
12398               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) )
12399               = 1 ) ) ) ) = 0 );
12400  END_ENTITY;
12401
12402  ENTITY mass_measure_with_unit
12403    SUBTYPE OF ( measure_with_unit );
12404    WHERE
12405      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
12406  END_ENTITY;
12407
12408  ENTITY mass_unit
12409    SUBTYPE OF ( named_unit );
12410    WHERE
12411      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 1 ) AND ( SELF\
12412               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
12413               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
12414               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
12415  END_ENTITY;
12416
12417  ENTITY mated_part_relationship
12418    SUBTYPE OF ( group, group_assignment, product_definition_shape, product_definition_relationship, shape_aspect );
12419      items  : SET [0 : ?] OF product_definition;
12420    DERIVE
12421      SELF\group_assignment.assigned_group  : mated_part_relationship := SELF;
12422      SELF\property_definition.definition   : mated_part_relationship := SELF;
12423      SELF\shape_aspect.of_shape            : mated_part_relationship := SELF;
12424  END_ENTITY;
12425
12426  ENTITY material_designation;
12427      name         : label;
12428      definitions  : SET [1 : ?] OF characterized_definition;
12429  END_ENTITY;
12430
12431  ENTITY material_designation_characterization;
12432      name         : label;
12433      description  : text;
12434      designation  : material_designation;
12435      property     : characterized_material_property;
12436  END_ENTITY;
12437
12438  ENTITY material_property
12439    SUBTYPE OF ( property_definition );
12440    UNIQUE
12441      ur1 : name, definition;
12442    WHERE
12443      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT' IN TYPEOF( SELF\property_definition.
12444               definition ) ) OR ( SIZEOF( bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12445               'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) ) - QUERY ( temp <* bag_to_set( USEDIN( SELF,
12446               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) ) | ( (
12447               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MATERIAL_PROPERTY_REPRESENTATION' ) IN TYPEOF( temp ) ) ) )
12448               = 0 ) );
12449  END_ENTITY;
12450
12451  ENTITY material_property_representation
12452    SUBTYPE OF ( property_definition_representation );
12453      dependent_environment  : data_environment;
12454  END_ENTITY;
12455
12456  ENTITY maths_enum_literal
12457    SUBTYPE OF ( generic_literal );
12458      lit_value  : maths_enum_atom;
12459  END_ENTITY;
12460
12461  ENTITY maths_function
12462    ABSTRACT SUPERTYPE OF ( ONEOF ( finite_function, constant_function, selector_function, elementary_function,
12463        restriction_function, repackaging_function, reindexed_array_function, series_composed_function, parallel_composed_function,
12464        explicit_table_function, homogeneous_linear_function, general_linear_function, b_spline_basis, b_spline_function,
12465        rationalize_function, partial_derivative_function, definite_integral_function, abstracted_expression_function,
12466        expression_denoted_function, imported_point_function, imported_curve_function, imported_surface_function,
12467        imported_volume_function, application_defined_function ) )
12468    SUBTYPE OF ( generic_expression );
12469    DERIVE
12470      domain  : tuple_space := derive_function_domain( SELF );
12471      range   : tuple_space := derive_function_range( SELF );
12472  END_ENTITY;
12473
12474  ENTITY maths_space
12475    ABSTRACT SUPERTYPE OF ( ONEOF ( elementary_space, finite_integer_interval, integer_interval_from_min, integer_interval_to_max,
12476        finite_real_interval, real_interval_from_min, real_interval_to_max, cartesian_complex_number_region,
12477        polar_complex_number_region, finite_space, uniform_product_space, listed_product_space, extended_tuple_space,
12478        function_space ) )
12479    SUBTYPE OF ( generic_expression );
12480  END_ENTITY;
12481
12482  ENTITY maths_tuple_literal
12483    SUBTYPE OF ( generic_literal );
12484      lit_value  : LIST OF maths_value;
12485  END_ENTITY;
12486
12487  ENTITY maths_variable
12488    SUBTYPE OF ( generic_variable );
12489      values_space  : maths_space;
12490      name          : label;
12491    WHERE
12492      wr1: expression_is_constant( values_space );
12493  END_ENTITY;
12494
12495  ENTITY maximum_function
12496    SUBTYPE OF ( multiple_arity_function_call );
12497  END_ENTITY;
12498
12499  ENTITY measure_qualification;
12500      name               : label;
12501      description        : text;
12502      qualified_measure  : measure_with_unit;
12503      qualifiers         : SET [1 : ?] OF value_qualifier;
12504    WHERE
12505      wr1: ( SIZEOF( QUERY ( temp <* qualifiers | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER' IN
12506               TYPEOF( temp ) ) ) ) < 2 );
12507      wr2: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF( SELF\measure_qualification.
12508               qualified_measure ) ) );
12509  END_ENTITY;
12510
12511  ENTITY measure_representation_item
12512    SUBTYPE OF ( representation_item, measure_with_unit );
12513  END_ENTITY;
12514
12515  ENTITY measure_with_unit
12516    SUPERTYPE OF ( ONEOF ( length_measure_with_unit, mass_measure_with_unit, time_measure_with_unit,
12517        electric_current_measure_with_unit, thermodynamic_temperature_measure_with_unit, celsius_temperature_measure_with_unit,
12518        amount_of_substance_measure_with_unit, luminous_intensity_measure_with_unit, plane_angle_measure_with_unit,
12519        solid_angle_measure_with_unit, area_measure_with_unit, volume_measure_with_unit, ratio_measure_with_unit,
12520        acceleration_measure_with_unit, capacitance_measure_with_unit, electric_charge_measure_with_unit,
12521        conductance_measure_with_unit, electric_potential_measure_with_unit, energy_measure_with_unit,
12522        magnetic_flux_density_measure_with_unit, force_measure_with_unit, frequency_measure_with_unit,
12523        illuminance_measure_with_unit, inductance_measure_with_unit, luminous_flux_measure_with_unit,
12524        magnetic_flux_measure_with_unit, power_measure_with_unit, pressure_measure_with_unit, resistance_measure_with_unit,
12525        velocity_measure_with_unit, absorbed_dose_measure_with_unit, radioactivity_measure_with_unit,
12526        dose_equivalent_measure_with_unit ) );
12527      value_component  : measure_value;
12528      unit_component   : unit;
12529    WHERE
12530      wr1: valid_units( SELF );
12531  END_ENTITY;
12532
12533  ENTITY mechanical_context
12534    SUBTYPE OF ( product_context );
12535    WHERE
12536      wr1: ( SELF.discipline_type = 'mechanical' );
12537  END_ENTITY;
12538
12539  ENTITY mechanical_design_and_draughting_relationship
12540    SUBTYPE OF ( definitional_representation_relationship_with_same_context );
12541      SELF\representation_relationship.rep_1 : mechanical_design_and_draughting_relationship_select;
12542      SELF\representation_relationship.rep_2 : mechanical_design_and_draughting_relationship_select;
12543    WHERE
12544      wr1: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_MODEL' ) IN TYPEOF( rep_2 ) ) ) OR ( (
12545               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_MODEL' ) IN TYPEOF( rep_1 ) ) OR ( (
12546               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_REPRESENTATION' ) IN TYPEOF( rep_1 ) ) );
12547      wr2: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12548               'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION'  ) IN TYPEOF( rep_2 ) ) ) OR ( (
12549               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' )
12550               IN TYPEOF( rep_1 ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_REPRESENTATION' ) IN
12551               TYPEOF( rep_1 ) ) );
12552      wr3: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' )
12553               IN TYPEOF( rep_2 ) ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12554               'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'  ) IN TYPEOF( rep_1 ) ) OR ( (
12555               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_REPRESENTATION' ) IN TYPEOF( rep_1 ) ) );
12556  END_ENTITY;
12557
12558  ENTITY mechanical_design_geometric_presentation_area
12559    SUBTYPE OF ( presentation_area );
12560      SELF\representation.items  : SET [1 : ?] OF mechanical_design_geometric_presentation_area_items;
12561    WHERE
12562      wr1: ( SIZEOF( QUERY ( it1 <* SELF.items | ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12563               TYPEOF( it1 ) ) ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN TYPEOF( it1\
12564               mapped_item.mapping_source.mapped_representation ) ) ) ) ) = 0 );
12565      wr2: ( SIZEOF( QUERY ( pv <* QUERY ( mi1 <* QUERY ( it1 <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12566               + 'MAPPED_ITEM'  IN TYPEOF( it1 ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
12567               TYPEOF( mi1\mapped_item.mapping_source.mapped_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it2 <* pv\mapped_item.
12568               mapping_source.mapped_representation\representation.items | ( ( NOT ( (
12569               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT'  IN TYPEOF( it2 ) ) OR ( (
12570               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'  IN TYPEOF( it2 ) ) AND ( NOT ( (
12571               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CAMERA_IMAGE_3D_WITH_SCALE' ) IN TYPEOF( it2 ) ) ) AND (
12572               NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN TYPEOF( it2\mapped_item.mapping_source
12573               .mapped_representation ) ) ) ) ) ) OR ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12574               'CAMERA_IMAGE_3D_WITH_SCALE'  ) IN TYPEOF( it2 ) ) AND ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12575               + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION' ) IN TYPEOF( it2\mapped_item.mapping_source.
12576               mapped_representation ) ) ) ) ) ) ) = 0 ) ) ) ) = 0 );
12577      wr3: ( ( SIZEOF( QUERY ( ps <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' )
12578               | ( ( ps\presentation_size.size.size_in_x <= 0 ) OR ( ps\presentation_size.size.size_in_y <= 0 ) ) ) ) = 0 ) AND (
12579               SIZEOF( QUERY ( ais <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AREA_IN_SET.AREA' ) | (
12580               SIZEOF( QUERY ( ps <* USEDIN( ais, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' )
12581               | ( ( ps\presentation_size.size.size_in_x <= 0 ) OR ( ps\presentation_size.size.size_in_y <= 0 ) ) ) ) > 0 ) ) ) =
12582               0 ) );
12583      wr4: ( ( ( SIZEOF( QUERY ( ps <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' )
12584               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_2D' ) IN TYPEOF( ps.size.placement ) ) ) )
12585               = 1 ) AND ( SIZEOF( QUERY ( ps <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12586               'PRESENTATION_SIZE.UNIT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_3D' ) IN
12587               TYPEOF( ps.size.placement ) ) ) ) = 0 ) ) OR ( ( SIZEOF( QUERY ( ais <* USEDIN( SELF,
12588               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'AREA_IN_SET.AREA' ) | ( SIZEOF( QUERY ( ps <* USEDIN( ais,
12589               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRESENTATION_SIZE.UNIT' ) | ( (
12590               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'AXIS2_PLACEMENT_2D' ) IN TYPEOF( ps.size.placement ) ) ) )
12591               = 1 ) ) ) = 1 ) AND ( SIZEOF( QUERY ( ais <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12592               'AREA_IN_SET.AREA'  ) | ( SIZEOF( QUERY ( ps <* USEDIN( ais, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12593               'PRESENTATION_SIZE.UNIT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_3D' ) IN
12594               TYPEOF( ps.size.placement ) ) ) ) = 0 ) ) ) = 1 ) ) );
12595  END_ENTITY;
12596
12597  ENTITY mechanical_design_geometric_presentation_representation
12598    SUBTYPE OF ( representation );
12599      SELF\representation.items  : SET [1 : ?] OF mechanical_design_geometric_presentation_representation_items;
12600    WHERE
12601      wr1 : ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12602                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_REPRESENTATION',
12603                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION']
12604                * TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) = 1 ) ) ) ) = 0 );
12605      wr2 : ( SIZEOF( QUERY ( smi <* QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12606                + 'STYLED_ITEM'  IN TYPEOF( it ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12607                TYPEOF( si\styled_item.item ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12608                'SHAPE_REPRESENTATION'  ) IN TYPEOF( smi\styled_item.item\mapped_item.mapping_source.mapped_representation ) ) ) ) )
12609                = 0 );
12610      wr3 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12611                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( pss <* psa.
12612                styles | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
12613                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12614                + 'SURFACE_STYLE_USAGE' ] * TYPEOF( pss ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12615      wr4 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12616                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psbc <* QUERY ( psa <* si\styled_item.styles | ( (
12617                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRESENTATION_STYLE_BY_CONTEXT' ) IN TYPEOF( psa ) ) ) | (
12618                NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_ITEM',
12619                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' ] * TYPEOF( psbc\presentation_style_by_context.
12620                style_context ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
12621      wr5 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12622                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ps <*
12623                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE' IN TYPEOF( pss ) ) )
12624                | ( NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POSITIVE_LENGTH_MEASURE' ) IN TYPEOF( ps\
12625                point_style.marker_size ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12626                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( ps\point_style.
12627                marker_colour ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12628      wr6 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12629                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( cs <*
12630                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( pss ) ) )
12631                | ( NOT ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12632                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( cs\curve_style.
12633                curve_colour ) ) = 1 ) AND ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POSITIVE_LENGTH_MEASURE' ) IN
12634                TYPEOF( cs\curve_style.curve_width ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12635                + 'CURVE_STYLE_FONT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT']
12636                * TYPEOF( cs\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12637      wr7 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12638                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12639                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12640                | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SURFACE_SIDE_STYLE' ) IN TYPEOF( ssu\
12641                surface_style_usage.style ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12642      wr8 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12643                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12644                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12645                | ( NOT ( SIZEOF( QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( NOT ( SIZEOF( [
12646                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_PARAMETER_LINE',
12647                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_CONTROL_GRID',
12648                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SILHOUETTE',
12649                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SEGMENTATION_CURVE',
12650                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_FILL_AREA',
12651                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_BOUNDARY'] * TYPEOF( sses ) ) = 1 ) ) ) ) =
12652                0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12653      wr9 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12654                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12655                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12656                | ( NOT ( SIZEOF( QUERY ( sspl <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12657                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_PARAMETER_LINE' ) IN TYPEOF( sses ) ) ) | (
12658                NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sspl\surface_style_parameter_line
12659                .style_of_parameter_lines ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12660                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sspl\
12661                surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_colour ) ) = 1 ) AND ( (
12662                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'POSITIVE_LENGTH_MEASURE' ) IN TYPEOF( sspl\
12663                surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width ) ) AND ( SIZEOF( [
12664                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT' ,
12665                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sspl\
12666                surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12667                = 0 ) ) ) ) = 0 );
12668      wr10: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12669                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12670                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12671                | ( NOT ( SIZEOF( QUERY ( sscg <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12672                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_CONTROL_GRID' ) IN TYPEOF( sses ) ) ) | (
12673                NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sscg\surface_style_control_grid.
12674                style_of_control_grid ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12675                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sscg\
12676                surface_style_control_grid.style_of_control_grid\curve_style.curve_colour ) ) = 1 ) AND ( (
12677                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'POSITIVE_LENGTH_MEASURE' ) IN TYPEOF( sscg\
12678                surface_style_control_grid.style_of_control_grid\curve_style.curve_width ) ) AND ( SIZEOF( [
12679                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT' ,
12680                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sscg\
12681                surface_style_control_grid.style_of_control_grid\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12682                = 0 ) ) ) ) = 0 );
12683      wr11: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12684                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12685                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12686                | ( NOT ( SIZEOF( QUERY ( sssh <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12687                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SILHOUETTE' ) IN TYPEOF( sses ) ) ) | ( NOT
12688                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sssh\surface_style_silhouette.
12689                style_of_silhouette ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12690                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sssh\
12691                surface_style_silhouette.style_of_silhouette\curve_style.curve_colour ) ) = 1 ) AND ( (
12692                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'POSITIVE_LENGTH_MEASURE' ) IN TYPEOF( sssh\
12693                surface_style_silhouette.style_of_silhouette\curve_style.curve_width ) ) AND ( SIZEOF( [
12694                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT' ,
12695                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sssh\
12696                surface_style_silhouette.style_of_silhouette\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12697                = 0 );
12698      wr12: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12699                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12700                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12701                | ( NOT ( SIZEOF( QUERY ( sssc <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12702                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SEGMENTATION_CURVE' ) IN TYPEOF( sses ) ) )
12703                | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sssc\
12704                surface_style_segmentation_curve.style_of_segmentation_curve ) ) AND ( SIZEOF( [
12705                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12706                + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sssc\surface_style_segmentation_curve.style_of_segmentation_curve\
12707                curve_style.curve_colour ) ) = 1 ) AND ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12708                'POSITIVE_LENGTH_MEASURE'  ) IN TYPEOF( sssc\surface_style_segmentation_curve.style_of_segmentation_curve\
12709                curve_style.curve_width ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT',
12710                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sssc\
12711                surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) )
12712                = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12713      wr13: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12714                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12715                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12716                | ( NOT ( SIZEOF( QUERY ( ssbd <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12717                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_BOUNDARY' ) IN TYPEOF( sses ) ) ) | ( NOT (
12718                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( ssbd\surface_style_boundary.
12719                style_of_boundary ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12720                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( ssbd\
12721                surface_style_boundary.style_of_boundary\curve_style.curve_colour ) ) = 1 ) AND ( (
12722                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'POSITIVE_LENGTH_MEASURE' ) IN TYPEOF( ssbd\
12723                surface_style_boundary.style_of_boundary\curve_style.curve_width ) ) AND ( SIZEOF( [
12724                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_FONT' ,
12725                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( ssbd\
12726                surface_style_boundary.style_of_boundary\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12727                = 0 );
12728  END_ENTITY;
12729
12730  ENTITY mechanical_design_presentation_representation_with_draughting
12731    SUBTYPE OF ( representation );
12732      SELF\representation.items  : SET [1 : ?] OF camera_model_d3;
12733  END_ENTITY;
12734
12735  ENTITY mechanical_design_shaded_presentation_area
12736    SUBTYPE OF ( presentation_area );
12737      SELF\representation.items  : SET [1 : ?] OF mechanical_design_shaded_presentation_area_items;
12738    WHERE
12739      wr1: ( SIZEOF( QUERY ( it1 <* SELF.items | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT' IN
12740               TYPEOF( it1 ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF( it1 ) ) AND (
12741               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW'  IN TYPEOF( it1\mapped_item.mapping_source.
12742               mapped_representation ) ) ) ) ) ) ) = 0 );
12743      wr2: ( SIZEOF( QUERY ( pv <* QUERY ( mi1 <* QUERY ( it1 <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12744               + 'MAPPED_ITEM'  IN TYPEOF( it1 ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
12745               TYPEOF( mi1\mapped_item.mapping_source.mapped_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it2 <* pv\mapped_item.
12746               mapping_source.mapped_representation\representation.items | ( ( NOT ( (
12747               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT'  IN TYPEOF( it2 ) ) OR ( (
12748               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'  IN TYPEOF( it2 ) ) AND ( NOT ( (
12749               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CAMERA_IMAGE_3D_WITH_SCALE' ) IN TYPEOF( it2 ) ) ) AND (
12750               NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN TYPEOF( it2\mapped_item.mapping_source
12751               .mapped_representation ) ) ) ) ) ) OR ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12752               'CAMERA_IMAGE_3D_WITH_SCALE'  ) IN TYPEOF( it2 ) ) AND ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12753               + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION' ) IN TYPEOF( it2\mapped_item.mapping_source.
12754               mapped_representation ) ) ) ) ) ) ) = 0 ) ) ) ) = 0 );
12755      wr3: ( ( SIZEOF( QUERY ( ps <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' )
12756               | ( NOT ( ( ps\presentation_size.size.size_in_x > 0 ) AND ( ps\presentation_size.size.size_in_y > 0 ) ) ) ) ) = 0 )
12757               AND ( SIZEOF( QUERY ( pset <* QUERY ( ais <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12758               'AREA_IN_SET.AREA'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SET' ) IN TYPEOF(
12759               ais.in_set ) ) ) | ( SIZEOF( QUERY ( ps <* USEDIN( pset, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12760               'PRESENTATION_SIZE.UNIT'  ) | ( NOT ( ( ps\presentation_size.size.size_in_x > 0 ) AND ( ps\presentation_size.size.
12761               size_in_y > 0 ) ) ) ) ) = 0 ) ) ) = 0 ) );
12762      wr4: ( ( SIZEOF( QUERY ( psize <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.'
12763               + 'UNIT'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_2D' ) IN TYPEOF( psize.
12764               size.placement ) ) ) ) = 1 ) AND ( SIZEOF( QUERY ( pset <* QUERY ( ais <* USEDIN( SELF,
12765               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'AREA_IN_SET.AREA' ) | ( (
12766               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRESENTATION_SET' ) IN TYPEOF( ais.in_set ) ) ) | (
12767               SIZEOF( QUERY ( psize <* USEDIN( pset, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' )
12768               | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AXIS2_PLACEMENT_2D' ) IN TYPEOF( psize.size.
12769               placement ) ) ) ) ) = 0 ) ) ) = 0 ) );
12770      wr5: ( SIZEOF( QUERY ( pv <* QUERY ( mi1 <* QUERY ( it1 <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12771               + 'MAPPED_ITEM'  IN TYPEOF( it1 ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_VIEW' IN
12772               TYPEOF( mi1\mapped_item.mapping_source.mapped_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( ci <* pv\mapped_item.
12773               mapping_source.mapped_representation\representation.items | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12774               + 'CAMERA_IMAGE_3D_WITH_SCALE' ) IN TYPEOF( ci ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12775               + 'CAMERA_MODEL_D3', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CAMERA_MODEL_D3_WITH_HLHSR',
12776               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CAMERA_MODEL_WITH_LIGHT_SOURCES'] * TYPEOF( ci\mapped_item.
12777               mapping_source.mapping_origin ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
12778  END_ENTITY;
12779
12780  ENTITY mechanical_design_shaded_presentation_representation
12781    SUBTYPE OF ( representation );
12782      SELF\representation.items  : SET [1 : ?] OF mechanical_design_shaded_presentation_representation_items;
12783    WHERE
12784      wr1 : ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12785                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_REPRESENTATION',
12786                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MECHANICAL_DESIGN_SHADED_PRESENTATION_REPRESENTATION'] *
12787                TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) = 1 ) ) ) ) = 0 );
12788      wr2 : ( SIZEOF( QUERY ( smi <* QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12789                + 'STYLED_ITEM'  IN TYPEOF( it ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
12790                TYPEOF( si\styled_item.item ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12791                'SHAPE_REPRESENTATION'  ) IN TYPEOF( smi\styled_item.item\mapped_item.mapping_source.mapped_representation ) ) ) ) )
12792                = 0 );
12793      wr3 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12794                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( pss <* psa.
12795                styles | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE',
12796                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12797                + 'SURFACE_STYLE_USAGE' ] * TYPEOF( pss ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12798      wr4 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12799                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psbc <* QUERY ( psa <* si\styled_item.styles | ( (
12800                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRESENTATION_STYLE_BY_CONTEXT' ) IN TYPEOF( psa ) ) ) | (
12801                NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM',
12802                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION' ] * TYPEOF( psbc\presentation_style_by_context.
12803                style_context ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
12804      wr5 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12805                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ps <*
12806                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_STYLE' IN TYPEOF( pss ) ) )
12807                | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MARKER_TYPE' IN TYPEOF( ps\point_style.marker ) ) AND
12808                ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF( ps\point_style.marker_size ) )
12809                AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12810                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( ps\point_style.
12811                marker_colour ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12812      wr6 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12813                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( cs <*
12814                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( pss ) ) )
12815                | ( NOT ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12816                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( cs\curve_style.
12817                curve_colour ) ) = 1 ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF(
12818                cs\curve_style.curve_width ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
12819                'CURVE_STYLE_FONT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
12820                TYPEOF( cs\curve_style.curve_font ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12821      wr7 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12822                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12823                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12824                | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_SIDE_STYLE' IN TYPEOF( ssu\surface_style_usage.
12825                style ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12826      wr8 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12827                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12828                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12829                | ( NOT ( SIZEOF( QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( NOT ( SIZEOF( [
12830                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_PARAMETER_LINE',
12831                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_CONTROL_GRID',
12832                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SILHOUETTE',
12833                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SEGMENTATION_CURVE',
12834                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_BOUNDARY',
12835                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_FILL_AREA',
12836                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_RENDERING'] * TYPEOF( sses ) ) = 1 ) ) ) ) =
12837                0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12838      wr9 : ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12839                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12840                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12841                | ( NOT ( SIZEOF( QUERY ( ssfa <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | (
12842                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_FILL_AREA'  IN TYPEOF( sses ) ) ) | ( NOT (
12843                SIZEOF( QUERY ( fss <* ssfa\surface_style_fill_area.fill_area.fill_styles | ( NOT ( ( (
12844                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'FILL_AREA_STYLE_COLOUR' ) IN TYPEOF( fss ) ) AND (
12845                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12846                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( fss\
12847                fill_area_style_colour.fill_colour ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12848      wr10: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12849                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12850                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12851                | ( NOT ( SIZEOF( QUERY ( sspl <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12852                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_PARAMETER_LINE' ) IN TYPEOF( sses ) ) ) | (
12853                NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sspl\
12854                surface_style_parameter_line.style_of_parameter_lines ) ) AND ( SIZEOF( [
12855                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12856                + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sspl\surface_style_parameter_line.style_of_parameter_lines\
12857                curve_style.curve_colour ) ) = 1 ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'
12858                IN TYPEOF( sspl\surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_width ) ) AND ( SIZEOF( [
12859                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CURVE_STYLE_FONT',
12860                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sspl\
12861                surface_style_parameter_line.style_of_parameter_lines\curve_style.curve_font ) ) = 1 ) ) OR ( (
12862                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING'  IN TYPEOF( sspl\
12863                surface_style_parameter_line.style_of_parameter_lines ) ) AND ( SIZEOF( [
12864                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12865                + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sspl\surface_style_parameter_line.style_of_parameter_lines\
12866                curve_style_rendering.rendering_properties.rendered_colour ) ) = 1 ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12867                = 0 );
12868      wr11: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12869                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12870                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12871                | ( NOT ( SIZEOF( QUERY ( sscg <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12872                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_CONTROL_GRID' ) IN TYPEOF( sses ) ) ) | (
12873                NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sscg\surface_style_control_grid
12874                .style_of_control_grid ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12875                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sscg\
12876                surface_style_control_grid.style_of_control_grid\curve_style.curve_colour ) ) = 1 ) AND (
12877                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'  IN TYPEOF( sscg\
12878                surface_style_control_grid.style_of_control_grid\curve_style.curve_width ) ) AND ( SIZEOF( [
12879                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CURVE_STYLE_FONT',
12880                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sscg\
12881                surface_style_control_grid.style_of_control_grid\curve_style.curve_font ) ) = 1 ) ) OR ( (
12882                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING'  IN TYPEOF( sscg\
12883                surface_style_control_grid.style_of_control_grid ) ) AND ( SIZEOF( [
12884                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12885                + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sscg\surface_style_control_grid.style_of_control_grid\
12886                curve_style_rendering.rendering_properties.rendered_colour ) ) = 1 ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12887                = 0 );
12888      wr12: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12889                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12890                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12891                | ( NOT ( SIZEOF( QUERY ( sssh <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12892                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SILHOUETTE' ) IN TYPEOF( sses ) ) ) | ( NOT
12893                ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sssh\surface_style_silhouette.
12894                style_of_silhouette ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12895                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sssh\
12896                surface_style_silhouette.style_of_silhouette\curve_style.curve_colour ) ) = 1 ) AND (
12897                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'  IN TYPEOF( sssh\
12898                surface_style_silhouette.style_of_silhouette\curve_style.curve_width ) ) AND ( SIZEOF( [
12899                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CURVE_STYLE_FONT',
12900                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sssh\
12901                surface_style_silhouette.style_of_silhouette\curve_style.curve_font ) ) = 1 ) ) OR ( (
12902                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING'  IN TYPEOF( sssh\surface_style_silhouette
12903                .style_of_silhouette ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12904                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sssh\
12905                surface_style_silhouette.style_of_silhouette\curve_style_rendering.rendering_properties.rendered_colour ) ) = 1 ) ) ) ) ) )
12906                = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12907      wr13: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12908                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12909                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12910                | ( NOT ( SIZEOF( QUERY ( sssc <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12911                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_SEGMENTATION_CURVE' ) IN TYPEOF( sses ) ) )
12912                | ( NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( sssc\
12913                surface_style_segmentation_curve.style_of_segmentation_curve ) ) AND ( SIZEOF( [
12914                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12915                + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sssc\surface_style_segmentation_curve.style_of_segmentation_curve\
12916                curve_style.curve_colour ) ) = 1 ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'
12917                IN TYPEOF( sssc\surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_width ) ) AND (
12918                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CURVE_STYLE_FONT',
12919                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] * TYPEOF( sssc\
12920                surface_style_segmentation_curve.style_of_segmentation_curve\curve_style.curve_font ) ) = 1 ) ) OR ( (
12921                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING'  IN TYPEOF( sssc\
12922                surface_style_segmentation_curve.style_of_segmentation_curve ) ) AND ( SIZEOF( [
12923                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12924                + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( sssc\surface_style_segmentation_curve.style_of_segmentation_curve\
12925                curve_style_rendering.rendering_properties.rendered_colour ) ) = 1 ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
12926                = 0 );
12927      wr14: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12928                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12929                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12930                | ( NOT ( SIZEOF( QUERY ( ssbd <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12931                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_BOUNDARY' ) IN TYPEOF( sses ) ) ) | ( NOT (
12932                ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE' IN TYPEOF( ssbd\surface_style_boundary.
12933                style_of_boundary ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12934                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( ssbd\
12935                surface_style_boundary.style_of_boundary\curve_style.curve_colour ) ) = 1 ) AND (
12936                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE'  IN TYPEOF( ssbd\surface_style_boundary
12937                .style_of_boundary\curve_style.curve_width ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12938                + 'CURVE_STYLE_FONT', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_PRE_DEFINED_CURVE_FONT'] *
12939                TYPEOF( ssbd\surface_style_boundary.style_of_boundary\curve_style.curve_font ) ) = 1 ) ) OR ( (
12940                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_RENDERING'  IN TYPEOF( ssbd\surface_style_boundary.
12941                style_of_boundary ) ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12942                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( ssbd\
12943                surface_style_boundary.style_of_boundary\curve_style_rendering.rendering_properties.rendered_colour ) ) = 1 ) ) ) ) ) )
12944                = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12945      wr15: ( SIZEOF( QUERY ( si <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN
12946                TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( psa <* si\styled_item.styles | ( NOT ( SIZEOF( QUERY ( ssu <*
12947                QUERY ( pss <* psa.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN TYPEOF( pss ) ) )
12948                | ( NOT ( SIZEOF( QUERY ( ssre <* QUERY ( sses <* ssu\surface_style_usage.style\surface_side_style.styles | ( (
12949                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SURFACE_STYLE_RENDERING' ) IN TYPEOF( sses ) ) ) | ( NOT
12950                ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COLOUR_RGB',
12951                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_PRE_DEFINED_COLOUR'] * TYPEOF( ssre\
12952                surface_style_rendering.surface_colour ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
12953  END_ENTITY;
12954
12955  ENTITY mechanism_representation
12956    SUBTYPE OF ( representation );
12957      SELF\representation.context_of_items  : geometric_representation_context;
12958      SELF\representation.items             : SET [1 : ?] OF pair_representation_relationship;
12959      represented_topology                  : kinematic_topology_representation_select;
12960    DERIVE
12961      represented_joints  : SET [1 : ?] OF kinematic_joint := collect_joints( items );
12962    WHERE
12963      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_STRUCTURE' IN TYPEOF( represented_topology ) )
12964               AND ( represented_joints :=: represented_topology.items ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
12965               + 'KINEMATIC_TOPOLOGY_DIRECTED_STRUCTURE'  IN TYPEOF( represented_topology ) ) AND ( represented_joints :=:
12966               get_kinematic_joints_from_oriented_joints( represented_topology.items ) ) ) OR ( (
12967               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KINEMATIC_TOPOLOGY_NETWORK_STRUCTURE'  IN TYPEOF(
12968               represented_topology ) ) AND ( represented_joints :=: get_kinematic_joints_from_kinematic_loops(
12969               represented_topology.items ) ) ) );
12970  END_ENTITY;
12971
12972  ENTITY mechanism_state_representation
12973    SUBTYPE OF ( representation );
12974      SELF\representation.items  : SET [1 : ?] OF pair_value;
12975      represented_mechanism      : mechanism_representation;
12976    DERIVE
12977      SELF\representation.context_of_items  : geometric_representation_context := represented_mechanism.context_of_items;
12978  END_ENTITY;
12979
12980  ENTITY min_and_major_ply_orientation_basis
12981    SUBTYPE OF ( representation_item_relationship, geometric_representation_item );
12982      SELF\representation_item_relationship.relating_representation_item : axis2_placement_3d;
12983      SELF\representation_item_relationship.related_representation_item : axis2_placement_3d;
12984    DERIVE
12985      major_orientation_basis  : axis2_placement_3d := SELF\representation_item_relationship.related_representation_item;
12986      minor_orientation_basis  : axis2_placement_3d := SELF\representation_item_relationship.relating_representation_item;
12987  END_ENTITY;
12988
12989  ENTITY minimum_function
12990    SUBTYPE OF ( multiple_arity_function_call );
12991  END_ENTITY;
12992
12993  ENTITY minus_expression
12994    SUBTYPE OF ( binary_numeric_expression );
12995  END_ENTITY;
12996
12997  ENTITY minus_function
12998    SUBTYPE OF ( unary_function_call );
12999  END_ENTITY;
13000
13001  ENTITY mod_expression
13002    SUBTYPE OF ( binary_numeric_expression );
13003  END_ENTITY;
13004
13005  ENTITY modified_geometric_tolerance
13006    SUBTYPE OF ( geometric_tolerance );
13007      modifier  : limit_condition;
13008  END_ENTITY;
13009
13010  ENTITY modified_pattern
13011    SUBTYPE OF ( shape_aspect );
13012    WHERE
13013      wr1: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13014               + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13015               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) | ( ( SIZEOF( [
13016               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE' ,
13017               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE' ] * TYPEOF( fcr.related_shape_aspect.of_shape.
13018               definition ) ) >= 1 ) AND ( fcr.description = 'base shape' ) ) ) ) = 1 );
13019      wr2: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13020               + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13021               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) | ( ( SIZEOF( [
13022               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' ,
13023               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' ] * TYPEOF( fcr.related_shape_aspect.
13024               of_shape.definition ) ) = 1 ) AND ( fcr.description = 'base pattern' ) ) ) ) = 1 );
13025      wr3: ( SIZEOF( QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
13026               + 'RELATING_SHAPE_ASPECT'  ) | ( SIZEOF( QUERY ( msar <* USEDIN( sar.related_shape_aspect,
13027               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( SIZEOF(
13028               [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATTERN_OFFSET_MEMBERSHIP',
13029               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATTERN_OMIT_MEMBERSHIP' ] * TYPEOF( sar ) ) = 1 ) AND ( sar.
13030               description = 'modified pattern' ) AND ( sar :<>: msar ) ) ) ) >= 1 ) ) ) = 0 );
13031  END_ENTITY;
13032
13033  ENTITY modified_solid
13034    ABSTRACT SUPERTYPE OF ( ONEOF ( edge_blended_solid, sculptured_solid, shelled_solid, modified_solid_with_placed_configuration ) )
13035    SUBTYPE OF ( solid_model );
13036      rationale   : text;
13037      base_solid  : base_solid_select;
13038  END_ENTITY;
13039
13040  ENTITY modified_solid_with_placed_configuration
13041    ABSTRACT SUPERTYPE OF ( ONEOF ( solid_with_depression, solid_with_protrusion, solid_with_shape_element_pattern ) )
13042    SUBTYPE OF ( modified_solid );
13043      placing  : axis2_placement_3d;
13044  END_ENTITY;
13045
13046  ENTITY modify_element
13047    SUBTYPE OF ( change_element );
13048  END_ENTITY;
13049
13050  ENTITY moments_of_inertia_representation
13051    SUBTYPE OF ( representation );
13052    WHERE
13053      wr1: ( ( SIZEOF( SELF.items ) = 1 ) AND ( SIZEOF( QUERY ( i <* SELF.items | ( ( (
13054               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'COMPOUND_REPRESENTATION_ITEM' ) IN TYPEOF( i ) ) AND ( i.
13055               name = 'moments of inertia matrix' ) ) ) ) = 1 ) );
13056      wr2: ( SIZEOF( QUERY ( i <* SELF.items | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13057               'COMPOUND_REPRESENTATION_ITEM'  ) IN TYPEOF( i ) ) AND ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13058               'LIST_REPRESENTATION_ITEM'  ) IN TYPEOF( i\compound_representation_item.item_element ) ) AND
13059               value_range_aggregate_rep_item( i\compound_representation_item.item_element ) ) ) ) = 1 );
13060  END_ENTITY;
13061
13062  ENTITY mult_expression
13063    SUBTYPE OF ( multiple_arity_numeric_expression );
13064  END_ENTITY;
13065
13066  ENTITY multi_language_attribute_assignment
13067    SUBTYPE OF ( attribute_value_assignment );
13068      items  : SET [1 : ?] OF multi_language_attribute_item;
13069    DERIVE
13070      translation_language  : language := language_indication[1]\attribute_classification_assignment.assigned_class;
13071    INVERSE
13072      language_indication : SET [1 : 1] OF attribute_language_assignment FOR items;
13073    WHERE
13074      wr1: ( SELF\attribute_value_assignment.role.name = 'alternate language' );
13075      wr2: ( SIZEOF( QUERY ( ala <* language_indication | ( ( ala\attribute_classification_assignment.attribute_name =
13076               'attribute_value'  ) AND ( ala\attribute_classification_assignment.role.name = 'translated' ) ) ) ) = 1 );
13077      wr3: ( SELF\attribute_value_assignment.attribute_name <> '' );
13078      wr4: ( SIZEOF( QUERY ( ci <* items | ( SIZEOF( QUERY ( ata <* USEDIN( ci, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13079               + 'MULTI_LANGUAGE_ATTRIBUTE_ASSIGNMENT.ITEMS'  ) | ( ( ata\attribute_value_assignment.attribute_name = SELF\
13080               attribute_value_assignment.attribute_name ) AND ( ata.translation_language :=: translation_language ) ) ) ) > 1 ) ) )
13081               = 0 );
13082      wr5: ( SIZEOF( QUERY ( ci <* items | ( SIZEOF( QUERY ( ata <* USEDIN( ci, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13083               + 'ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS'  ) | ( ( ata\attribute_classification_assignment.role.name = 'primary' )
13084               AND ( ata\attribute_classification_assignment.attribute_name = SELF\attribute_value_assignment.attribute_name ) AND
13085               ( ata\attribute_classification_assignment.assigned_class :=: translation_language ) ) ) ) > 0 ) ) ) = 0 );
13086  END_ENTITY;
13087
13088  ENTITY multi_level_reference_designator
13089    SUBTYPE OF ( assembly_component_usage );
13090      location  : LIST [1 : ?] OF UNIQUE next_assembly_usage_occurrence;
13091    DERIVE
13092      SELF\product_definition_relationship.relating_product_definition : product_definition := location[1]\
13093                                                 product_definition_relationship.relating_product_definition;
13094      SELF\product_definition_relationship.related_product_definition : product_definition_or_reference := location[HIINDEX(
13095                                                 location )]\product_definition_relationship.related_product_definition;
13096      leaf                                   : product_definition_or_reference := SELF\product_definition_relationship.
13097                                                 related_product_definition;
13098      root                                   : product_definition := SELF\product_definition_relationship.
13099                                                 relating_product_definition;
13100    WHERE
13101      wr1: unambiguously_specified_multi_level_reference_designator( location );
13102      wr2: ( SIZEOF( QUERY ( cp <* location | ( NOT EXISTS( cp\assembly_component_usage.reference_designator ) ) ) ) = 0 );
13103  END_ENTITY;
13104
13105  ENTITY multiple_arity_boolean_expression
13106    ABSTRACT SUPERTYPE OF ( ONEOF ( and_expression, or_expression ) )
13107    SUBTYPE OF ( boolean_expression, multiple_arity_generic_expression );
13108      SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF boolean_expression;
13109  END_ENTITY;
13110
13111  ENTITY multiple_arity_function_call
13112    ABSTRACT SUPERTYPE OF ( ONEOF ( maximum_function, minimum_function ) )
13113    SUBTYPE OF ( multiple_arity_numeric_expression );
13114  END_ENTITY;
13115
13116  ENTITY multiple_arity_generic_expression
13117    ABSTRACT SUPERTYPE
13118    SUBTYPE OF ( generic_expression );
13119      operands  : LIST [2 : ?] OF generic_expression;
13120  END_ENTITY;
13121
13122  ENTITY multiple_arity_numeric_expression
13123    ABSTRACT SUPERTYPE OF ( ONEOF ( plus_expression, mult_expression, multiple_arity_function_call ) )
13124    SUBTYPE OF ( numeric_expression, multiple_arity_generic_expression );
13125      SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF numeric_expression;
13126  END_ENTITY;
13127
13128  ENTITY multiply_defined_cartesian_points
13129    SUBTYPE OF ( multiply_defined_geometry );
13130      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13131    WHERE
13132      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13133               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13134               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13135               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13136      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13137      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
13138               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' ] );
13139      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13140      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13141  END_ENTITY;
13142
13143  ENTITY multiply_defined_curves
13144    SUBTYPE OF ( multiply_defined_geometry );
13145      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13146    WHERE
13147      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13148               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13149               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13150               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13151      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13152      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
13153               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' ] );
13154      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13155      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13156  END_ENTITY;
13157
13158  ENTITY multiply_defined_directions
13159    SUBTYPE OF ( multiply_defined_geometry );
13160      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13161    WHERE
13162      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13163               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13164               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
13165               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13166      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
13167      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
13168               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' ] );
13169      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13170      wr5: validate_accuracy_types( SELF, [] );
13171  END_ENTITY;
13172
13173  ENTITY multiply_defined_edges
13174    SUBTYPE OF ( topology_related_to_multiply_defined_geometry );
13175      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13176    WHERE
13177      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13178               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13179               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13180               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13181      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13182      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
13183               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' ] );
13184      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13185      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13186  END_ENTITY;
13187
13188  ENTITY multiply_defined_faces
13189    SUBTYPE OF ( topology_related_to_multiply_defined_geometry );
13190      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13191    WHERE
13192      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13193               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13194               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13195               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13196      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13197      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
13198               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' ] );
13199      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13200      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13201  END_ENTITY;
13202
13203  ENTITY multiply_defined_geometry
13204    ABSTRACT SUPERTYPE OF ( ONEOF ( multiply_defined_curves, multiply_defined_surfaces, multiply_defined_cartesian_points,
13205        multiply_defined_directions, multiply_defined_placements ) )
13206    SUBTYPE OF ( inapt_geometry );
13207  END_ENTITY;
13208
13209  ENTITY multiply_defined_placements
13210    SUBTYPE OF ( multiply_defined_geometry );
13211      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13212      assessment_specification_2             : shape_data_quality_assessment_by_numerical_test;
13213    WHERE
13214      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13215               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13216               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13217               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13218      wr2: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF(
13219               assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold ) ) AND (
13220               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE'  IN value_limit_type(
13221               assessment_specification_2\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13222      wr3: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PLANE_ANGLE_AND_LENGTH_PAIR' );
13223      wr4: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT',
13224               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' ] );
13225      wr5: validate_locations_of_extreme_value_type( SELF, [] );
13226      wr6: validate_accuracy_types( SELF, [] );
13227      wr7: ( SIZEOF( QUERY ( sdqr <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13228               'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( (
13229               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( sdqr ) )
13230               AND ( SIZEOF( QUERY ( sdqiir <* bag_to_set( USEDIN( sdqr, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13231               'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( (
13232               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' ) IN
13233               TYPEOF( sdqiir ) ) AND ( SIZEOF( QUERY ( sdqiri <* sdqiir.inspected_instances | ( TYPEOF( sdqiri.inspected_elements
13234               [1] ) <> TYPEOF( sdqiri.inspected_elements[2] ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13235  END_ENTITY;
13236
13237  ENTITY multiply_defined_solids
13238    SUBTYPE OF ( inapt_manifold_solid_brep );
13239      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13240    WHERE
13241      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13242               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13243               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13244               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13245      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13246      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
13247               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' ] );
13248      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13249      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13250  END_ENTITY;
13251
13252  ENTITY multiply_defined_surfaces
13253    SUBTYPE OF ( multiply_defined_geometry );
13254      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13255    WHERE
13256      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13257               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13258               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13259               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13260      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13261      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
13262               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' ] );
13263      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13264      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13265  END_ENTITY;
13266
13267  ENTITY multiply_defined_vertices
13268    SUBTYPE OF ( topology_related_to_multiply_defined_geometry );
13269      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13270    WHERE
13271      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
13272               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13273               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13274               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13275      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13276      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT',
13277               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' ] );
13278      wr4: validate_locations_of_extreme_value_type( SELF, [] );
13279      wr5: validate_accuracy_types( SELF, [] );
13280  END_ENTITY;
13281
13282  ENTITY name_assignment
13283    ABSTRACT SUPERTYPE;
13284      assigned_name  : label;
13285    DERIVE
13286      role  : object_role := get_role( SELF );
13287    WHERE
13288      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
13289               1 );
13290  END_ENTITY;
13291
13292  ENTITY name_attribute;
13293      attribute_value  : label;
13294      named_item       : name_attribute_select;
13295  END_ENTITY;
13296
13297  ENTITY named_unit
13298    SUPERTYPE OF ( ONEOF ( si_unit, conversion_based_unit, context_dependent_unit ) ANDOR ONEOF ( length_unit, mass_unit,
13299        time_unit, electric_current_unit, thermodynamic_temperature_unit, amount_of_substance_unit, luminous_flux_unit,
13300        luminous_intensity_unit, plane_angle_unit, solid_angle_unit, ratio_unit ) );
13301      dimensions  : dimensional_exponents;
13302  END_ENTITY;
13303
13304  ENTITY narrow_surface_patch
13305    SUBTYPE OF ( geometry_with_local_near_degeneracy );
13306      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13307      width_tolerance                        : length_measure;
13308    WHERE
13309      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
13310      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
13311      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13312               'B_SPLINE_SURFACE_PATCH' ] );
13313      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13314  END_ENTITY;
13315
13316  ENTITY near_point_relationship
13317    SUBTYPE OF ( representation_item_relationship );
13318      SELF\representation_item_relationship.relating_representation_item : curve_or_surface_constraint_element;
13319      SELF\representation_item_relationship.related_representation_item : point;
13320  END_ENTITY;
13321
13322  ENTITY nearly_degenerate_geometry
13323    ABSTRACT SUPERTYPE OF ( ONEOF ( small_area_surface, short_length_curve, entirely_narrow_surface ) )
13324    SUBTYPE OF ( inapt_geometry );
13325  END_ENTITY;
13326
13327  ENTITY nearly_degenerate_surface_boundary
13328    SUBTYPE OF ( geometry_with_local_near_degeneracy );
13329      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13330    WHERE
13331      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_VALUE_RANGE' ) IN TYPEOF( SELF\
13332               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13333               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13334               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13335      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13336      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13337               'B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT' ] );
13338      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13339               'BOUNDARY_CURVE_OF_B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE' ] );
13340      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13341  END_ENTITY;
13342
13343  ENTITY nearly_degenerate_surface_patch
13344    SUBTYPE OF ( geometry_with_local_near_degeneracy );
13345      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
13346    WHERE
13347      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_VALUE_RANGE' ) IN TYPEOF( SELF\
13348               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
13349               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
13350               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
13351      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
13352      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
13353      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13354               'B_SPLINE_SURFACE_PATCH' ] );
13355      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
13356  END_ENTITY;
13357
13358  ENTITY neutral_sketch_representation
13359    SUBTYPE OF ( shape_representation );
13360      neutral_sketch_semantics   : curves_or_area;
13361      SELF\representation.items  : SET [1 : ?] OF sketch_element_select;
13362    WHERE
13363      wr1: ( SIZEOF( QUERY ( q <* items | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13364               + 'GEOMETRIC_REPRESENTATION_ITEM'  IN TYPEOF( q ) ) AND ( q\geometric_representation_item.dim = 3 ) ) ) ) ) = 0 );
13365  END_ENTITY;
13366
13367  ENTITY next_assembly_usage_occurrence
13368    SUBTYPE OF ( assembly_component_usage );
13369    UNIQUE
13370      ur1 : reference_designator, relating_product_definition;
13371  END_ENTITY;
13372
13373  ENTITY ngon_closed_profile
13374    SUBTYPE OF ( shape_aspect );
13375    WHERE
13376      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
13377      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13378               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13379               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13380               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
13381      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13382               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13383               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13384               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( ( SIZEOF( impl_rep.
13385               used_representation.items ) >= 3 ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 4 ) ) ) ) ) = 0 ) ) ) ) =
13386               0 );
13387      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13388               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13389               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13390               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
13391               pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'number of sides' ) OR (
13392               srwp_i.name = 'circumscribed diameter' ) OR ( srwp_i.name = 'corner radius' ) OR ( srwp_i.name =
13393               'diameter across flats'  ) ) ) ) = SIZEOF( pdr.used_representation.items ) ) ) ) ) = 1 ) ) ) = 1 );
13394      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13395               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13396               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13397               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13398               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
13399               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
13400      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13401               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13402               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13403               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13404               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13405               + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13406               + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'number of sides' ) ) ) ) =
13407               1 ) ) ) ) = 0 ) ) ) ) = 0 );
13408      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13409               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13410               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13411               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13412               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13413               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
13414               TYPEOF( it ) ) = 2 ) AND ( it.name IN [ 'circumscribed diameter', 'diameter across flats'] ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
13415               = 0 );
13416      wr8: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13417               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13418               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13419               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13420               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13421               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
13422               TYPEOF( it ) ) = 2 ) AND ( it.name = 'corner radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
13423  END_ENTITY;
13424
13425  ENTITY non_agreed_accuracy_parameter_usage
13426    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
13427    WHERE
13428      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13429               + 'GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT' ] );
13430  END_ENTITY;
13431
13432  ENTITY non_agreed_scale_usage
13433    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
13434    WHERE
13435      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13436               + 'CARTESIAN_TRANSFORMATION_OPERATOR_3D' ] );
13437  END_ENTITY;
13438
13439  ENTITY non_agreed_unit_usage
13440    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
13441    WHERE
13442      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13443               + 'GLOBAL_UNIT_ASSIGNED_CONTEXT' ] );
13444  END_ENTITY;
13445
13446  ENTITY non_manifold_at_edge
13447    SUBTYPE OF ( inapt_topology );
13448      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13449    WHERE
13450      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
13451      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
13452      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
13453      wr4: validate_accuracy_types( SELF, [] );
13454  END_ENTITY;
13455
13456  ENTITY non_manifold_at_vertex
13457    SUBTYPE OF ( inapt_topology );
13458      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13459    WHERE
13460      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
13461      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
13462      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'] );
13463      wr4: validate_accuracy_types( SELF, [] );
13464  END_ENTITY;
13465
13466  ENTITY non_manifold_surface_shape_representation
13467    SUBTYPE OF ( shape_representation );
13468    WHERE
13469      wr1 : ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13470                + 'FACE_BASED_SURFACE_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
13471                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
13472      wr2 : ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13473                + 'FACE_BASED_SURFACE_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF( it ) ) =
13474                1 ) ) ) > 0 );
13475      wr3 : ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
13476                TYPEOF( it ) ) ) | ( NOT ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
13477                'NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION'  ) IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) )
13478                AND ( SIZEOF( QUERY ( mr_it <* mi\mapped_item.mapping_source.mapped_representation.items | (
13479                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BASED_SURFACE_MODEL'  IN TYPEOF( mr_it ) ) ) ) > 0 ) ) ) ) )
13480                = 0 );
13481      wr4 : ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13482                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13483                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( SIZEOF( [
13484                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13485                + 'ORIENTED_FACE' ] * TYPEOF( fa ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13486      wr5 : ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13487                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13488                fbsm_faces | ( NOT ( SIZEOF( QUERY ( f_sf <* QUERY ( fa <* cfs.cfs_faces | (
13489                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'  IN TYPEOF( fa ) ) ) | ( NOT ( (
13490                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( f_sf ) ) OR nmsf_surface_check( f_sf\
13491                face_surface.face_geometry ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13492      wr6 : ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13493                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13494                fbsm_faces | ( NOT ( SIZEOF( QUERY ( o_fa <* QUERY ( fa <* cfs.cfs_faces | (
13495                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE'  IN TYPEOF( fa ) ) ) | ( NOT ( (
13496                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( o_fa\oriented_face.face_element ) )
13497                OR nmsf_surface_check( o_fa\oriented_face.face_element\face_surface.face_geometry ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
13498                = 0 );
13499      wr7 : ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13500                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13501                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13502                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF( QUERY ( bnds <*
13503                fa.bounds | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP',
13504                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP' ] * TYPEOF( bnds.bound ) ) = 1 ) ) ) ) = 0 ) ) ) ) )
13505                = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13506      wr8 : ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13507                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13508                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13509                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13510                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
13511                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT (
13512                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( oe.edge_element ) ) ) ) ) = 0 ) ) ) ) =
13513                0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13514      wr9 : ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13515                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13516                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13517                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13518                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
13519                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe_cv <* QUERY ( oe <* elp_fbnds\path.edge_list | (
13520                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'  IN TYPEOF( oe.edge_element ) ) ) | ( NOT ( SIZEOF(
13521                [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE',
13522                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13523                + 'CURVE_REPLICA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE',
13524                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' ,
13525                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13526                + 'POLYLINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE'] * TYPEOF( oe_cv.edge_element\
13527                edge_curve.edge_geometry ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13528      wr10: ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13529                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13530                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13531                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13532                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
13533                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT nmsf_curve_check( oe.
13534                edge_element\edge_curve.edge_geometry ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13535      wr11: ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13536                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13537                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13538                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13539                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
13540                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ( (
13541                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe.edge_element.edge_start ) ) AND (
13542                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( oe.edge_element.edge_end ) ) ) ) ) ) =
13543                0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13544      wr12: ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13545                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13546                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13547                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13548                QUERY ( elp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP' IN
13549                TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( QUERY ( oe <* elp_fbnds\path.edge_list | ( NOT ( ( SIZEOF( [
13550                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' ,
13551                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE' ,
13552                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ,
13553                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] * TYPEOF( oe.edge_element.edge_start\
13554                vertex_point.vertex_geometry ) ) = 1 ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13555                + 'CARTESIAN_POINT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE',
13556                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ,
13557                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] * TYPEOF( oe.edge_element.edge_end\
13558                vertex_point.vertex_geometry ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13559      wr13: ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13560                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13561                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13562                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13563                QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'
13564                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF(
13565                vlp_fbnds\vertex_loop.loop_vertex ) ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13566      wr14: ( SIZEOF( QUERY ( fbsm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13567                + 'FACE_BASED_SURFACE_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( cfs <* fbsm\face_based_surface_model.
13568                fbsm_faces | ( NOT ( SIZEOF( QUERY ( fa <* cfs.cfs_faces | ( NOT ( (
13569                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE'  IN TYPEOF( fa ) ) OR ( SIZEOF(
13570                QUERY ( vlp_fbnds <* QUERY ( bnds <* fa.bounds | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'
13571                IN TYPEOF( bnds.bound ) ) ) | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT',
13572                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE' ,
13573                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ,
13574                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] * TYPEOF( vlp_fbnds\vertex_loop.loop_vertex\
13575                vertex_point.vertex_geometry ) ) = 1 ) ) ) ) = 0 ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
13576  END_ENTITY;
13577
13578  ENTITY non_referenced_coordinate_system
13579    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
13580    WHERE
13581      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D'] );
13582  END_ENTITY;
13583
13584  ENTITY non_smooth_geometry_transition_across_edge
13585    ABSTRACT SUPERTYPE OF ( ONEOF ( g1_discontinuity_between_adjacent_faces, g2_discontinuity_between_adjacent_faces ) )
13586    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
13587  END_ENTITY;
13588
13589  ENTITY non_uniform_zone_definition
13590    SUBTYPE OF ( tolerance_zone_definition );
13591  END_ENTITY;
13592
13593  ENTITY not_expression
13594    SUBTYPE OF ( unary_boolean_expression );
13595      SELF\unary_generic_expression.operand  : boolean_expression;
13596  END_ENTITY;
13597
13598  ENTITY null_representation_item
13599    SUBTYPE OF ( representation_item );
13600  END_ENTITY;
13601
13602  ENTITY numeric_defined_function
13603    ABSTRACT SUPERTYPE OF ( ONEOF ( integer_defined_function, real_defined_function ) )
13604    SUBTYPE OF ( numeric_expression, defined_function );
13605  END_ENTITY;
13606
13607  ENTITY numeric_expression
13608    ABSTRACT SUPERTYPE OF ( ONEOF ( simple_numeric_expression, unary_numeric_expression, binary_numeric_expression,
13609        multiple_arity_numeric_expression, length_function, value_function, numeric_defined_function ) )
13610    SUBTYPE OF ( expression );
13611    DERIVE
13612      is_int        : BOOLEAN := is_int_expr( SELF );
13613      sql_mappable  : BOOLEAN := is_sql_mappable( SELF );
13614  END_ENTITY;
13615
13616  ENTITY numeric_variable
13617    SUPERTYPE OF ( ONEOF ( int_numeric_variable, real_numeric_variable ) )
13618    SUBTYPE OF ( simple_numeric_expression, variable );
13619    WHERE
13620      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF( SELF ) ) OR (
13621               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_NUMERIC_VARIABLE'  IN TYPEOF( SELF ) ) );
13622  END_ENTITY;
13623
13624  ENTITY object_role;
13625      name         : label;
13626      description  : OPTIONAL text;
13627  END_ENTITY;
13628
13629  ENTITY odd_function
13630    SUBTYPE OF ( unary_boolean_expression );
13631      SELF\unary_generic_expression.operand  : numeric_expression;
13632    WHERE
13633      wr1: is_int_expr( operand );
13634  END_ENTITY;
13635
13636  ENTITY offset_curve_2d
13637    SUBTYPE OF ( curve );
13638      basis_curve     : curve;
13639      distance        : length_measure;
13640      self_intersect  : LOGICAL;
13641    WHERE
13642      wr1: ( basis_curve.dim = 2 );
13643  END_ENTITY;
13644
13645  ENTITY offset_curve_3d
13646    SUBTYPE OF ( curve );
13647      basis_curve     : curve;
13648      distance        : length_measure;
13649      self_intersect  : LOGICAL;
13650      ref_direction   : direction;
13651    WHERE
13652      wr1: ( ( basis_curve.dim = 3 ) AND ( ref_direction.dim = 3 ) );
13653  END_ENTITY;
13654
13655  ENTITY offset_surface
13656    SUBTYPE OF ( surface );
13657      basis_surface   : surface;
13658      distance        : length_measure;
13659      self_intersect  : LOGICAL;
13660  END_ENTITY;
13661
13662  ENTITY one_direction_repeat_factor
13663    SUBTYPE OF ( geometric_representation_item );
13664      repeat_factor  : vector;
13665  END_ENTITY;
13666
13667  ENTITY open_closed_shell
13668    SUBTYPE OF ( erroneous_topology );
13669      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13670    WHERE
13671      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
13672      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL'] );
13673      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
13674      wr4: validate_accuracy_types( SELF, [] );
13675  END_ENTITY;
13676
13677  ENTITY open_edge_loop
13678    SUBTYPE OF ( erroneous_topology );
13679      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
13680    WHERE
13681      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
13682      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'] );
13683      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE'] );
13684      wr4: validate_accuracy_types( SELF, [] );
13685  END_ENTITY;
13686
13687  ENTITY open_path_profile
13688    SUBTYPE OF ( shape_aspect );
13689    WHERE
13690      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
13691      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13692               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13693               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13694               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
13695      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13696               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13697               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13698               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
13699               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
13700      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13701               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13702               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13703               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13704               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
13705               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
13706      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13707               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13708               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13709               + 'PATH_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
13710      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13711               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13712               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13713               + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
13714               'profile limit'  ) ) ) ) <= 1 ) ) ) ) = 0 );
13715  END_ENTITY;
13716
13717  ENTITY open_shell
13718    SUBTYPE OF ( connected_face_set );
13719  END_ENTITY;
13720
13721  ENTITY or_expression
13722    SUBTYPE OF ( multiple_arity_boolean_expression );
13723  END_ENTITY;
13724
13725  ENTITY ordinal_date
13726    SUBTYPE OF ( date );
13727      day_component  : day_in_year_number;
13728    WHERE
13729      wr1: ( ( ( NOT leap_year( SELF.year_component ) ) AND ( 1 <= day_component ) AND ( day_component <= 365 ) ) OR (
13730               leap_year( SELF.year_component ) AND ( 1 <= day_component ) AND ( day_component <= 366 ) ) );
13731  END_ENTITY;
13732
13733  ENTITY ordinate_dimension
13734    SUBTYPE OF ( projection_directed_callout );
13735  END_ENTITY;
13736
13737  ENTITY organization;
13738      id           : OPTIONAL identifier;
13739      name         : label;
13740      description  : OPTIONAL text;
13741  END_ENTITY;
13742
13743  ENTITY organization_assignment
13744    ABSTRACT SUPERTYPE;
13745      assigned_organization  : organization;
13746      role                   : organization_role;
13747  END_ENTITY;
13748
13749  ENTITY organization_relationship;
13750      name                   : label;
13751      description            : OPTIONAL text;
13752      relating_organization  : organization;
13753      related_organization   : organization;
13754  END_ENTITY;
13755
13756  ENTITY organization_role;
13757      name  : label;
13758    DERIVE
13759      description  : text := get_description_value( SELF );
13760    WHERE
13761      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
13762               <= 1 );
13763  END_ENTITY;
13764
13765  ENTITY organizational_address
13766    SUBTYPE OF ( address );
13767      organizations  : SET [1 : ?] OF organization;
13768      description    : OPTIONAL text;
13769  END_ENTITY;
13770
13771  ENTITY organizational_project;
13772      name                       : label;
13773      description                : OPTIONAL text;
13774      responsible_organizations  : SET [1 : ?] OF organization;
13775    DERIVE
13776      id  : identifier := get_id_value( SELF );
13777    WHERE
13778      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
13779  END_ENTITY;
13780
13781  ENTITY organizational_project_assignment
13782    ABSTRACT SUPERTYPE;
13783      assigned_organizational_project  : organizational_project;
13784      role                             : organizational_project_role;
13785  END_ENTITY;
13786
13787  ENTITY organizational_project_relationship;
13788      name                             : label;
13789      description                      : OPTIONAL text;
13790      relating_organizational_project  : organizational_project;
13791      related_organizational_project   : organizational_project;
13792  END_ENTITY;
13793
13794  ENTITY organizational_project_role;
13795      name         : label;
13796      description  : OPTIONAL text;
13797  END_ENTITY;
13798
13799  ENTITY oriented_closed_shell
13800    SUBTYPE OF ( closed_shell );
13801      closed_shell_element  : closed_shell;
13802      orientation           : BOOLEAN;
13803    DERIVE
13804      SELF\connected_face_set.cfs_faces  : SET [1 : ?] OF face := conditional_reverse( SELF.orientation, SELF.
13805                                             closed_shell_element.cfs_faces );
13806    WHERE
13807      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF( SELF.closed_shell_element ) ) );
13808  END_ENTITY;
13809
13810  ENTITY oriented_edge
13811    SUBTYPE OF ( edge );
13812      edge_element  : edge;
13813      orientation   : BOOLEAN;
13814    DERIVE
13815      SELF\edge.edge_start  : vertex := boolean_choose( SELF.orientation, SELF.edge_element.edge_start, SELF.edge_element.
13816                                edge_end );
13817      SELF\edge.edge_end    : vertex := boolean_choose( SELF.orientation, SELF.edge_element.edge_end, SELF.edge_element.
13818                                edge_start );
13819    WHERE
13820      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF( SELF.edge_element ) ) );
13821  END_ENTITY;
13822
13823  ENTITY oriented_face
13824    SUBTYPE OF ( face );
13825      face_element  : face;
13826      orientation   : BOOLEAN;
13827    DERIVE
13828      SELF\face.bounds  : SET [1 : ?] OF face_bound := conditional_reverse( SELF.orientation, SELF.face_element.bounds );
13829    WHERE
13830      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF( SELF.face_element ) ) );
13831  END_ENTITY;
13832
13833  ENTITY oriented_joint
13834    SUBTYPE OF ( oriented_edge );
13835      SELF\oriented_edge.edge_element  : kinematic_joint;
13836  END_ENTITY;
13837
13838  ENTITY oriented_open_shell
13839    SUBTYPE OF ( open_shell );
13840      open_shell_element  : open_shell;
13841      orientation         : BOOLEAN;
13842    DERIVE
13843      SELF\connected_face_set.cfs_faces  : SET [1 : ?] OF face := conditional_reverse( SELF.orientation, SELF.open_shell_element.
13844                                             cfs_faces );
13845    WHERE
13846      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF( SELF.open_shell_element ) ) );
13847  END_ENTITY;
13848
13849  ENTITY oriented_path
13850    SUBTYPE OF ( path );
13851      path_element  : path;
13852      orientation   : BOOLEAN;
13853    DERIVE
13854      SELF\path.edge_list  : LIST [1 : ?] OF UNIQUE oriented_edge := conditional_reverse( SELF.orientation, SELF.path_element.
13855                               edge_list );
13856    WHERE
13857      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF( SELF.path_element ) ) );
13858  END_ENTITY;
13859
13860  ENTITY oriented_surface
13861    SUBTYPE OF ( surface );
13862      orientation  : BOOLEAN;
13863  END_ENTITY;
13864
13865  ENTITY outer_boundary_curve
13866    SUBTYPE OF ( boundary_curve );
13867  END_ENTITY;
13868
13869  ENTITY outer_round
13870    SUBTYPE OF ( feature_definition );
13871    WHERE
13872      wr1: ( ( NOT ( SELF\characterized_object.description = 'outer diameter' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
13873               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( SIZEOF( QUERY ( pdr <*
13874               USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | (
13875               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN TYPEOF( pdr.
13876               used_representation ) ) AND ( SIZEOF( pdr.used_representation.items ) = 3 ) ) ) ) = 1 ) ) ) = 1 ) );
13877      wr2: ( ( NOT ( SELF\characterized_object.description = 'outer diameter to shoulder' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN(
13878               SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | ( SIZEOF(
13879               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
13880               + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
13881               TYPEOF( pdr.used_representation ) ) AND ( 2 <= SIZEOF( pdr.used_representation.items ) ) AND ( SIZEOF( pdr.
13882               used_representation.items ) <= 3 ) ) ) ) = 1 ) ) ) = 1 ) );
13883      wr3: ( SELF\characterized_object.description IN [ 'outer diameter', 'outer diameter to shoulder'] );
13884      wr4: ( ( NOT ( SELF\characterized_object.description = 'outer diameter' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
13885               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
13886               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13887               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13888               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13889               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13890               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
13891               TYPEOF( it ) ) = 2 ) AND ( it.name = 'length' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
13892      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13893               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13894               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13895               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13896               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13897               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
13898               TYPEOF( it ) ) = 2 ) AND ( it.name = 'diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
13899      wr6: ( ( NOT ( SELF\characterized_object.description = 'outer diameter to shoulder' ) ) OR ( SIZEOF( QUERY ( pds <*
13900               QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
13901               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
13902               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
13903               sa_occ.description = 'v-shape boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
13904               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
13905               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
13906               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' IN TYPEOF( sdr.
13907               relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description = 'v-shape' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) =
13908               0 ) );
13909      wr7: ( ( NOT ( SELF\characterized_object.description = 'outer diameter' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
13910               USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
13911               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
13912               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
13913               sa_occ.description = 'reduced size occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
13914               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
13915               description = 'taper usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
13916               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN TYPEOF( sdr.
13917               relating_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTER_ROUND' IN TYPEOF( sdr.
13918               related_shape_aspect.of_shape.definition ) ) AND ( sdr.name = 'reduced size' ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 0 ) );
13919      wr8: ( ( NOT ( SELF\characterized_object.description = 'outer diameter to shoulder' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN(
13920               SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | ( NOT ( SIZEOF(
13921               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13922               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13923               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13924               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13925               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
13926               TYPEOF( it ) ) = 2 ) AND ( it.name = 'length' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
13927      wr9: ( ( NOT ( SELF\characterized_object.description = 'outer diameter to shoulder' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN(
13928               SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | ( NOT ( SIZEOF(
13929               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13930               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13931               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
13932               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13933               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
13934               TYPEOF( it ) ) = 2 ) AND ( it.name = 'feature length' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
13935  END_ENTITY;
13936
13937  ENTITY outside_profile
13938    SUBTYPE OF ( feature_definition );
13939    WHERE
13940      wr1 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
13941                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13942                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13943                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( pdr.
13944                used_representation.items ) = 1 ) ) ) ) = 1 ) ) ) = 1 );
13945      wr2 : ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13946                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13947                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
13948                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description IN [
13949                'boundary occurrence' , 'non-planar boundary occurrence', 'partial circular boundary occurrence',
13950                'closed circular boundary occurrence' , 'open rectangular boundary occurrence',
13951                'closed rectangular boundary occurrence' ] ) ) ) = 1 ) ) ) ) = 0 );
13952      wr3 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13953                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13954                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
13955                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description =
13956                'boundary occurrence'  ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
13957                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
13958                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
13959                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
13960                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13961                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile usage' ) AND (
13962                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
13963                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
13964                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
13965                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
13966                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ,
13967                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' ,
13968                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' ,
13969                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE' ,
13970                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE' ,
13971                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13972                + 'TEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] * TYPEOF( sdr.
13973                relating_shape_aspect ) ) = 1 ) AND ( sdr.relating_shape_aspect.description = 'outside boundary' ) ) ) ) = 1 ) ) )
13974                = 1 ) ) ) ) = 0 ) );
13975      wr4 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13976                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13977                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
13978                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description IN [
13979                'complex boundary occurrence' , 'partial circular boundary occurrence', 'closed circular boundary occurrence',
13980                'open rectangular boundary occurrence' , 'closed rectangular boundary occurrence'] ) ) ) = 1 ) ) ) ) = 0 ) ) OR
13981                ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13982                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13983                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
13984                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( NOT ( SIZEOF( QUERY ( sdr <*
13985                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
13986                + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile floor usage' ) AND (
13987                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
13988                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROFILE_FLOOR'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND (
13989                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE'  IN TYPEOF( sdr.related_shape_aspect.of_shape.
13990                definition ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
13991      wr5 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13992                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
13993                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
13994                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description IN [
13995                'outside boundary' , 'complex boundary occurrence', 'partial circular boundary occurrence',
13996                'closed circular boundary occurrence' , 'open rectangular boundary occurrence',
13997                'closed rectangular boundary occurrence' ] ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
13998                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
13999                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
14000                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
14001                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14002                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'path feature component usage' )
14003                AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN TYPEOF( sar ) ) ) ) | ( (
14004                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT'] * TYPEOF( sdr.
14005                relating_shape_aspect ) ) = 1 ) AND ( sdr.name = 'profile swept shape' ) AND ( sdr.relating_shape_aspect.
14006                description = 'linear' ) ) ) ) = 1 ) ) ) = 1 ) ) ) ) = 0 ) );
14007      wr6 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14008                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14009                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
14010                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description =
14011                'complex boundary occurrence'  ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
14012                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
14013                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
14014                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
14015                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14016                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile usage' ) AND (
14017                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
14018                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
14019                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
14020                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
14021                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ,
14022                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' ,
14023                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' ,
14024                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE' ,
14025                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14026                + 'TEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE',
14027                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE' ] * TYPEOF( sdr.relating_shape_aspect ) ) = 1 ) ) )
14028                = 1 ) ) ) = 1 ) ) ) ) = 0 ) );
14029      wr7 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14030                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14031                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
14032                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description =
14033                'partial circular boundary occurrence'  ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
14034                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
14035                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
14036                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
14037                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14038                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile usage' ) AND (
14039                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
14040                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) )
14041                = 1 ) ) ) = 1 ) ) ) ) = 0 ) );
14042      wr8 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14043                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14044                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
14045                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description =
14046                'closed circular boundary occurrence'  ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
14047                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
14048                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
14049                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
14050                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14051                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile usage' ) AND (
14052                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
14053                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) )
14054                = 1 ) ) ) = 1 ) ) ) ) = 0 ) );
14055      wr9 : ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14056                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14057                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
14058                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description =
14059                'open rectangular boundary occurrence'  ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
14060                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
14061                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
14062                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
14063                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14064                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile usage' ) AND (
14065                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
14066                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) )
14067                = 1 ) ) ) = 1 ) ) ) ) = 0 ) );
14068      wr10: ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14069                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14070                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
14071                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description =
14072                'closed rectangular boundary occurrence'  ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
14073                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
14074                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
14075                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
14076                | ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14077                + 'SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile usage' ) AND (
14078                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
14079                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE'  IN TYPEOF( sdr.
14080                relating_shape_aspect ) ) ) ) = 1 ) ) ) = 1 ) ) ) ) = 0 ) );
14081      wr11: ( ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14082                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14083                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
14084                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( sa_occ.description IN [
14085                'boundary occurrence' , 'complex boundary occurrence', 'partial circular boundary occurrence',
14086                'closed circular boundary occurrence' , 'open rectangular boundary occurrence',
14087                'closed rectangular boundary occurrence' ] ) ) ) = 1 ) ) ) ) = 0 ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14088                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14089                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14090                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
14091                TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name = 'removal direction' ) ) ) ) = 1 ) ) ) ) =
14092                0 ) );
14093      wr12: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
14094                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
14095                AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
14096  END_ENTITY;
14097
14098  ENTITY over_riding_styled_item
14099    SUBTYPE OF ( styled_item );
14100      over_ridden_style  : styled_item;
14101  END_ENTITY;
14102
14103  ENTITY over_used_vertex
14104    SUBTYPE OF ( inapt_topology );
14105      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
14106    WHERE
14107      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
14108               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
14109               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
14110               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
14111      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
14112      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'] );
14113      wr4: validate_locations_of_extreme_value_type( SELF, [] );
14114      wr5: validate_accuracy_types( SELF, [] );
14115  END_ENTITY;
14116
14117  ENTITY overcomplex_geometry
14118    ABSTRACT SUPERTYPE OF ( ONEOF ( excessively_high_degree_curve, excessively_high_degree_surface,
14119        surface_with_excessive_patches_in_one_direction, curve_with_excessive_segments, high_degree_linear_curve,
14120        high_degree_planar_surface, high_degree_conic, high_degree_axi_symmetric_surface ) )
14121    SUBTYPE OF ( inapt_geometry );
14122  END_ENTITY;
14123
14124  ENTITY overcomplex_topology_and_geometry_relationship
14125    ABSTRACT SUPERTYPE OF ( ONEOF ( unused_patches, edge_with_excessive_segments,
14126        face_surface_with_excessive_patches_in_one_direction ) )
14127    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
14128  END_ENTITY;
14129
14130  ENTITY overlapping_geometry
14131    ABSTRACT SUPERTYPE OF ( ONEOF ( partly_overlapping_curves, partly_overlapping_surfaces ) )
14132    SUBTYPE OF ( inapt_geometry );
14133  END_ENTITY;
14134
14135  ENTITY package_product_concept_feature
14136    SUBTYPE OF ( product_concept_feature );
14137    WHERE
14138      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CONDITIONAL_CONCEPT_FEATURE' ) IN TYPEOF( SELF ) ) );
14139      wr2: ( SIZEOF( QUERY ( cfr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
14140               'CONCEPT_FEATURE_RELATIONSHIP.'  + 'RELATING_PRODUCT_CONCEPT_FEATURE' ) | ( ( (
14141               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION' ) IN TYPEOF(
14142               cfr ) ) AND ( SIZEOF( QUERY ( ipcf <* USEDIN( cfr, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
14143               'CONDITIONAL_CONCEPT_FEATURE.'  + 'CONDITION' ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
14144               'INCLUSION_PRODUCT_CONCEPT_FEATURE'  ) IN TYPEOF( ipcf ) ) ) ) = 1 ) ) ) ) > 0 );
14145  END_ENTITY;
14146
14147  ENTITY pair_representation_relationship
14148    SUBTYPE OF ( geometric_representation_item, representation_relationship_with_transformation );
14149      SELF\representation_relationship.rep_1 : kinematic_link_representation;
14150      SELF\representation_relationship.rep_2 : kinematic_link_representation;
14151      SELF\representation_relationship_with_transformation.transformation_operator : kinematic_pair;
14152    WHERE
14153      wr1: ( transformation_operator\item_defined_transformation.transform_item_1 IN rep_1.items );
14154      wr2: ( transformation_operator\item_defined_transformation.transform_item_2 IN rep_2.items );
14155      wr3: ( rep_1\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_start );
14156      wr4: ( rep_2\kinematic_link_representation.represented_link = transformation_operator\kinematic_pair.joint.edge_end );
14157  END_ENTITY;
14158
14159  ENTITY pair_value
14160    ABSTRACT SUPERTYPE OF ( ONEOF ( sliding_surface_pair_value, rolling_surface_pair_value, revolute_pair_value,
14161        prismatic_pair_value, screw_pair_value, cylindrical_pair_value, spherical_pair_value, sliding_curve_pair_value,
14162        rolling_curve_pair_value, gear_pair_value, rack_and_pinion_pair_value, universal_pair_value, planar_pair_value,
14163        unconstrained_pair_value, point_on_surface_pair_value, point_on_planar_curve_pair_value, low_order_kinematic_pair_value ) )
14164    SUBTYPE OF ( geometric_representation_item );
14165      applies_to_pair  : kinematic_pair;
14166  END_ENTITY;
14167
14168  ENTITY parabola
14169    SUBTYPE OF ( conic );
14170      focal_dist  : length_measure;
14171    WHERE
14172      wr1: ( focal_dist <> 0 );
14173  END_ENTITY;
14174
14175  ENTITY parallel_assembly_constraint
14176    SUBTYPE OF ( binary_assembly_constraint, parallel_geometric_constraint );
14177  END_ENTITY;
14178
14179  ENTITY parallel_assembly_constraint_with_dimension
14180    SUBTYPE OF ( parallel_assembly_constraint, pgc_with_dimension );
14181  END_ENTITY;
14182
14183  ENTITY parallel_composed_function
14184    SUBTYPE OF ( maths_function, multiple_arity_generic_expression );
14185      source_of_domain  : maths_space_or_function;
14186      prep_functions    : LIST [1 : ?] OF maths_function;
14187      final_function    : maths_function_select;
14188    DERIVE
14189      SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF generic_expression := convert_to_operands_prcmfn(
14190                                                 source_of_domain, prep_functions, final_function );
14191    WHERE
14192      wr1: no_cyclic_domain_reference( source_of_domain, [SELF] );
14193      wr2: expression_is_constant( domain_from( source_of_domain ) );
14194      wr3: parallel_composed_function_domain_check( domain_from( source_of_domain ), prep_functions );
14195      wr4: parallel_composed_function_composability_check( prep_functions, final_function );
14196  END_ENTITY;
14197
14198  ENTITY parallel_geometric_constraint
14199    SUBTYPE OF ( explicit_geometric_constraint );
14200      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
14201      SELF\explicit_constraint.reference_elements : SET [0 : 1] OF linear_geometry_constraint_element;
14202  END_ENTITY;
14203
14204  ENTITY parallel_offset
14205    SUBTYPE OF ( derived_shape_aspect );
14206      offset  : measure_with_unit;
14207    WHERE
14208      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) = 1 );
14209  END_ENTITY;
14210
14211  ENTITY parallel_offset_geometric_constraint
14212    SUBTYPE OF ( explicit_geometric_constraint );
14213      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve_or_surface_constraint_element;
14214      SELF\explicit_constraint.reference_elements : SET [0 : 1] OF curve_or_surface_constraint_element;
14215      offset_type                            : parallel_offset_type;
14216    WHERE
14217      wr1: ( NOT ( ( ( offset_type = curve_2d_offset ) OR ( offset_type = curve_3d_offset ) ) AND ( SIZEOF( QUERY ( q <* ( SELF\
14218               explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements ) | (
14219               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'  IN TYPEOF( q ) ) ) ) > 0 ) ) );
14220      wr2: ( NOT ( ( offset_type = surface_offset ) AND ( SIZEOF( QUERY ( q <* ( SELF\explicit_constraint.constrained_elements +
14221               SELF\explicit_constraint.reference_elements ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN
14222               TYPEOF( q ) ) ) ) > 0 ) ) );
14223  END_ENTITY;
14224
14225  ENTITY parallelism_tolerance
14226    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
14227  END_ENTITY;
14228
14229  ENTITY parametric_representation_context
14230    SUBTYPE OF ( representation_context );
14231  END_ENTITY;
14232
14233  ENTITY part_laminate_table
14234    SUPERTYPE OF ( ONEOF ( composite_assembly_table, ply_laminate_table ) )
14235    SUBTYPE OF ( laminate_table );
14236  END_ENTITY;
14237
14238  ENTITY partial_circular_profile
14239    SUBTYPE OF ( shape_aspect );
14240    WHERE
14241      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
14242      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14243               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14244               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14245               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
14246      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14247               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14248               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14249               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
14250               used_representation.items ) >= 3 ) ) ) ) = 0 ) ) ) ) = 0 );
14251      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14252               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14253               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14254               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14255               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
14256               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
14257      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14258               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14259               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14260               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14261               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14262               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
14263               TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
14264      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14265               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14266               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14267               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14268               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14269               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
14270               * TYPEOF( it ) ) = 2 ) AND ( it.name = 'sweep angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
14271      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14272               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14273               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14274               + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
14275               'profile limit'  ) ) ) ) <= 1 ) ) ) ) = 0 );
14276  END_ENTITY;
14277
14278  ENTITY partial_derivative_expression
14279    SUBTYPE OF ( unary_generic_expression );
14280      d_variables  : LIST [1 : ?] OF maths_variable;
14281      extension    : extension_options;
14282    DERIVE
14283      derivand  : generic_expression := SELF\unary_generic_expression.operand;
14284    WHERE
14285      wr1: has_values_space( derivand );
14286      wr2: space_is_continuum( values_space_of( derivand ) );
14287      wr3: ( SIZEOF( QUERY ( vbl <* d_variables | ( ( NOT subspace_of( values_space_of( vbl ), the_reals ) ) AND ( NOT
14288               subspace_of( values_space_of( vbl ), the_complex_numbers ) ) ) ) ) = 0 );
14289  END_ENTITY;
14290
14291  ENTITY partial_derivative_function
14292    SUBTYPE OF ( maths_function, unary_generic_expression );
14293      SELF\unary_generic_expression.operand  : maths_function;
14294      d_variables                            : LIST [1 : ?] OF input_selector;
14295      extension                              : extension_options;
14296    DERIVE
14297      derivand  : maths_function := SELF\unary_generic_expression.operand;
14298    WHERE
14299      wr1: space_is_continuum( derivand.range );
14300      wr2: partial_derivative_check( derivand.domain, d_variables );
14301  END_ENTITY;
14302
14303  ENTITY partial_document_with_structured_text_representation_assignment
14304    SUBTYPE OF ( applied_document_usage_constraint_assignment, characterized_object );
14305  END_ENTITY;
14306
14307  ENTITY partly_overlapping_curves
14308    SUBTYPE OF ( overlapping_geometry );
14309      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
14310      interference_tolerance                 : length_measure;
14311    WHERE
14312      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
14313               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
14314               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
14315               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
14316      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
14317      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE',
14318               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' ] );
14319      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE',
14320               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' ] );
14321      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
14322  END_ENTITY;
14323
14324  ENTITY partly_overlapping_edges
14325    SUBTYPE OF ( topology_related_to_overlapping_geometry );
14326      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
14327      interference_tolerance                 : length_measure;
14328    WHERE
14329      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
14330               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
14331               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
14332               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
14333      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
14334      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE',
14335               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' ] );
14336      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE',
14337               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBEDGE' ] );
14338      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
14339  END_ENTITY;
14340
14341  ENTITY partly_overlapping_faces
14342    SUBTYPE OF ( topology_related_to_overlapping_geometry );
14343      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
14344      interference_tolerance                 : length_measure;
14345    WHERE
14346      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
14347               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
14348               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN value_limit_type( SELF\
14349               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
14350      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' );
14351      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE',
14352               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' ] );
14353      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE',
14354               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' ] );
14355      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE'] );
14356  END_ENTITY;
14357
14358  ENTITY partly_overlapping_solids
14359    SUBTYPE OF ( inapt_manifold_solid_brep );
14360      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
14361      interference_tolerance                 : length_measure;
14362    WHERE
14363      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
14364               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
14365               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN value_limit_type( SELF\
14366               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
14367      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' );
14368      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP',
14369               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP' ] );
14370      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE',
14371               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' ] );
14372      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE'] );
14373  END_ENTITY;
14374
14375  ENTITY partly_overlapping_surfaces
14376    SUBTYPE OF ( overlapping_geometry );
14377      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
14378      interference_tolerance                 : length_measure;
14379    WHERE
14380      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
14381               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
14382               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN value_limit_type( SELF\
14383               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
14384      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' );
14385      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE',
14386               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' ] );
14387      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14388               + 'CURVE_BOUNDED_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE'] );
14389      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE'] );
14390  END_ENTITY;
14391
14392  ENTITY path
14393    SUPERTYPE OF ( ONEOF ( edge_loop, oriented_path ) )
14394    SUBTYPE OF ( topological_representation_item );
14395      edge_list  : LIST [1 : ?] OF UNIQUE oriented_edge;
14396    WHERE
14397      wr1: path_head_to_tail( SELF );
14398  END_ENTITY;
14399
14400  ENTITY path_area_with_parameters
14401    SUBTYPE OF ( complex_area, mapped_item );
14402    WHERE
14403      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( SELF\mapped_item.mapping_target ) );
14404      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE_PARAMETERS_REPRESENTATION' IN TYPEOF( SELF\mapped_item.
14405               mapping_source\representation_map.mapped_representation ) );
14406      wr3: ( SELF\mapped_item.mapping_source\representation_map.mapping_origin\representation_item.name = 'curve width' );
14407  END_ENTITY;
14408
14409  ENTITY path_feature_component
14410    SUBTYPE OF ( shape_aspect );
14411    WHERE
14412      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
14413      wr2 : ( SELF.description IN [ 'partial circular', 'complete circular', 'linear', 'complex'] );
14414      wr3 : ( ( NOT ( SELF.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14415                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14416                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14417                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
14418                TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
14419      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
14420                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14421                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14422                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14423                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
14424                IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
14425      wr5 : ( ( NOT ( SELF.description = 'partial circular' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14426                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14427                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14428                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14429                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
14430                used_representation.items ) = 3 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14431      wr6 : ( ( NOT ( SELF.description = 'partial circular' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14432                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14433                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14434                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14435                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14436                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14437                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
14438                TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14439      wr7 : ( ( NOT ( SELF.description = 'partial circular' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14440                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14441                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14442                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14443                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14444                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14445                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
14446                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'sweep angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14447      wr8 : ( ( NOT ( SELF.description = 'complete circular' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14448                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14449                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14450                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14451                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
14452                used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14453      wr9 : ( ( NOT ( SELF.description = 'complete circular' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14454                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14455                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14456                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14457                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14458                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14459                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
14460                TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14461      wr10: ( ( NOT ( SELF.description = 'linear' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14462                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14463                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14464                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14465                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
14466                used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14467      wr11: ( ( NOT ( SELF.description = 'linear' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14468                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14469                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14470                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14471                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14472                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14473                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
14474                TYPEOF( it ) ) = 2 ) AND ( it.name = 'distance' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14475      wr12: ( ( NOT ( SELF.description = 'linear' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14476                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14477                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14478                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
14479                TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
14480      wr13: ( ( NOT ( SELF.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
14481                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14482                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14483                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION' IN TYPEOF(
14484                pdr.used_representation ) ) AND ( pdr.used_representation.name = 'sweep path' ) AND ( SIZEOF( QUERY ( srwp_i <*
14485                pdr.used_representation.items | ( srwp_i.name = 'profile shape' ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
14486  END_ENTITY;
14487
14488  ENTITY path_node
14489    ABSTRACT SUPERTYPE OF ( ONEOF ( point_to_point_path, circular_path, linear_path, curve_based_path ) )
14490    SUBTYPE OF ( kinematic_path_segment );
14491      placement_end  : placement;
14492  END_ENTITY;
14493
14494  ENTITY path_parameter_representation
14495    SUBTYPE OF ( definitional_representation );
14496      SELF\representation.context_of_items  : path_parameter_representation_context;
14497      SELF\representation.items             : SET [1 : ?] OF bounded_curve;
14498    WHERE
14499      wr1: ( SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2 );
14500  END_ENTITY;
14501
14502  ENTITY path_parameter_representation_context
14503    SUBTYPE OF ( geometric_representation_context, parametric_representation_context );
14504  END_ENTITY;
14505
14506  ENTITY path_shape_representation
14507    SUBTYPE OF ( shape_representation );
14508    WHERE
14509      wr1: ( SIZEOF( SELF.items ) >= 1 );
14510      wr2: ( SIZEOF( QUERY ( i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
14511               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14512               + 'PATH' ] * TYPEOF( i ) ) = 1 ) ) ) >= 1 );
14513  END_ENTITY;
14514
14515  ENTITY pattern_offset_membership
14516    SUBTYPE OF ( feature_component_relationship );
14517    WHERE
14518      wr1 : ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.relating_shape_aspect,
14519                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATING_SHAPE_ASPECT' ) | ( (
14520                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar
14521                :<>: SELF ) ) ) | ( SIZEOF( QUERY ( pdr <* QUERY ( pd <* USEDIN( fcr.related_shape_aspect.of_shape,
14522                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
14523                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( SIZEOF( [
14524                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' ,
14525                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' ] * TYPEOF( pdr.definition ) ) = 1 ) ) ) =
14526                0 ) ) ) = 0 );
14527      wr2 : ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect,
14528                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( (
14529                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar
14530                :<>: SELF ) ) ) | ( ( fcr.description = 'modified pattern' ) AND (
14531                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN'  IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) )
14532                >= 1 );
14533      wr3 : ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect,
14534                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( (
14535                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar
14536                :<>: SELF ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN TYPEOF( fcr.
14537                relating_shape_aspect ) ) AND ( NOT ( SIZEOF( QUERY ( modfcr <* QUERY ( modsar <* USEDIN( fcr.
14538                relating_shape_aspect, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
14539                + 'RELATING_SHAPE_ASPECT'  ) | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
14540                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' ] * TYPEOF( modsar.related_shape_aspect.
14541                of_shape.definition ) ) = 1 ) AND ( modsar :<>: fcr ) ) ) | ( NOT ( modfcr.related_shape_aspect.of_shape.
14542                definition :=: SELF.relating_shape_aspect.of_shape.definition ) ) ) ) = 0 ) ) ) ) ) = 0 );
14543      wr4 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect
14544                .of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14545                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( USEDIN( pd,
14546                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) ) = 2 ) ) ) )
14547                = 0 ) );
14548      wr5 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14549                of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14550                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( USEDIN( pd,
14551                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) ) = 1 ) ) ) )
14552                = 0 ) );
14553      wr6 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14554                of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14555                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14556                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14557                + 'DEFINITION'  ) | ( NOT ( SIZEOF( pdr.used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14558      wr7 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14559                of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14560                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14561                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14562                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14563                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14564                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14565                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14566                + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'index number' ) ) ) ) = 1 ) ) ) )
14567                = 0 ) ) ) ) = 0 ) );
14568      wr8 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14569                of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14570                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14571                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14572                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14573                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14574                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14575                + 'PLANE_ANGLE_MEASURE_WITH_UNIT'  IN TYPEOF( it ) ) AND ( it.name = 'offset' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14576      wr9 : ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect
14577                .of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14578                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14579                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14580                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14581                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
14582                used_representation.items ) = 3 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14583      wr10: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect
14584                .of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14585                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14586                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14587                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14588                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14589                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14590                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14591                + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'row index' ) ) ) ) = 1 ) ) ) )
14592                = 0 ) ) ) ) = 0 ) );
14593      wr11: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect
14594                .of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14595                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14596                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14597                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14598                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14599                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14600                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14601                + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'column index' ) ) ) ) = 1 ) ) ) )
14602                = 0 ) ) ) ) = 0 ) );
14603      wr12: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect
14604                .of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14605                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14606                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14607                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14608                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14609                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14610                + 'LENGTH_MEASURE_WITH_UNIT'  IN TYPEOF( it ) ) AND ( it.name = 'offset distance' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
14611                = 0 ) );
14612      wr13: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect
14613                .of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14614                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14615                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14616                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
14617                TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name = 'offset direction' ) ) ) ) = 1 ) ) ) ) =
14618                0 ) );
14619  END_ENTITY;
14620
14621  ENTITY pattern_omit_membership
14622    SUBTYPE OF ( feature_component_relationship );
14623    WHERE
14624      wr1: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.relating_shape_aspect,
14625               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATING_SHAPE_ASPECT' ) | ( (
14626               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar
14627               :<>: SELF ) ) ) | ( SIZEOF( QUERY ( pdr <* QUERY ( pd <* USEDIN( fcr.related_shape_aspect.of_shape,
14628               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
14629               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( SIZEOF( [
14630               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' ,
14631               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' ] * TYPEOF( pdr.definition ) ) = 1 ) ) ) = 0 ) ) )
14632               = 0 );
14633      wr2: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect,
14634               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( (
14635               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar
14636               :<>: SELF ) ) ) | ( ( fcr.description = 'modified pattern' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14637               + 'MODIFIED_PATTERN'  IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) ) >= 1 );
14638      wr3: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF.related_shape_aspect,
14639               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( (
14640               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND ( sar
14641               :<>: SELF ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MODIFIED_PATTERN' IN TYPEOF( fcr.
14642               relating_shape_aspect ) ) AND ( NOT ( SIZEOF( QUERY ( modfcr <* QUERY ( modsar <* USEDIN( fcr.relating_shape_aspect,
14643               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( (
14644               SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN',
14645               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' ] * TYPEOF( modsar.related_shape_aspect.
14646               of_shape.definition ) ) = 1 ) AND ( modsar :<>: fcr ) ) ) | ( NOT ( modfcr.related_shape_aspect.of_shape.definition
14647               :=: SELF.relating_shape_aspect.of_shape.definition ) ) ) ) = 0 ) ) ) ) ) = 0 );
14648      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14649               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF( USEDIN( pd,
14650               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) ) = 1 ) ) ) ) =
14651               0 );
14652      wr5: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14653               of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14654               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14655               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14656               + 'DEFINITION'  ) | ( NOT ( SIZEOF( pdr.used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14657      wr6: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14658               of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14659               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14660               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14661               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14662               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14663               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14664               + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14665               + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'index number' ) ) ) ) = 1 ) ) ) )
14666               = 0 ) ) ) ) = 0 ) );
14667      wr7: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14668               of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14669               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14670               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
14671               + 'DEFINITION'  ) | ( NOT ( SIZEOF( pdr.used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 ) );
14672      wr8: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14673               of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14674               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14675               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14676               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14677               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14678               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14679               + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14680               + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'row index' ) ) ) ) = 1 ) ) ) )
14681               = 0 ) ) ) ) = 0 ) );
14682      wr9: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_PATTERN' IN TYPEOF( SELF.relating_shape_aspect.
14683               of_shape.definition ) ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF.related_shape_aspect,
14684               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
14685               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14686               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14687               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
14688               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14689               + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14690               + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'column index' ) ) ) ) = 1 ) ) ) )
14691               = 0 ) ) ) ) = 0 ) );
14692  END_ENTITY;
14693
14694  ENTITY pcurve
14695    SUBTYPE OF ( curve );
14696      basis_surface       : surface;
14697      reference_to_curve  : definitional_representation;
14698    WHERE
14699      wr1: ( SIZEOF( reference_to_curve\representation.items ) = 1 );
14700      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( reference_to_curve\representation.items[1] ) );
14701      wr3: ( reference_to_curve\representation.items[1]\geometric_representation_item.dim = 2 );
14702  END_ENTITY;
14703
14704  ENTITY pdgc_with_dimension
14705    SUBTYPE OF ( point_distance_geometric_constraint );
14706      distance_value  : non_negative_length_measure;
14707  END_ENTITY;
14708
14709  ENTITY percentage_laminate_table
14710    SUBTYPE OF ( zone_structural_makeup );
14711  END_ENTITY;
14712
14713  ENTITY perpendicular_assembly_constraint
14714    SUBTYPE OF ( binary_assembly_constraint, perpendicular_geometric_constraint );
14715  END_ENTITY;
14716
14717  ENTITY perpendicular_geometric_constraint
14718    SUBTYPE OF ( explicit_geometric_constraint );
14719      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF linear_geometry_constraint_element;
14720      SELF\explicit_constraint.reference_elements : SET [0 : 2] OF linear_geometry_constraint_element;
14721    WHERE
14722      wr1: ( NOT ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 2 ) AND ( NOT ( ( SIZEOF( QUERY ( q <* ( SELF\
14723               explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements ) | (
14724               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE'  IN TYPEOF( q ) ) ) ) = SIZEOF( SELF\explicit_constraint.
14725               reference_elements + SELF\explicit_constraint.constrained_elements ) ) XOR ( SIZEOF( QUERY ( q <* ( SELF\
14726               explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements ) | (
14727               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE'  IN TYPEOF( q ) ) ) ) = SIZEOF( SELF\explicit_constraint.
14728               reference_elements + SELF\explicit_constraint.constrained_elements ) ) ) ) ) );
14729      wr2: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) > 0 ) OR ( SIZEOF( SELF\explicit_constraint.
14730               constrained_elements ) IN [2, 3] ) );
14731      wr3: ( ( NOT ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 ) AND ( SIZEOF( SELF\explicit_constraint.
14732               constrained_elements ) = 3 ) ) ) AND ( NOT ( ( SIZEOF( QUERY ( q <* SELF\explicit_constraint.constrained_elements
14733               | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' IN TYPEOF( q ) ) ) ) = 3 ) XOR ( SIZEOF( QUERY ( q <*
14734               SELF\explicit_constraint.constrained_elements | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN
14735               TYPEOF( q ) ) ) ) = 3 ) ) ) );
14736  END_ENTITY;
14737
14738  ENTITY perpendicular_to
14739    SUBTYPE OF ( derived_shape_aspect );
14740    WHERE
14741      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) = 1 );
14742  END_ENTITY;
14743
14744  ENTITY perpendicularity_tolerance
14745    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
14746  END_ENTITY;
14747
14748  ENTITY person;
14749      id             : identifier;
14750      last_name      : OPTIONAL label;
14751      first_name     : OPTIONAL label;
14752      middle_names   : OPTIONAL LIST [1 : ?] OF label;
14753      prefix_titles  : OPTIONAL LIST [1 : ?] OF label;
14754      suffix_titles  : OPTIONAL LIST [1 : ?] OF label;
14755    WHERE
14756      wr1: ( EXISTS( last_name ) OR EXISTS( first_name ) );
14757  END_ENTITY;
14758
14759  ENTITY person_and_organization;
14760      the_person        : person;
14761      the_organization  : organization;
14762    DERIVE
14763      name         : label := get_name_value( SELF );
14764      description  : text := get_description_value( SELF );
14765    WHERE
14766      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
14767      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
14768               <= 1 );
14769  END_ENTITY;
14770
14771  ENTITY person_and_organization_address
14772    SUBTYPE OF ( organizational_address, personal_address );
14773      SELF\organizational_address.organizations : SET [1 : 1] OF organization;
14774      SELF\personal_address.people           : SET [1 : 1] OF person;
14775    WHERE
14776      wr1: ( SIZEOF( QUERY ( pao <* USEDIN( SELF\personal_address.people[1], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14777               + 'PERSON_AND_ORGANIZATION.THE_PERSON'  ) | ( pao.the_organization :=: SELF\organizational_address.organizations[1] ) ) )
14778               = 1 );
14779  END_ENTITY;
14780
14781  ENTITY person_and_organization_assignment
14782    ABSTRACT SUPERTYPE;
14783      assigned_person_and_organization  : person_and_organization;
14784      role                              : person_and_organization_role;
14785  END_ENTITY;
14786
14787  ENTITY person_and_organization_role;
14788      name  : label;
14789    DERIVE
14790      description  : text := get_description_value( SELF );
14791    WHERE
14792      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
14793               <= 1 );
14794  END_ENTITY;
14795
14796  ENTITY personal_address
14797    SUBTYPE OF ( address );
14798      people       : SET [1 : ?] OF person;
14799      description  : OPTIONAL text;
14800  END_ENTITY;
14801
14802  ENTITY pgc_with_dimension
14803    SUBTYPE OF ( parallel_geometric_constraint );
14804      distance_value      : non_negative_length_measure;
14805      negative_direction  : BOOLEAN;
14806    WHERE
14807      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 1 ) OR ( SIZEOF( SELF\explicit_constraint.
14808               constrained_elements ) = 2 ) );
14809      wr2: ( SIZEOF( QUERY ( q <* ( SELF\explicit_constraint.reference_elements + SELF\explicit_constraint.constrained_elements )
14810               | ( SIZEOF( TYPEOF( q ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
14811               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' ] ) > 0 ) ) ) = 0 );
14812  END_ENTITY;
14813
14814  ENTITY physical_breakdown_context
14815    SUBTYPE OF ( breakdown_context );
14816  END_ENTITY;
14817
14818  ENTITY physical_component
14819    SUBTYPE OF ( assembly_component );
14820  END_ENTITY;
14821
14822  ENTITY physical_component_feature
14823    SUBTYPE OF ( component_feature );
14824  END_ENTITY;
14825
14826  ENTITY physical_component_terminal
14827    SUBTYPE OF ( component_terminal, physical_component_feature );
14828  END_ENTITY;
14829
14830  ENTITY physical_element_usage
14831    SUBTYPE OF ( breakdown_element_usage );
14832  END_ENTITY;
14833
14834  ENTITY picture_representation
14835    SUBTYPE OF ( presentation_view );
14836      SELF\representation.items  : SET [2 : ?] OF picture_representation_item_select;
14837    INVERSE
14838      size : presentation_size FOR unit;
14839    WHERE
14840      wr1: ( SIZEOF( QUERY ( item <* items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF( item ) ) ) )
14841               = 1 );
14842      wr2: ( SIZEOF( QUERY ( se <* QUERY ( item <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM'
14843               IN TYPEOF( item ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PICTURE_REPRESENTATION_ITEM' IN
14844               TYPEOF( se\styled_item.item ) ) ) ) ) = 0 );
14845  END_ENTITY;
14846
14847  ENTITY picture_representation_item
14848    ABSTRACT SUPERTYPE OF ( ONEOF ( externally_defined_picture_representation_item, predefined_picture_representation_item ) )
14849    SUBTYPE OF ( bytes_representation_item );
14850  END_ENTITY;
14851
14852  ENTITY placed_datum_target_feature
14853    SUBTYPE OF ( datum_target );
14854    DERIVE
14855      representation_associations  : SET [0 : ?] OF property_definition_representation :=
14856                                       get_shape_aspect_property_definition_representations( SELF );
14857    WHERE
14858      wr1: ( SELF.description IN [ 'point', 'line', 'rectangle', 'circle', 'circular curve'] );
14859      wr2: ( SIZEOF( QUERY ( pdr <* representation_associations | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
14860               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 );
14861      wr3: valid_datum_target_parameters( SELF );
14862  END_ENTITY;
14863
14864  ENTITY placed_feature
14865    SUBTYPE OF ( shape_aspect );
14866  END_ENTITY;
14867
14868  ENTITY placement
14869    SUPERTYPE OF ( ONEOF ( axis1_placement, axis2_placement_2d, axis2_placement_3d ) )
14870    SUBTYPE OF ( geometric_representation_item );
14871      location  : cartesian_point;
14872  END_ENTITY;
14873
14874  ENTITY planar_box
14875    SUBTYPE OF ( planar_extent );
14876      placement  : axis2_placement;
14877  END_ENTITY;
14878
14879  ENTITY planar_curve_pair
14880    SUPERTYPE OF ( ONEOF ( sliding_curve_pair, rolling_curve_pair ) ANDOR planar_curve_pair_range )
14881    SUBTYPE OF ( high_order_kinematic_pair );
14882      curve_1      : curve;
14883      curve_2      : curve;
14884      orientation  : BOOLEAN;
14885    WHERE
14886      wr1: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( curve_1 IN r.items ) ) ) ) = 0 );
14887      wr2: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT ( curve_2 IN r.items ) ) ) ) = 0 );
14888      wr3: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
14889               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
14890  END_ENTITY;
14891
14892  ENTITY planar_curve_pair_range
14893    SUBTYPE OF ( planar_curve_pair );
14894      range_on_curve_1  : trimmed_curve;
14895      range_on_curve_2  : trimmed_curve;
14896    WHERE
14897      wr1: ( SELF\planar_curve_pair.curve_1 :=: range_on_curve_1.basis_curve );
14898      wr2: ( SELF\planar_curve_pair.curve_2 :=: range_on_curve_2.basis_curve );
14899      wr3: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( range_on_curve_1 IN r.items ) ) ) )
14900               = 0 );
14901      wr4: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT ( range_on_curve_2 IN r.items ) ) ) )
14902               = 0 );
14903  END_ENTITY;
14904
14905  ENTITY planar_extent
14906    SUBTYPE OF ( geometric_representation_item );
14907      size_in_x  : length_measure;
14908      size_in_y  : length_measure;
14909  END_ENTITY;
14910
14911  ENTITY planar_pair
14912    SUBTYPE OF ( low_order_kinematic_pair );
14913    DERIVE
14914      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := TRUE;
14915      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := TRUE;
14916      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
14917      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := FALSE;
14918      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := FALSE;
14919      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
14920  END_ENTITY;
14921
14922  ENTITY planar_pair_value
14923    SUBTYPE OF ( pair_value );
14924      SELF\pair_value.applies_to_pair  : planar_pair;
14925      actual_rotation                  : plane_angle_measure;
14926      actual_translation_x             : length_measure;
14927      actual_translation_y             : length_measure;
14928  END_ENTITY;
14929
14930  ENTITY planar_pair_with_range
14931    SUBTYPE OF ( planar_pair );
14932      lower_limit_actual_rotation       : OPTIONAL plane_angle_measure;
14933      upper_limit_actual_rotation       : OPTIONAL plane_angle_measure;
14934      lower_limit_actual_translation_x  : OPTIONAL length_measure;
14935      upper_limit_actual_translation_x  : OPTIONAL length_measure;
14936      lower_limit_actual_translation_y  : OPTIONAL length_measure;
14937      upper_limit_actual_translation_y  : OPTIONAL length_measure;
14938    WHERE
14939      wr1: ( ( ( NOT EXISTS( lower_limit_actual_rotation ) ) OR ( NOT EXISTS( upper_limit_actual_rotation ) ) ) XOR (
14940               lower_limit_actual_rotation < upper_limit_actual_rotation ) );
14941      wr2: ( ( ( NOT EXISTS( lower_limit_actual_translation_x ) ) OR ( NOT EXISTS( upper_limit_actual_translation_x ) ) ) XOR (
14942               lower_limit_actual_translation_x < upper_limit_actual_translation_x ) );
14943      wr3: ( ( ( NOT EXISTS( lower_limit_actual_translation_y ) ) OR ( NOT EXISTS( upper_limit_actual_translation_y ) ) ) XOR (
14944               lower_limit_actual_translation_y < upper_limit_actual_translation_y ) );
14945  END_ENTITY;
14946
14947  ENTITY planar_shape_representation
14948    SUBTYPE OF ( shape_representation );
14949    WHERE
14950      wr1: ( SIZEOF( SELF.items ) = 1 );
14951      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( it ) ) ) ) =
14952               1 );
14953  END_ENTITY;
14954
14955  ENTITY plane
14956    SUBTYPE OF ( elementary_surface );
14957  END_ENTITY;
14958
14959  ENTITY plane_angle_and_length_pair
14960    SUBTYPE OF ( founded_item );
14961      plane_angle_value  : plane_angle_measure;
14962      length_value       : length_measure;
14963  END_ENTITY;
14964
14965  ENTITY plane_angle_and_ratio_pair
14966    SUBTYPE OF ( founded_item );
14967      plane_angle_value  : plane_angle_measure;
14968      ratio_value        : ratio_measure;
14969  END_ENTITY;
14970
14971  ENTITY plane_angle_measure_with_unit
14972    SUBTYPE OF ( measure_with_unit );
14973    WHERE
14974      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
14975  END_ENTITY;
14976
14977  ENTITY plane_angle_unit
14978    SUBTYPE OF ( named_unit );
14979    WHERE
14980      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
14981               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
14982               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
14983               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
14984  END_ENTITY;
14985
14986  ENTITY plus_expression
14987    SUBTYPE OF ( multiple_arity_numeric_expression );
14988  END_ENTITY;
14989
14990  ENTITY plus_minus_tolerance;
14991      range                 : tolerance_method_definition;
14992      toleranced_dimension  : dimensional_characteristic;
14993    UNIQUE
14994      ur1 : toleranced_dimension;
14995  END_ENTITY;
14996
14997  ENTITY ply_laminate_sequence_definition
14998    SUBTYPE OF ( product_definition );
14999    WHERE
15000      wr1: ( SIZEOF( QUERY ( pdr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
15001               'PRODUCT_DEFINITION_RELATIONSHIP.'  + 'RELATING_PRODUCT_DEFINITION' ) | ( (
15002               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'NEXT_ASSEMBLY_USAGE_OCCURRENCE' ) IN TYPEOF( pdr ) ) ) ) >
15003               0 );
15004  END_ENTITY;
15005
15006  ENTITY ply_laminate_table
15007    SUBTYPE OF ( part_laminate_table );
15008  END_ENTITY;
15009
15010  ENTITY pocket
15011    SUBTYPE OF ( feature_definition );
15012    WHERE
15013      wr1 : ( SELF\characterized_object.description IN [ 'closed rectangular', 'open rectangular', 'complex', 'circular cutout',
15014                'complex cutout' , 'recess'] );
15015      wr2 : ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15016                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15017                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
15018                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
15019                'pocket depth occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
15020                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
15021                description = 'path feature component usage' ) AND ( sar.name = 'pocket depth' ) AND (
15022                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
15023                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) )
15024                AND ( sdr.relating_shape_aspect.description = 'linear' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
15025      wr3 : ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | (
15026                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
15027                used_representation ) ) ) ) = 1 );
15028      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
15029                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15030                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15031                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( 1 <= SIZEOF( pdr.
15032                used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.items ) <= 2 ) ) ) ) = 1 ) ) ) = 1 );
15033      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
15034                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15035                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15036                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
15037                pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'fillet radius' ) ) ) ) =
15038                SIZEOF( pdr.used_representation.items ) ) ) ) ) = 1 ) ) ) = 1 );
15039      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
15040                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15041                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15042                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
15043                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15044                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
15045                TYPEOF( it ) ) = 2 ) AND ( it.name = 'fillet radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
15046      wr7 : ( ( NOT ( SELF\characterized_object.description IN [ 'complex', 'non-circular cutout', 'recess'] ) ) OR ( SIZEOF(
15047                QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.'
15048                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) )
15049                | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.'
15050                + 'OF_SHAPE'  ) | ( ( sa_occ.description = 'boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <*
15051                USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' )
15052                | ( ( sar.description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15053                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( SIZEOF( [
15054                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' ,
15055                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
15056                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
15057                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ,
15058                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' ,
15059                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' ,
15060                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE' ,
15061                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15062                + 'TEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] * TYPEOF( sdr.
15063                relating_shape_aspect ) ) = 1 ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
15064      wr8 : ( ( NOT ( SELF\characterized_object.description = 'closed rectangular' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
15065                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
15066                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
15067                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
15068                | ( ( sa_occ.description = 'closed boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(
15069                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
15070                sar.description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15071                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15072                + 'RECTANGULAR_CLOSED_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
15073      wr9 : ( ( NOT ( SELF\characterized_object.description = 'open rectangular' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
15074                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
15075                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
15076                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
15077                | ( ( sa_occ.description = 'open boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
15078                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
15079                description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
15080                IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE' IN TYPEOF( sdr.
15081                relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
15082      wr10: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15083                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15084                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
15085                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
15086                'bottom condition occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
15087                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
15088                description = 'pocket bottom usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15089                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15090                + 'POCKET_BOTTOM'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND (
15091                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET'  IN TYPEOF( sdr.related_shape_aspect.of_shape.definition ) ) ) ) )
15092                = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
15093      wr11: ( ( NOT ( SELF\characterized_object.description IN [ 'complex', 'non-circular cutout', 'recess'] ) ) OR ( SIZEOF(
15094                QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.'
15095                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) )
15096                | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.'
15097                + 'OF_SHAPE'  ) | ( ( sa_occ.description = 'change in boundary occurrence' ) AND ( SIZEOF( QUERY ( fcr <*
15098                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
15099                + 'RELATING_SHAPE_ASPECT'  ) | ( ( sar.description = 'taper usage' ) AND (
15100                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
15101                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND (
15102                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) )
15103                AND ( fcr.related_shape_aspect.description IN [ 'angle taper', 'directed taper'] ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) )
15104                = 0 ) );
15105      wr12: ( ( NOT ( SELF\characterized_object.description = 'circular cutout' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
15106                USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
15107                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
15108                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
15109                | ( ( sa_occ.description = 'enclosed boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(
15110                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
15111                sar.description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15112                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15113                + 'CIRCULAR_CLOSED_PROFILE'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
15114      wr13: ( ( NOT ( SELF\characterized_object.description IN [ 'circular cutout', 'complex cutout'] ) ) OR ( SIZEOF(
15115                QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.'
15116                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) )
15117                | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.'
15118                + 'OF_SHAPE'  ) | ( ( sa_occ.description = 'bottom condition occurrence' ) AND ( SIZEOF( QUERY ( sdr <*
15119                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
15120                + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'pocket bottom usage' ) AND (
15121                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
15122                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND (
15123                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET'  IN TYPEOF( sdr.related_shape_aspect.of_shape.definition ) )
15124                AND ( sdr.relating_shape_aspect.description = 'through' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
15125      wr14: ( ( NOT ( SELF\characterized_object.description = 'recess' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
15126                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
15127                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT (
15128                SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
15129                | ( ( sa_occ.description = 'bottom condition occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN(
15130                sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT' ) | ( (
15131                sar.description = 'pocket bottom usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15132                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15133                + 'POCKET_BOTTOM'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND (
15134                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET'  IN TYPEOF( sdr.related_shape_aspect.of_shape.definition ) )
15135                AND ( sdr.relating_shape_aspect.description IN [ 'planar', 'complex'] ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
15136      wr15: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
15137                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
15138                AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
15139      wr16: ( ( NOT ( SELF\characterized_object.description IN [ 'closed rectangular', 'open rectangular', 'complex', 'recess'] ) )
15140                OR ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.'
15141                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) )
15142                AND ( SIZEOF( QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' )
15143                | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT' IN TYPEOF( csa ) ) AND ( csa.name =
15144                'uncut volume' ) AND ( SIZEOF( QUERY ( sar <* csa.component_relationships | ( (
15145                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND (
15146                SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15147                + 'PROTRUSION' ] * TYPEOF( sar.related_shape_aspect ) ) = 1 ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 1 ) );
15148      wr17: ( ( NOT ( SELF\characterized_object.description IN [ 'closed rectangular', 'open rectangular'] ) ) OR ( SIZEOF(
15149                QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.'
15150                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) )
15151                | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.'
15152                + 'OF_SHAPE'  ) | ( ( sa_occ.description = 'change in boundary occurrence' ) AND ( SIZEOF( QUERY ( fcr <*
15153                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
15154                + 'RELATING_SHAPE_ASPECT'  ) | ( ( sar.description = 'taper usage' ) AND (
15155                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
15156                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND (
15157                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) )
15158                AND ( fcr.related_shape_aspect.description IN [ 'angle taper', 'directed taper'] ) ) ) ) >= 1 ) ) ) ) <= 1 ) ) ) )
15159                = 0 ) );
15160  END_ENTITY;
15161
15162  ENTITY pocket_bottom
15163    SUBTYPE OF ( shape_aspect );
15164    WHERE
15165      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
15166      wr2 : ( SELF.description IN [ 'planar', 'complex', 'through'] );
15167      wr3 : ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15168                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15169                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
15170                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
15171                TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name = 'floor normal' ) ) ) ) = 1 ) ) ) ) = 0 ) );
15172      wr4 : ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15173                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15174                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
15175                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION' IN
15176                TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name = 'floor location' ) ) ) ) = 1 ) ) ) ) = 0 ) );
15177      wr5 : ( ( NOT ( SELF.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15178                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15179                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
15180                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
15181                pdr.used_representation ) ) AND ( pdr.used_representation.name = 'floor face' ) ) ) ) = 1 ) ) ) ) = 0 ) );
15182      wr6 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15183                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15184                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
15185                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
15186                TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
15187      wr7 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15188                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15189                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15190                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15191                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
15192                used_representation.items ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
15193      wr8 : ( ( NOT ( SELF.description = 'through' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15194                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15195                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
15196                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
15197                TYPEOF( pdr.used_representation ) ) ) ) = 0 ) ) ) ) = 0 ) );
15198      wr9 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
15199                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
15200                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15201                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15202                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
15203                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15204                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
15205                TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
15206      wr10: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15207                + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar.description = 'pocket bottom usage' ) AND (
15208                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
15209                fcr.related_shape_aspect.description = 'bottom condition occurrence' ) AND (
15210                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) )
15211                AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POCKET_BOTTOM' IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) )
15212                >= 1 );
15213      wr11: ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF,
15214                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar.
15215                description = 'pocket bottom usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15216                + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( fcr.related_shape_aspect.description =
15217                'bottom condition occurrence'  ) AND ( fcr.related_shape_aspect.name IN [ 'pocket depth start', 'pocket depth end'] ) ) ) )
15218                = 0 ) );
15219  END_ENTITY;
15220
15221  ENTITY pogc_with_dimension
15222    SUBTYPE OF ( parallel_offset_geometric_constraint );
15223      offset_value                  : positive_length_measure;
15224      offset_direction_constrained  : BOOLEAN;
15225    WHERE
15226      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 1 ) OR ( SIZEOF( SELF\explicit_constraint.
15227               constrained_elements ) = 2 ) );
15228      wr2: ( ( NOT ( offset_direction_constrained = TRUE ) ) AND ( ( offset_type = curve_2d_offset ) OR ( offset_type =
15229               surface_offset ) ) );
15230  END_ENTITY;
15231
15232  ENTITY point
15233    SUPERTYPE OF ( ONEOF ( cartesian_point, point_on_curve, point_on_surface, point_replica, degenerate_pcurve ) )
15234    SUBTYPE OF ( geometric_representation_item );
15235  END_ENTITY;
15236
15237  ENTITY point_and_vector
15238    SUBTYPE OF ( compound_representation_item, geometric_representation_item );
15239      SELF\compound_representation_item.item_element : point_and_vector_members;
15240  END_ENTITY;
15241
15242  ENTITY point_distance_geometric_constraint
15243    SUBTYPE OF ( explicit_geometric_constraint );
15244      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF point;
15245      SELF\explicit_constraint.reference_elements : SET [0 : 4] OF point_curve_or_surface_constraint_element;
15246    WHERE
15247      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) > 0 ) OR ( (
15248               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PDGC_WITH_DIMENSION'  IN TYPEOF( SELF ) ) AND ( SIZEOF( SELF\
15249               explicit_constraint.constrained_elements ) = 2 ) ) );
15250  END_ENTITY;
15251
15252  ENTITY point_on_curve
15253    SUBTYPE OF ( point );
15254      basis_curve      : curve;
15255      point_parameter  : parameter_value;
15256  END_ENTITY;
15257
15258  ENTITY point_on_edge_curve
15259    SUBTYPE OF ( point_on_curve );
15260      basis_edge_curve  : edge_curve;
15261    DERIVE
15262      SELF\point_on_curve.basis_curve  : curve := SELF.basis_edge_curve.edge_geometry;
15263    WHERE
15264      wr1: ( SIZEOF( using_representations( SELF.basis_edge_curve ) * relating_shape_representations_of_extreme_values( SELF ) )
15265               > 0 );
15266  END_ENTITY;
15267
15268  ENTITY point_on_face_surface
15269    SUBTYPE OF ( point_on_surface );
15270      basis_face_surface  : face_surface;
15271    DERIVE
15272      SELF\point_on_surface.basis_surface  : surface := SELF.basis_face_surface.face_geometry;
15273    WHERE
15274      wr1: ( SIZEOF( using_representations( SELF.basis_face_surface ) * relating_shape_representations_of_extreme_values( SELF ) )
15275               > 0 );
15276  END_ENTITY;
15277
15278  ENTITY point_on_planar_curve_pair
15279    SUBTYPE OF ( high_order_kinematic_pair );
15280      pair_curve   : curve;
15281      orientation  : BOOLEAN;
15282    WHERE
15283      wr1: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( pair_curve IN r.items ) ) ) ) =
15284               0 );
15285      wr2: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
15286               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
15287  END_ENTITY;
15288
15289  ENTITY point_on_planar_curve_pair_value
15290    SUBTYPE OF ( pair_value );
15291      SELF\pair_value.applies_to_pair  : point_on_planar_curve_pair;
15292      actual_point_on_curve            : point_on_curve;
15293      input_orientation                : spatial_rotation;
15294    DERIVE
15295      actual_orientation  : ypr_rotation := convert_spatial_to_ypr_rotation( SELF\pair_value.applies_to_pair, input_orientation );
15296    WHERE
15297      wr1: ( SELF\pair_value.applies_to_pair\point_on_planar_curve_pair.pair_curve :=: actual_point_on_curve.basis_curve );
15298  END_ENTITY;
15299
15300  ENTITY point_on_planar_curve_pair_with_range
15301    SUBTYPE OF ( point_on_planar_curve_pair );
15302      range_on_pair_curve  : trimmed_curve;
15303      lower_limit_yaw      : OPTIONAL plane_angle_measure;
15304      upper_limit_yaw      : OPTIONAL plane_angle_measure;
15305      lower_limit_pitch    : OPTIONAL plane_angle_measure;
15306      upper_limit_pitch    : OPTIONAL plane_angle_measure;
15307      lower_limit_roll     : OPTIONAL plane_angle_measure;
15308      upper_limit_roll     : OPTIONAL plane_angle_measure;
15309    WHERE
15310      wr1: ( ( ( NOT EXISTS( lower_limit_pitch ) ) OR ( NOT EXISTS( upper_limit_pitch ) ) ) XOR ( lower_limit_pitch <
15311               upper_limit_pitch ) );
15312      wr2: ( ( ( NOT EXISTS( lower_limit_yaw ) ) OR ( NOT EXISTS( upper_limit_yaw ) ) ) XOR ( lower_limit_yaw < upper_limit_yaw ) );
15313      wr3: ( ( ( NOT EXISTS( lower_limit_roll ) ) OR ( NOT EXISTS( upper_limit_roll ) ) ) XOR ( lower_limit_roll <
15314               upper_limit_roll ) );
15315      wr4: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( range_on_pair_curve IN r.items ) ) ) )
15316               = 0 );
15317  END_ENTITY;
15318
15319  ENTITY point_on_surface
15320    SUBTYPE OF ( point );
15321      basis_surface      : surface;
15322      point_parameter_u  : parameter_value;
15323      point_parameter_v  : parameter_value;
15324  END_ENTITY;
15325
15326  ENTITY point_on_surface_pair
15327    SUBTYPE OF ( high_order_kinematic_pair );
15328      pair_surface  : surface;
15329    WHERE
15330      wr1: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( pair_surface IN r.items ) ) ) )
15331               = 0 );
15332      wr2: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
15333               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
15334  END_ENTITY;
15335
15336  ENTITY point_on_surface_pair_value
15337    SUBTYPE OF ( pair_value );
15338      SELF\pair_value.applies_to_pair  : point_on_surface_pair;
15339      actual_point_on_surface          : point_on_surface;
15340      input_orientation                : spatial_rotation;
15341    DERIVE
15342      actual_orientation  : ypr_rotation := convert_spatial_to_ypr_rotation( SELF\pair_value.applies_to_pair, input_orientation );
15343    WHERE
15344      wr1: ( SELF\pair_value.applies_to_pair\point_on_surface_pair.pair_surface :=: actual_point_on_surface.basis_surface );
15345  END_ENTITY;
15346
15347  ENTITY point_on_surface_pair_with_range
15348    SUBTYPE OF ( point_on_surface_pair );
15349      range_on_pair_surface  : rectangular_trimmed_surface;
15350      lower_limit_yaw        : OPTIONAL plane_angle_measure;
15351      upper_limit_yaw        : OPTIONAL plane_angle_measure;
15352      lower_limit_pitch      : OPTIONAL plane_angle_measure;
15353      upper_limit_pitch      : OPTIONAL plane_angle_measure;
15354      lower_limit_roll       : OPTIONAL plane_angle_measure;
15355      upper_limit_roll       : OPTIONAL plane_angle_measure;
15356    WHERE
15357      wr1: ( ( ( NOT EXISTS( lower_limit_pitch ) ) OR ( NOT EXISTS( upper_limit_pitch ) ) ) XOR ( lower_limit_pitch <
15358               upper_limit_pitch ) );
15359      wr2: ( ( ( NOT EXISTS( lower_limit_yaw ) ) OR ( NOT EXISTS( upper_limit_yaw ) ) ) XOR ( lower_limit_yaw < upper_limit_yaw ) );
15360      wr3: ( ( ( NOT EXISTS( lower_limit_roll ) ) OR ( NOT EXISTS( upper_limit_roll ) ) ) XOR ( lower_limit_roll <
15361               upper_limit_roll ) );
15362      wr4: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( range_on_pair_surface IN r.
15363               items ) ) ) ) = 0 );
15364  END_ENTITY;
15365
15366  ENTITY point_path
15367    SUBTYPE OF ( compound_representation_item, geometric_representation_item );
15368      SELF\compound_representation_item.item_element : point_path_members;
15369  END_ENTITY;
15370
15371  ENTITY point_placement_shape_representation
15372    SUBTYPE OF ( shape_representation );
15373      SELF\representation.items  : SET [1 : ?] OF point_placement_shape_representation_item;
15374    WHERE
15375      wr1: ( SIZEOF( QUERY ( i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15376               + 'COMPOUND_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF( i ) )
15377               = 1 ) ) ) > 0 );
15378  END_ENTITY;
15379
15380  ENTITY point_replica
15381    SUBTYPE OF ( point );
15382      parent_pt       : point;
15383      transformation  : cartesian_transformation_operator;
15384    WHERE
15385      wr1: ( transformation.dim = parent_pt.dim );
15386      wr2: acyclic_point_replica( SELF, parent_pt );
15387  END_ENTITY;
15388
15389  ENTITY point_style
15390    SUBTYPE OF ( founded_item );
15391      name           : label;
15392      marker         : marker_select;
15393      marker_size    : size_select;
15394      marker_colour  : colour;
15395  END_ENTITY;
15396
15397  ENTITY point_to_point_path
15398    SUBTYPE OF ( path_node );
15399    DERIVE
15400      SELF\kinematic_path_segment.transition : transition_code := discontinuous;
15401  END_ENTITY;
15402
15403  ENTITY polar_complex_number_region
15404    SUBTYPE OF ( maths_space, generic_literal );
15405      centre                : complex_number_literal;
15406      distance_constraint   : real_interval;
15407      direction_constraint  : finite_real_interval;
15408    WHERE
15409      wr1: ( min_exists( distance_constraint ) AND ( real_min( distance_constraint ) >= 0 ) );
15410      wr2: ( ( ( -PI ) <= direction_constraint.min ) AND ( direction_constraint.min < PI ) );
15411      wr3: ( ( direction_constraint.max - direction_constraint.min ) <= ( 2 * PI ) );
15412      wr4: ( ( ( direction_constraint.max - direction_constraint.min ) < ( 2 * PI ) ) OR ( direction_constraint.min_closure =
15413               open ) );
15414      wr5: ( ( ( direction_constraint.max - direction_constraint.min ) < ( 2 * PI ) ) OR ( direction_constraint.max_closure =
15415               open ) OR ( direction_constraint.min = ( -PI ) ) );
15416      wr6: ( ( real_min( distance_constraint ) > 0 ) OR max_exists( distance_constraint ) OR ( ( direction_constraint.max -
15417               direction_constraint.min ) < ( 2 * PI ) ) OR ( direction_constraint.max_closure = open ) );
15418  END_ENTITY;
15419
15420  ENTITY poly_loop
15421    SUBTYPE OF ( loop, geometric_representation_item );
15422      polygon  : LIST [3 : ?] OF UNIQUE cartesian_point;
15423  END_ENTITY;
15424
15425  ENTITY polygonal_area
15426    SUBTYPE OF ( primitive_2d );
15427      bounds  : LIST [3 : ?] OF UNIQUE cartesian_point;
15428  END_ENTITY;
15429
15430  ENTITY polyline
15431    SUBTYPE OF ( bounded_curve );
15432      points  : LIST [2 : ?] OF cartesian_point;
15433  END_ENTITY;
15434
15435  ENTITY position_tolerance
15436    SUBTYPE OF ( geometric_tolerance );
15437  END_ENTITY;
15438
15439  ENTITY positioned_sketch
15440    SUBTYPE OF ( geometric_representation_item );
15441      sketch_basis        : sketch_basis_select;
15442      auxiliary_elements  : SET [0 : ?] OF auxiliary_geometric_representation_item;
15443    WHERE
15444      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF( sketch_basis ) ) AND (
15445               NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( sketch_basis\curve_bounded_surface.
15446               basis_surface ) ) ) ) );
15447      wr2: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF( sketch_basis ) ) AND ( NOT (
15448               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE'  IN TYPEOF( sketch_basis\face_surface.face_geometry ) ) ) ) );
15449      wr3: ( SIZEOF( QUERY ( q <* auxiliary_elements | ( SIZEOF( TYPEOF( q ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15450               + 'POINT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE'] ) = 0 ) ) ) = 0 );
15451      wr4: ( SIZEOF( QUERY ( q <* auxiliary_elements | ( q\geometric_representation_item.dim <> 3 ) ) ) = 0 );
15452  END_ENTITY;
15453
15454  ENTITY power_expression
15455    SUBTYPE OF ( binary_numeric_expression );
15456  END_ENTITY;
15457
15458  ENTITY power_measure_with_unit
15459    SUBTYPE OF ( measure_with_unit );
15460    WHERE
15461      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
15462  END_ENTITY;
15463
15464  ENTITY power_unit
15465    SUBTYPE OF ( derived_unit );
15466    WHERE
15467      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.watt ) );
15468  END_ENTITY;
15469
15470  ENTITY pre_defined_character_glyph
15471    SUBTYPE OF ( pre_defined_item );
15472  END_ENTITY;
15473
15474  ENTITY pre_defined_colour
15475    SUBTYPE OF ( pre_defined_item, colour );
15476  END_ENTITY;
15477
15478  ENTITY pre_defined_curve_font
15479    SUBTYPE OF ( pre_defined_item );
15480  END_ENTITY;
15481
15482  ENTITY pre_defined_dimension_symbol
15483    SUBTYPE OF ( pre_defined_symbol );
15484    WHERE
15485      wr1: ( SELF.name IN [ 'arc length', 'conical taper', 'counterbore', 'countersink', 'depth', 'diameter', 'plus minus',
15486               'radius' , 'slope', 'spherical diameter', 'spherical radius', 'square'] );
15487  END_ENTITY;
15488
15489  ENTITY pre_defined_geometrical_tolerance_symbol
15490    SUBTYPE OF ( pre_defined_symbol );
15491    WHERE
15492      wr1: ( SELF.name IN [ 'angularity', 'basic dimension', 'blanked datum reference', 'circular runout', 'circularity',
15493               'concentricity' , 'cylindricity', 'datum target identification', 'diameter', 'filled datum reference', 'flatness',
15494               'least material condition' , 'maximum material condition', 'parallelism', 'perpendicularity', 'position',
15495               'profile of a line' , 'profile of a surface', 'projected tolerance zone', 'regardless of feature size',
15496               'straightness' , 'symmetry', 'total runout'] );
15497  END_ENTITY;
15498
15499  ENTITY pre_defined_item;
15500      name  : label;
15501  END_ENTITY;
15502
15503  ENTITY pre_defined_marker
15504    SUBTYPE OF ( pre_defined_item );
15505  END_ENTITY;
15506
15507  ENTITY pre_defined_point_marker_symbol
15508    SUBTYPE OF ( pre_defined_marker, pre_defined_symbol );
15509    WHERE
15510      wr1: ( SELF.name IN [ 'asterisk', 'circle', 'dot', 'plus', 'square', 'triangle', 'x'] );
15511  END_ENTITY;
15512
15513  ENTITY pre_defined_surface_condition_symbol
15514    SUBTYPE OF ( pre_defined_symbol );
15515    WHERE
15516      wr1: ( SELF.name IN [ '000', '010', '020', '030', '040', '050', '060', '070', '001', '011', '021', '031', '041', '051', '061' ,
15517               '071' , '100', '110', '120', '130', '140', '150', '160', '170', '101', '111', '121', '131', '141', '151', '161',
15518               '171' , '200', '210', '220', '230', '240', '250', '260', '270', '201', '211', '221', '231', '241', '251', '261',
15519               '271' ] );
15520  END_ENTITY;
15521
15522  ENTITY pre_defined_surface_side_style
15523    SUBTYPE OF ( pre_defined_item );
15524  END_ENTITY;
15525
15526  ENTITY pre_defined_symbol
15527    SUBTYPE OF ( pre_defined_item );
15528  END_ENTITY;
15529
15530  ENTITY pre_defined_terminator_symbol
15531    SUBTYPE OF ( pre_defined_symbol );
15532    WHERE
15533      wr1: ( SELF.name IN [ 'blanked arrow', 'blanked box', 'blanked dot', 'blanked triangle', 'dimension origin', 'filled arrow',
15534               'filled box' , 'filled dot', 'integral symbol', 'open arrow', 'slash', 'unfilled arrow', 'unfilled triangle',
15535               'filled triangle' ] );
15536  END_ENTITY;
15537
15538  ENTITY pre_defined_text_font
15539    SUBTYPE OF ( pre_defined_item );
15540  END_ENTITY;
15541
15542  ENTITY pre_defined_tile
15543    SUBTYPE OF ( pre_defined_item );
15544  END_ENTITY;
15545
15546  ENTITY precision_qualifier;
15547      precision_value  : INTEGER;
15548  END_ENTITY;
15549
15550  ENTITY predefined_picture_representation_item
15551    SUBTYPE OF ( picture_representation_item );
15552    WHERE
15553      wr1: ( SELF\representation_item.name IN pre_defined_picture_representation_types );
15554  END_ENTITY;
15555
15556  ENTITY prescribed_path
15557    SUBTYPE OF ( link_motion_representation_along_path );
15558      controlling_joints  : OPTIONAL SET [1 : 6] OF kinematic_joint;
15559  END_ENTITY;
15560
15561  ENTITY presentation_area
15562    SUBTYPE OF ( presentation_representation );
15563    WHERE
15564      wr1: ( ( SIZEOF( QUERY ( ais <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'AREA_IN_SET.AREA' ) |
15565               ( SIZEOF( USEDIN( ais, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' ) ) = 1 ) ) )
15566               > 0 ) OR ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_SIZE.UNIT' ) )
15567               = 1 ) );
15568  END_ENTITY;
15569
15570  ENTITY presentation_layer_assignment;
15571      name            : label;
15572      description     : text;
15573      assigned_items  : SET [1 : ?] OF layered_item;
15574  END_ENTITY;
15575
15576  ENTITY presentation_representation
15577    SUPERTYPE OF ( ONEOF ( presentation_area, presentation_view ) )
15578    SUBTYPE OF ( representation );
15579      SELF\representation.context_of_items  : geometric_representation_context;
15580    WHERE
15581      wr1: ( SELF\representation.context_of_items\geometric_representation_context.coordinate_space_dimension = 2 );
15582      wr2: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_AREA' IN TYPEOF( SELF ) ) OR ( SIZEOF(
15583               QUERY ( prr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.'
15584               + 'REP_2'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN TYPEOF( prr\
15585               representation_relationship.rep_1 ) ) ) ) > 0 ) OR ( SIZEOF( QUERY ( rm <* USEDIN( SELF,
15586               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'REPRESENTATION_MAP.' + 'MAPPED_REPRESENTATION' ) | (
15587               SIZEOF( QUERY ( mi <* USEDIN( rm, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'MAPPED_ITEM.' +
15588               'MAPPING_SOURCE'  ) | ( SIZEOF( QUERY ( rep <* using_representations( mi ) | ( (
15589               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRESENTATION_REPRESENTATION' ) IN TYPEOF( rep ) ) ) ) > 0 ) ) )
15590               > 0 ) ) ) > 0 ) );
15591  END_ENTITY;
15592
15593  ENTITY presentation_set;
15594    INVERSE
15595      areas : SET [1 : ?] OF area_in_set FOR in_set;
15596  END_ENTITY;
15597
15598  ENTITY presentation_size;
15599      unit  : presentation_size_assignment_select;
15600      size  : planar_box;
15601    UNIQUE
15602      ur1 : unit;
15603    WHERE
15604      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESENTATION_REPRESENTATION' IN TYPEOF( SELF.unit ) ) AND
15605               item_in_context( SELF.size, SELF.unit\representation.context_of_items ) ) OR ( (
15606               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_IN_SET'  IN TYPEOF( SELF.unit ) ) AND ( SIZEOF(
15607               QUERY ( ais <* SELF.unit\area_in_set.in_set.areas | ( NOT item_in_context( SELF.size, ais.area\representation.
15608               context_of_items ) ) ) ) = 0 ) ) );
15609  END_ENTITY;
15610
15611  ENTITY presentation_style_assignment
15612    SUBTYPE OF ( founded_item );
15613      styles  : SET [1 : ?] OF presentation_style_select;
15614    WHERE
15615      wr1: ( SIZEOF( QUERY ( style1 <* SELF.styles | ( NOT ( SIZEOF( QUERY ( style2 <* ( SELF.styles - style1 ) | ( NOT ( (
15616               TYPEOF( style1 ) <> TYPEOF( style2 ) ) OR ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
15617               'SURFACE_STYLE_USAGE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'EXTERNALLY_DEFINED_STYLE'] *
15618               TYPEOF( style1 ) ) = 1 ) ) ) ) ) = 0 ) ) ) ) = 0 );
15619      wr2: ( SIZEOF( QUERY ( style1 <* SELF.styles | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
15620               TYPEOF( style1 ) ) ) ) <= 2 );
15621      wr3: ( SIZEOF( QUERY ( style1 <* SELF.styles | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE' IN
15622               TYPEOF( style1 ) ) AND ( SIZEOF( QUERY ( style2 <* ( SELF.styles - style1 ) | ( (
15623               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_STYLE_USAGE'  IN TYPEOF( style2 ) ) AND ( ( style1\
15624               surface_style_usage.side = both ) OR ( style2\surface_style_usage.side = both ) OR ( style1\surface_style_usage.
15625               side = style2\surface_style_usage.side ) ) ) ) ) > 0 ) ) ) ) = 0 );
15626  END_ENTITY;
15627
15628  ENTITY presentation_style_by_context
15629    SUBTYPE OF ( presentation_style_assignment );
15630      style_context  : style_context_select;
15631  END_ENTITY;
15632
15633  ENTITY presentation_view
15634    SUBTYPE OF ( presentation_representation );
15635  END_ENTITY;
15636
15637  ENTITY presented_item
15638    ABSTRACT SUPERTYPE;
15639  END_ENTITY;
15640
15641  ENTITY presented_item_representation;
15642      presentation  : presentation_representation_select;
15643      item          : presented_item;
15644  END_ENTITY;
15645
15646  ENTITY pressure_measure_with_unit
15647    SUBTYPE OF ( measure_with_unit );
15648    WHERE
15649      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESSURE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
15650  END_ENTITY;
15651
15652  ENTITY pressure_unit
15653    SUBTYPE OF ( derived_unit );
15654    WHERE
15655      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.pascal ) );
15656  END_ENTITY;
15657
15658  ENTITY previous_change_element_assignment
15659    SUBTYPE OF ( group_assignment );
15660      SELF\group_assignment.assigned_group  : previous_element_assignment_select;
15661      items                                 : SET [1 : ?] OF change_management_object;
15662  END_ENTITY;
15663
15664  ENTITY primitive_2d
15665    SUPERTYPE OF ( ONEOF ( circular_area, elliptic_area, rectangular_area, polygonal_area, half_space_2d ) )
15666    SUBTYPE OF ( geometric_representation_item );
15667    WHERE
15668      wr1: ( SELF\geometric_representation_item.dim = 2 );
15669  END_ENTITY;
15670
15671  ENTITY primitive_2d_with_inner_boundary
15672    SUBTYPE OF ( complex_area, compound_representation_item );
15673    DERIVE
15674      inner_boundary  : compound_inner_area_boundary := SELF\compound_representation_item.item_element;
15675    WHERE
15676      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_AREA',
15677               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPTIC_AREA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15678               + 'RECTANGULAR_AREA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYGONAL_AREA',
15679               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_WITH_OUTER_BOUNDARY' ,
15680               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_AREA_WITH_PARAMETERS' ] * TYPEOF( SELF ) ) > 0 );
15681      wr2: ( SIZEOF( QUERY ( inner <* inner_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15682               + 'PRIMITIVE_2D_WITH_INNER_BOUNDARY'  IN TYPEOF( inner ) ) ) ) = 0 );
15683      wr3: open_path_based_inner_boundary( inner_boundary );
15684  END_ENTITY;
15685
15686  ENTITY prismatic_pair
15687    SUBTYPE OF ( low_order_kinematic_pair );
15688    DERIVE
15689      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := TRUE;
15690      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
15691      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
15692      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := FALSE;
15693      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := FALSE;
15694      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := FALSE;
15695  END_ENTITY;
15696
15697  ENTITY prismatic_pair_value
15698    SUBTYPE OF ( pair_value );
15699      SELF\pair_value.applies_to_pair  : prismatic_pair;
15700      actual_translation               : length_measure;
15701  END_ENTITY;
15702
15703  ENTITY prismatic_pair_with_range
15704    SUBTYPE OF ( prismatic_pair );
15705      lower_limit_actual_translation  : OPTIONAL length_measure;
15706      upper_limit_actual_translation  : OPTIONAL length_measure;
15707    WHERE
15708      wr1: ( ( ( NOT EXISTS( lower_limit_actual_translation ) ) OR ( NOT EXISTS( upper_limit_actual_translation ) ) ) XOR (
15709               lower_limit_actual_translation < upper_limit_actual_translation ) );
15710  END_ENTITY;
15711
15712  ENTITY procedural_representation
15713    SUBTYPE OF ( representation );
15714      SELF\representation.items  : SET [1 : ?] OF procedural_representation_sequence;
15715  END_ENTITY;
15716
15717  ENTITY procedural_representation_sequence
15718    SUBTYPE OF ( representation_item );
15719      elements          : LIST [1 : ?] OF representation_item;
15720      suppressed_items  : SET [0 : ?] OF representation_item;
15721      rationale         : text;
15722    WHERE
15723      wr1: ( SIZEOF( QUERY ( q <* suppressed_items | ( NOT ( q IN elements ) ) ) ) = 0 );
15724  END_ENTITY;
15725
15726  ENTITY procedural_shape_representation
15727    SUBTYPE OF ( procedural_representation, shape_representation );
15728      SELF\representation.items  : SET [1 : ?] OF procedural_shape_representation_sequence;
15729  END_ENTITY;
15730
15731  ENTITY procedural_shape_representation_sequence
15732    SUBTYPE OF ( geometric_representation_item, procedural_representation_sequence );
15733      SELF\procedural_representation_sequence.elements : LIST [1 : ?] OF shape_representation_item;
15734  END_ENTITY;
15735
15736  ENTITY process_operation
15737    SUBTYPE OF ( action_method );
15738    WHERE
15739      wr1: ( SIZEOF( QUERY ( amr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD_RELATIONSHIP.' +
15740               'RELATING_METHOD' ) | ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN TYPEOF( amr\
15741               action_method_relationship.related_method ) ) ) OR ( SELF :=: amr\action_method_relationship.related_method ) ) ) )
15742               = 0 );
15743      wr2: ( SIZEOF( QUERY ( amr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACTION_METHOD_RELATIONSHIP.' +
15744               'RELATED_METHOD' ) | ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_OPERATION' IN TYPEOF( amr\
15745               action_method_relationship.relating_method ) ) ) OR ( SELF :=: amr\action_method_relationship.relating_method ) ) ) )
15746               = 0 );
15747  END_ENTITY;
15748
15749  ENTITY process_plan
15750    SUBTYPE OF ( action );
15751    WHERE
15752      wr1: ( SIZEOF( QUERY ( ar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_RELATIONSHIP.'
15753               + 'RELATED_ACTION'  ) | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
15754               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN' ] * TYPEOF( ar.relating_action ) ) <> 1 ) ) )
15755               = 0 );
15756      wr2: ( SIZEOF( QUERY ( ar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_RELATIONSHIP.'
15757               + 'RELATING_ACTION'  ) | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
15758               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN' ] * TYPEOF( ar.related_action ) ) = 1 ) OR
15759               ( ( ar.name = 'process operation occurrence' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15760               + 'PROCESS_OPERATION'  IN TYPEOF( ar.related_action.chosen_method ) ) ) ) ) ) = SIZEOF( USEDIN( SELF,
15761               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'ACTION_RELATIONSHIP.RELATING_ACTION' ) ) );
15762  END_ENTITY;
15763
15764  ENTITY process_product_association;
15765      name             : label;
15766      description      : text;
15767      defined_product  : characterized_product_definition;
15768      process          : product_definition_process;
15769  END_ENTITY;
15770
15771  ENTITY process_property_association;
15772      name               : label;
15773      description        : text;
15774      process            : property_process;
15775      property_or_shape  : property_or_shape_select;
15776  END_ENTITY;
15777
15778  ENTITY product;
15779      id                  : identifier;
15780      name                : label;
15781      description         : OPTIONAL text;
15782      frame_of_reference  : SET [1 : ?] OF product_context;
15783  END_ENTITY;
15784
15785  ENTITY product_as_planned
15786    SUBTYPE OF ( product_definition_formation );
15787  END_ENTITY;
15788
15789  ENTITY product_category;
15790      name         : label;
15791      description  : OPTIONAL text;
15792    DERIVE
15793      id  : identifier := get_id_value( SELF );
15794    WHERE
15795      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
15796  END_ENTITY;
15797
15798  ENTITY product_category_relationship;
15799      name          : label;
15800      description   : OPTIONAL text;
15801      category      : product_category;
15802      sub_category  : product_category;
15803    WHERE
15804      wr1: acyclic_product_category_relationship( SELF, [SELF.sub_category] );
15805  END_ENTITY;
15806
15807  ENTITY product_class
15808    SUBTYPE OF ( product_concept, characterized_object );
15809  END_ENTITY;
15810
15811  ENTITY product_concept;
15812      id              : identifier;
15813      name            : label;
15814      description     : OPTIONAL text;
15815      market_context  : product_concept_context;
15816    UNIQUE
15817      ur1 : id;
15818  END_ENTITY;
15819
15820  ENTITY product_concept_context
15821    SUBTYPE OF ( application_context_element );
15822      market_segment_type  : label;
15823  END_ENTITY;
15824
15825  ENTITY product_concept_feature;
15826      id           : identifier;
15827      name         : label;
15828      description  : OPTIONAL text;
15829  END_ENTITY;
15830
15831  ENTITY product_concept_feature_association;
15832      name         : label;
15833      description  : OPTIONAL text;
15834      concept      : product_concept;
15835      feature      : product_concept_feature;
15836  END_ENTITY;
15837
15838  ENTITY product_concept_feature_category
15839    SUBTYPE OF ( group );
15840    WHERE
15841      wr1: ( SIZEOF( QUERY ( aga <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GROUP_ASSIGNMENT.'
15842               + 'ASSIGNED_GROUP'  ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'APPLIED_GROUP_ASSIGNMENT' ) IN
15843               TYPEOF( aga ) ) AND ( ( aga\group_assignment.role\object_role.name <> 'specification category member' ) OR (
15844               SIZEOF( QUERY ( i <* aga\applied_group_assignment.items | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
15845               + 'PRODUCT_CONCEPT_FEATURE' ) IN TYPEOF( i ) ) AND ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
15846               'CONDITIONAL_CONCEPT_FEATURE'  ) IN TYPEOF( i ) ) ) ) ) ) <> SIZEOF( aga\applied_group_assignment.items ) ) ) ) ) )
15847               = 0 );
15848  END_ENTITY;
15849
15850  ENTITY product_concept_feature_category_usage
15851    SUBTYPE OF ( group_assignment );
15852      SELF\group_assignment.assigned_group  : product_concept_feature_category;
15853      items                                 : SET [1 : ?] OF category_usage_item;
15854    WHERE
15855      wr1: ( SELF.role.name IN [ 'mandatory category usage', 'optional category usage'] );
15856  END_ENTITY;
15857
15858  ENTITY product_concept_relationship;
15859      name                      : label;
15860      description               : OPTIONAL text;
15861      relating_product_concept  : product_concept;
15862      related_product_concept   : product_concept;
15863  END_ENTITY;
15864
15865  ENTITY product_context
15866    SUBTYPE OF ( application_context_element );
15867      discipline_type  : label;
15868  END_ENTITY;
15869
15870  ENTITY product_data_and_data_quality_relationship;
15871      description   : text;
15872      product_data  : product_definition;
15873      data_quality  : data_quality_definition;
15874  END_ENTITY;
15875
15876  ENTITY product_definition
15877    SUPERTYPE OF ( ONEOF ( composite_assembly_sequence_definition, laminate_table, ply_laminate_sequence_definition ) );
15878      id                  : identifier;
15879      description         : OPTIONAL text;
15880      formation           : product_definition_formation;
15881      frame_of_reference  : product_definition_context;
15882    DERIVE
15883      name  : label := get_name_value( SELF );
15884    WHERE
15885      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
15886  END_ENTITY;
15887
15888  ENTITY product_definition_context
15889    SUBTYPE OF ( application_context_element );
15890      life_cycle_stage  : label;
15891  END_ENTITY;
15892
15893  ENTITY product_definition_context_association;
15894      definition          : product_definition;
15895      frame_of_reference  : product_definition_context;
15896      role                : product_definition_context_role;
15897  END_ENTITY;
15898
15899  ENTITY product_definition_context_role;
15900      name         : label;
15901      description  : OPTIONAL text;
15902  END_ENTITY;
15903
15904  ENTITY product_definition_effectivity
15905    SUBTYPE OF ( effectivity );
15906      usage  : product_definition_relationship;
15907    WHERE
15908      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'EFFECTIVITY_ASSIGNMENT.'
15909               + 'ASSIGNED_EFFECTIVITY'  ) ) = 0 );
15910  END_ENTITY;
15911
15912  ENTITY product_definition_element_relationship
15913    SUBTYPE OF ( group );
15914  END_ENTITY;
15915
15916  ENTITY product_definition_formation;
15917      id           : identifier;
15918      description  : OPTIONAL text;
15919      of_product   : product;
15920    UNIQUE
15921      ur1 : id, of_product;
15922  END_ENTITY;
15923
15924  ENTITY product_definition_formation_relationship;
15925      id                                     : identifier;
15926      name                                   : label;
15927      description                            : OPTIONAL text;
15928      relating_product_definition_formation  : product_definition_formation;
15929      related_product_definition_formation   : product_definition_formation;
15930  END_ENTITY;
15931
15932  ENTITY product_definition_formation_with_specified_source
15933    SUBTYPE OF ( product_definition_formation );
15934      make_or_buy  : source;
15935  END_ENTITY;
15936
15937  ENTITY product_definition_group_assignment
15938    SUBTYPE OF ( group_assignment );
15939      SELF\group_assignment.assigned_group  : product_definition_element_relationship;
15940      items                                 : SET [1 : 1] OF product_definition_or_product_definition_relationship;
15941  END_ENTITY;
15942
15943  ENTITY product_definition_kinematics
15944    SUBTYPE OF ( property_definition );
15945      SELF\property_definition.definition  : product_definition;
15946    INVERSE
15947      representation_relation : kinematic_property_definition_representation FOR definition;
15948    UNIQUE
15949      ur1 : SELF\property_definition.definition;
15950  END_ENTITY;
15951
15952  ENTITY product_definition_occurrence_relationship;
15953      name              : label;
15954      description       : OPTIONAL text;
15955      occurrence        : product_definition;
15956      occurrence_usage  : assembly_component_usage;
15957    WHERE
15958      wr1: ( occurrence_usage.relating_product_definition :<>: occurrence );
15959      wr2: ( occurrence_usage.related_product_definition :<>: occurrence );
15960      wr3: ( occurrence.formation :=: occurrence_usage.related_product_definition.formation );
15961  END_ENTITY;
15962
15963  ENTITY product_definition_process
15964    SUBTYPE OF ( action );
15965      identification  : identifier;
15966    INVERSE
15967      product_definitions : SET [1 : ?] OF process_product_association FOR process;
15968  END_ENTITY;
15969
15970  ENTITY product_definition_reference
15971    SUBTYPE OF ( generic_product_definition_reference );
15972      product_id                       : identifier;
15973      product_definition_formation_id  : identifier;
15974      product_definition_id            : identifier;
15975      id_owning_organization_name      : OPTIONAL label;
15976  END_ENTITY;
15977
15978  ENTITY product_definition_reference_with_local_representation
15979    SUBTYPE OF ( generic_product_definition_reference, product_definition );
15980  END_ENTITY;
15981
15982  ENTITY product_definition_relationship;
15983      id                           : identifier;
15984      name                         : label;
15985      description                  : OPTIONAL text;
15986      relating_product_definition  : product_definition_or_reference;
15987      related_product_definition   : product_definition_or_reference;
15988  END_ENTITY;
15989
15990  ENTITY product_definition_relationship_kinematics
15991    SUBTYPE OF ( property_definition );
15992      SELF\property_definition.definition  : product_definition_relationship;
15993    UNIQUE
15994      ur1 : SELF\property_definition.definition;
15995  END_ENTITY;
15996
15997  ENTITY product_definition_resource
15998    SUBTYPE OF ( action_resource, product_definition );
15999    WHERE
16000      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REQUIREMENT_FOR_ACTION_RESOURCE.'
16001               + 'RESOURCES'  ) ) > 0 );
16002      wr2: ( SELF.frame_of_reference.name IN [ 'part definition', 'part occurrence', 'physical occurrence'] );
16003  END_ENTITY;
16004
16005  ENTITY product_definition_shape
16006    SUBTYPE OF ( property_definition );
16007    UNIQUE
16008      ur1 : definition;
16009    WHERE
16010      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_PRODUCT_DEFINITION',
16011               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_OBJECT' ] * TYPEOF( SELF\property_definition.
16012               definition ) ) > 0 );
16013  END_ENTITY;
16014
16015  ENTITY product_definition_substitute;
16016      description            : OPTIONAL text;
16017      context_relationship   : product_definition_relationship;
16018      substitute_definition  : product_definition;
16019    DERIVE
16020      name  : label := get_name_value( SELF );
16021    WHERE
16022      wr1: ( context_relationship.related_product_definition :<>: substitute_definition );
16023      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
16024  END_ENTITY;
16025
16026  ENTITY product_definition_usage
16027    SUPERTYPE OF ( ONEOF ( make_from_usage_option, assembly_component_usage ) )
16028    SUBTYPE OF ( product_definition_relationship );
16029    UNIQUE
16030      ur1 : id, relating_product_definition, related_product_definition;
16031    WHERE
16032      wr1: acyclic_product_definition_relationship( SELF, [SELF\product_definition_relationship.related_product_definition],
16033               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_USAGE'  );
16034  END_ENTITY;
16035
16036  ENTITY product_definition_with_associated_documents
16037    SUBTYPE OF ( product_definition );
16038      documentation_ids  : SET [1 : ?] OF document;
16039  END_ENTITY;
16040
16041  ENTITY product_design_to_individual
16042    SUBTYPE OF ( product_relationship );
16043    DERIVE
16044      individual_product  : product := SELF\product_relationship.related_product;
16045      product_design      : product := SELF\product_relationship.relating_product;
16046  END_ENTITY;
16047
16048  ENTITY product_design_version_to_individual
16049    SUBTYPE OF ( product_definition_formation_relationship );
16050    DERIVE
16051      individual_product      : product_definition_formation := SELF\product_definition_formation_relationship.
16052                                  related_product_definition_formation;
16053      product_design_version  : product_definition_formation := SELF\product_definition_formation_relationship.
16054                                  relating_product_definition_formation;
16055  END_ENTITY;
16056
16057  ENTITY product_identification
16058    SUBTYPE OF ( configuration_item, characterized_object );
16059      SELF\configuration_item.item_concept  : product_class;
16060    WHERE
16061      wr1: ( SIZEOF( QUERY ( cd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONFIGURATION_DESIGN.'
16062               + 'CONFIGURATION'  ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRODUCT_DEFINITION_FORMATION' )
16063               IN TYPEOF( cd.design ) ) AND ( SIZEOF( QUERY ( prpc <* USEDIN( cd.design\product_definition_formation.of_product,
16064               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name IN [
16065               'part' , 'raw material', 'tool'] ) ) ) > 0 ) ) ) ) <= 1 );
16066      wr2: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CONFIGURABLE_ITEM' ) IN TYPEOF( SELF ) ) ) XOR ( (
16067               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_SPECIFICATION' ) IN TYPEOF( SELF ) ) );
16068  END_ENTITY;
16069
16070  ENTITY product_material_composition_relationship
16071    SUBTYPE OF ( product_definition_relationship );
16072      class                 : label;
16073      constituent_amount    : SET [1 : ?] OF characterized_product_composition_value;
16074      composition_basis     : label;
16075      determination_method  : text;
16076  END_ENTITY;
16077
16078  ENTITY product_planned_to_realized
16079    SUBTYPE OF ( product_definition_formation_relationship );
16080    DERIVE
16081      planned_product   : product_definition_formation := SELF\product_definition_formation_relationship.
16082                            relating_product_definition_formation;
16083      realized_product  : product_definition_formation := SELF\product_definition_formation_relationship.
16084                            related_product_definition_formation;
16085  END_ENTITY;
16086
16087  ENTITY product_process_plan
16088    SUBTYPE OF ( product_definition_process );
16089    WHERE
16090      wr1: ( SIZEOF( QUERY ( ar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_RELATIONSHIP.'
16091               + 'RELATED_ACTION'  ) | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
16092               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN' ] * TYPEOF( ar.relating_action ) ) <> 1 ) ) )
16093               = 0 );
16094      wr2: ( SIZEOF( QUERY ( ar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_RELATIONSHIP.'
16095               + 'RELATING_ACTION'  ) | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCESS_PLAN',
16096               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_PROCESS_PLAN' ] * TYPEOF( ar.related_action ) ) = 1 ) OR
16097               ( ( ar.name = 'process operation occurrence' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16098               + 'PROCESS_OPERATION'  IN TYPEOF( ar.related_action.chosen_method ) ) ) ) ) ) = SIZEOF( USEDIN( SELF,
16099               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'ACTION_RELATIONSHIP.RELATING_ACTION' ) ) );
16100      wr3: ( SIZEOF( QUERY ( ppa <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
16101               'PROCESS_PRODUCT_ASSOCIATION.PROCESS'  ) | ( ( ppa.name <> 'produced output' ) OR ( NOT (
16102               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( ppa.defined_product ) ) ) ) ) ) =
16103               0 );
16104  END_ENTITY;
16105
16106  ENTITY product_related_product_category
16107    SUBTYPE OF ( product_category );
16108      products  : SET [1 : ?] OF product;
16109  END_ENTITY;
16110
16111  ENTITY product_relationship;
16112      id                : identifier;
16113      name              : label;
16114      description       : OPTIONAL text;
16115      relating_product  : product;
16116      related_product   : product;
16117  END_ENTITY;
16118
16119  ENTITY product_specification
16120    SUBTYPE OF ( product_identification, configurable_item );
16121  END_ENTITY;
16122
16123  ENTITY profile_floor
16124    SUBTYPE OF ( shape_aspect );
16125    WHERE
16126      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
16127      wr2 : ( SELF.description IN [ 'planar', 'complex', 'through'] );
16128      wr3 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16129                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16130                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
16131                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
16132                TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
16133      wr4 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16134                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16135                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16136                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16137                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
16138                used_representation.items ) >= 1 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 2 ) ) ) ) = 0 ) ) ) ) =
16139                0 ) );
16140      wr5 : ( ( NOT ( SELF.description = 'through' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16141                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16142                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
16143                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
16144                TYPEOF( pdr.used_representation ) ) ) ) = 0 ) ) ) ) = 0 ) );
16145      wr6 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16146                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16147                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16148                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16149                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16150                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16151                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16152                TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
16153      wr7 : ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16154                + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar.description = 'profile floor usage' ) AND (
16155                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
16156                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OUTSIDE_PROFILE'  IN TYPEOF( fcr.related_shape_aspect.of_shape.
16157                definition ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROFILE_FLOOR' IN TYPEOF( fcr.
16158                relating_shape_aspect ) ) ) ) ) >= 1 );
16159      wr8 : ( ( NOT ( SELF.description IN [ 'planar', 'complex'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16160                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16161                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16162                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16163                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16164                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16165                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'shape profile floor orientation' ) AND (
16166                it.description IN [ 'shape profile start', 'shape profile end'] ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
16167      wr9 : ( ( NOT ( SELF.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16168                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16169                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
16170                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF(
16171                pdr.used_representation ) ) AND ( pdr.used_representation.name = 'floor' ) ) ) ) = 1 ) ) ) ) = 1 ) );
16172      wr10: ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
16173                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
16174                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
16175                + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(
16176                pdr.used_representation ) ) AND ( pdr.used_representation.name = 'floor' ) ) ) ) = 1 ) ) ) ) = 1 ) );
16177  END_ENTITY;
16178
16179  ENTITY projected_zone_definition
16180    SUBTYPE OF ( tolerance_zone_definition );
16181      projection_end    : shape_aspect;
16182      projected_length  : length_measure_with_unit;
16183    WHERE
16184      wr1: ( ( 'NUMBER' IN TYPEOF( projected_length\measure_with_unit.value_component ) ) AND ( projected_length\
16185               measure_with_unit.value_component > 0 ) );
16186      wr2: ( derive_dimensional_exponents( projected_length\measure_with_unit.unit_component ) = dimensional_exponents( 1, 0, 0,
16187               0, 0, 0, 0 ) );
16188  END_ENTITY;
16189
16190  ENTITY projected_zone_definition_with_offset
16191    SUBTYPE OF ( projected_zone_definition );
16192      offset  : length_measure_with_unit;
16193  END_ENTITY;
16194
16195  ENTITY projection_curve
16196    SUBTYPE OF ( annotation_curve_occurrence );
16197  END_ENTITY;
16198
16199  ENTITY projection_directed_callout
16200    SUBTYPE OF ( draughting_callout );
16201    WHERE
16202      wr1: ( SIZEOF( QUERY ( p_1 <* SELF\draughting_callout.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16203               + 'PROJECTION_CURVE'  IN TYPEOF( p_1 ) ) ) ) <= 2 );
16204      wr2: ( SIZEOF( SELF\draughting_callout.contents ) >= 2 );
16205  END_ENTITY;
16206
16207  ENTITY promissory_usage_occurrence
16208    SUBTYPE OF ( assembly_component_usage );
16209  END_ENTITY;
16210
16211  ENTITY property_definition
16212    SUPERTYPE OF ( ONEOF ( product_definition_kinematics, product_definition_relationship_kinematics, product_definition_shape ) );
16213      name         : label;
16214      description  : OPTIONAL text;
16215      definition   : characterized_definition;
16216    DERIVE
16217      id  : identifier := get_id_value( SELF );
16218    WHERE
16219      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
16220  END_ENTITY;
16221
16222  ENTITY property_definition_relationship;
16223      name                          : label;
16224      description                   : text;
16225      relating_property_definition  : property_definition;
16226      related_property_definition   : property_definition;
16227  END_ENTITY;
16228
16229  ENTITY property_definition_representation;
16230      definition           : represented_definition;
16231      used_representation  : representation;
16232    DERIVE
16233      description  : text := get_description_value( SELF );
16234      name         : label := get_name_value( SELF );
16235    WHERE
16236      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
16237               <= 1 );
16238      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.NAMED_ITEM' ) ) <= 1 );
16239  END_ENTITY;
16240
16241  ENTITY property_process
16242    SUBTYPE OF ( action );
16243      identification  : identifier;
16244    INVERSE
16245      properties : SET [1 : ?] OF process_property_association FOR process;
16246  END_ENTITY;
16247
16248  ENTITY protrusion
16249    SUBTYPE OF ( feature_definition );
16250    WHERE
16251      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16252               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16253               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16254               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
16255               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16256      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16257               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16258               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
16259               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
16260               'shape volume occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
16261               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
16262               description = 'volume shape usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16263               + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( sdr.relating_shape_aspect.description = 'volume shape' ) ) )
16264               = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
16265      wr3: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
16266               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
16267               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
16268  END_ENTITY;
16269
16270  ENTITY qualified_representation_item
16271    SUBTYPE OF ( representation_item );
16272      qualifiers  : SET [1 : ?] OF value_qualifier;
16273    WHERE
16274      wr1: ( SIZEOF( QUERY ( temp <* qualifiers | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRECISION_QUALIFIER' IN
16275               TYPEOF( temp ) ) ) ) < 2 );
16276  END_ENTITY;
16277
16278  ENTITY qualitative_uncertainty
16279    SUBTYPE OF ( uncertainty_qualifier );
16280      uncertainty_value  : text;
16281  END_ENTITY;
16282
16283  ENTITY quantified_assembly_component_usage
16284    SUBTYPE OF ( assembly_component_usage );
16285      quantity  : measure_with_unit;
16286    WHERE
16287      wr1: ( ( NOT ( 'NUMBER' IN TYPEOF( quantity.value_component ) ) ) OR ( quantity.value_component > 0 ) );
16288  END_ENTITY;
16289
16290  ENTITY quantifier_expression
16291    ABSTRACT SUPERTYPE
16292    SUBTYPE OF ( multiple_arity_generic_expression );
16293      variables  : LIST [1 : ?] OF UNIQUE generic_variable;
16294    WHERE
16295      wr1: ( SIZEOF( QUERY ( vrbl <* variables | ( NOT ( vrbl IN SELF\multiple_arity_generic_expression.operands ) ) ) ) = 0 );
16296      wr2: ( SIZEOF( QUERY ( vrbl <* variables | ( NOT ( ( schema_prefix + 'BOUND_VARIABLE_SEMANTICS' ) IN TYPEOF( vrbl.
16297               interpretation.semantics ) ) ) ) ) = 0 );
16298  END_ENTITY;
16299
16300  ENTITY quasi_uniform_curve
16301    SUBTYPE OF ( b_spline_curve );
16302  END_ENTITY;
16303
16304  ENTITY quasi_uniform_surface
16305    SUBTYPE OF ( b_spline_surface );
16306  END_ENTITY;
16307
16308  ENTITY rack_and_pinion_pair
16309    SUBTYPE OF ( low_order_kinematic_pair_with_motion_coupling );
16310      pinion_radius  : length_measure;
16311    WHERE
16312      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
16313               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
16314  END_ENTITY;
16315
16316  ENTITY rack_and_pinion_pair_value
16317    SUBTYPE OF ( pair_value );
16318      SELF\pair_value.applies_to_pair  : rack_and_pinion_pair;
16319      actual_displacement              : length_measure;
16320    DERIVE
16321      actual_rotation  : plane_angle_measure := 0;
16322  END_ENTITY;
16323
16324  ENTITY rack_and_pinion_pair_with_range
16325    SUBTYPE OF ( rack_and_pinion_pair );
16326      lower_limit_rack_displacement  : OPTIONAL length_measure;
16327      upper_limit_rack_displacement  : OPTIONAL length_measure;
16328    WHERE
16329      wr1: ( ( ( NOT EXISTS( lower_limit_rack_displacement ) ) OR ( NOT EXISTS( upper_limit_rack_displacement ) ) ) XOR (
16330               lower_limit_rack_displacement < upper_limit_rack_displacement ) );
16331  END_ENTITY;
16332
16333  ENTITY radioactivity_measure_with_unit
16334    SUBTYPE OF ( measure_with_unit );
16335    WHERE
16336      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIOACTIVITY_UNIT' IN TYPEOF( SELF\measure_with_unit.
16337               unit_component ) );
16338  END_ENTITY;
16339
16340  ENTITY radioactivity_unit
16341    SUBTYPE OF ( derived_unit );
16342    WHERE
16343      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.becquerel ) );
16344  END_ENTITY;
16345
16346  ENTITY radius_dimension
16347    SUBTYPE OF ( dimension_curve_directed_callout );
16348    WHERE
16349      wr1: ( SIZEOF( QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_CURVE' IN
16350               TYPEOF( con ) ) ) ) <= 1 );
16351  END_ENTITY;
16352
16353  ENTITY radius_geometric_constraint
16354    SUBTYPE OF ( explicit_geometric_constraint );
16355      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF radial_geometry_constraint_element;
16356    WHERE
16357      wr1: ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 );
16358  END_ENTITY;
16359
16360  ENTITY range_characteristic
16361    SUBTYPE OF ( representation, descriptive_representation_item );
16362    WHERE
16363      wr1: ( NOT ( SELF\representation.name IN [ 'tolerance', 'minimum tolerance', 'maximum tolerance', 'nominal tolerance',
16364               'plus minus tolerance' , 'symmetrical tolerance', 'statistical tolerance'] ) );
16365  END_ENTITY;
16366
16367  ENTITY ratio_measure_with_unit
16368    SUBTYPE OF ( measure_with_unit );
16369    WHERE
16370      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
16371  END_ENTITY;
16372
16373  ENTITY ratio_unit
16374    SUBTYPE OF ( named_unit );
16375    WHERE
16376      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
16377               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
16378               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
16379               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
16380  END_ENTITY;
16381
16382  ENTITY rational_b_spline_curve
16383    SUBTYPE OF ( b_spline_curve );
16384      weights_data  : LIST [2 : ?] OF REAL;
16385    DERIVE
16386      weights  : ARRAY [0 : upper_index_on_control_points] OF REAL := list_to_array( weights_data, 0,
16387                   upper_index_on_control_points );
16388    WHERE
16389      wr1: ( SIZEOF( weights_data ) = SIZEOF( SELF\b_spline_curve.control_points_list ) );
16390      wr2: curve_weights_positive( SELF );
16391  END_ENTITY;
16392
16393  ENTITY rational_b_spline_surface
16394    SUBTYPE OF ( b_spline_surface );
16395      weights_data  : LIST [2 : ?] OF LIST [2 : ?] OF REAL;
16396    DERIVE
16397      weights  : ARRAY [0 : u_upper] OF ARRAY [0 : v_upper] OF REAL := make_array_of_array( weights_data, 0, u_upper, 0, v_upper );
16398    WHERE
16399      wr1: ( ( SIZEOF( weights_data ) = SIZEOF( SELF\b_spline_surface.control_points_list ) ) AND ( SIZEOF( weights_data[1] ) =
16400               SIZEOF( SELF\b_spline_surface.control_points_list[1] ) ) );
16401      wr2: surface_weights_positive( SELF );
16402  END_ENTITY;
16403
16404  ENTITY rational_representation_item
16405    SUBTYPE OF ( representation_item, slash_expression );
16406    WHERE
16407      wr1: ( SIZEOF( QUERY ( operand <* SELF\binary_generic_expression.operands | ( NOT (
16408               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_LITERAL'  IN TYPEOF( operand ) ) ) ) ) = 0 );
16409  END_ENTITY;
16410
16411  ENTITY rationalize_function
16412    SUBTYPE OF ( maths_function, unary_generic_expression );
16413      SELF\unary_generic_expression.operand  : maths_function;
16414    DERIVE
16415      fun  : maths_function := SELF\unary_generic_expression.operand;
16416    WHERE
16417      wr1: ( ( space_dimension( fun.domain ) = 1 ) AND ( space_dimension( fun.range ) = 1 ) );
16418      wr2: number_tuple_subspace_check( factor1( fun.range ) );
16419      wr3: ( space_dimension( factor1( fun.range ) ) > 1 );
16420  END_ENTITY;
16421
16422  ENTITY real_defined_function
16423    ABSTRACT SUPERTYPE
16424    SUBTYPE OF ( numeric_defined_function );
16425  END_ENTITY;
16426
16427  ENTITY real_interval_from_min
16428    SUBTYPE OF ( maths_space, generic_literal );
16429      min          : REAL;
16430      min_closure  : open_closed;
16431  END_ENTITY;
16432
16433  ENTITY real_interval_to_max
16434    SUBTYPE OF ( maths_space, generic_literal );
16435      max          : REAL;
16436      max_closure  : open_closed;
16437  END_ENTITY;
16438
16439  ENTITY real_literal
16440    SUBTYPE OF ( literal_number );
16441      SELF\literal_number.the_value  : REAL;
16442  END_ENTITY;
16443
16444  ENTITY real_numeric_variable
16445    SUBTYPE OF ( numeric_variable );
16446  END_ENTITY;
16447
16448  ENTITY real_representation_item
16449    SUBTYPE OF ( representation_item, real_literal );
16450  END_ENTITY;
16451
16452  ENTITY real_tuple_literal
16453    SUBTYPE OF ( generic_literal );
16454      lit_value  : LIST [1 : ?] OF REAL;
16455  END_ENTITY;
16456
16457  ENTITY rectangular_area
16458    SUBTYPE OF ( primitive_2d );
16459      position  : axis2_placement_2d;
16460      x         : positive_length_measure;
16461      y         : positive_length_measure;
16462  END_ENTITY;
16463
16464  ENTITY rectangular_array_placement_group_component
16465    SUBTYPE OF ( array_placement_group );
16466  END_ENTITY;
16467
16468  ENTITY rectangular_closed_profile
16469    SUBTYPE OF ( shape_aspect );
16470    WHERE
16471      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
16472      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16473               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16474               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16475               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
16476      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16477               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16478               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16479               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( ( SIZEOF( impl_rep.
16480               used_representation.items ) >= 3 ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 4 ) ) ) ) ) = 0 ) ) ) ) =
16481               0 );
16482      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16483               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16484               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16485               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
16486               pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'length' ) OR ( srwp_i.name =
16487               'width'  ) OR ( srwp_i.name = 'corner radius' ) ) ) ) = SIZEOF( pdr.used_representation.items ) ) ) ) ) = 1 ) ) )
16488               = 1 );
16489      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16490               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16491               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16492               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16493               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
16494               IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16495      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16496               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16497               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16498               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16499               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16500               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16501               TYPEOF( it ) ) = 2 ) AND ( it.name = 'width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16502      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16503               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16504               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16505               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16506               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16507               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16508               TYPEOF( it ) ) = 2 ) AND ( it.name = 'length' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16509      wr8: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16510               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16511               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16512               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16513               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16514               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16515               TYPEOF( it ) ) = 2 ) AND ( it.name = 'corner radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16516  END_ENTITY;
16517
16518  ENTITY rectangular_composite_surface
16519    SUBTYPE OF ( bounded_surface );
16520      segments  : LIST [1 : ?] OF LIST [1 : ?] OF surface_patch;
16521    DERIVE
16522      n_u  : INTEGER := SIZEOF( segments );
16523      n_v  : INTEGER := SIZEOF( segments[1] );
16524    WHERE
16525      wr1: ( SIZEOF( QUERY ( s <* segments | ( n_v <> SIZEOF( s ) ) ) ) = 0 );
16526      wr2: constraints_rectangular_composite_surface( SELF );
16527  END_ENTITY;
16528
16529  ENTITY rectangular_composite_surface_transition_locator
16530    SUBTYPE OF ( founded_item );
16531      basis_surface       : rectangular_composite_surface;
16532      surface_parameter   : u_or_v_parameter;
16533      u_transition_index  : INTEGER;
16534      v_transition_index  : INTEGER;
16535    WHERE
16536      wr1: ( SIZEOF( using_representations( SELF.basis_surface ) * relating_shape_representations_of_extreme_values( SELF ) ) > 0 );
16537  END_ENTITY;
16538
16539  ENTITY rectangular_pattern
16540    SUBTYPE OF ( replicate_feature );
16541    WHERE
16542      wr1 : ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16543                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16544                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
16545                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( SIZEOF( QUERY ( sdr <*
16546                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.' +
16547                'RELATING_SHAPE_ASPECT'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
16548                IN TYPEOF( sar ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF( sdr.
16549                related_shape_aspect ) ) ) ) = 1 ) ) ) <= 5 ) ) ) ) = 0 );
16550      wr2 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16551                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16552                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16553                + 'DIRECTION_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
16554                'row layout direction'  ) ) ) ) = 1 ) ) ) ) = 0 );
16555      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16556                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16557                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16558                + 'DIRECTION_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
16559                'column layout direction'  ) ) ) ) = 1 ) ) ) ) = 0 );
16560      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16561                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16562                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16563                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
16564      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16565                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16566                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16567                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
16568                used_representation.items ) = 5 ) ) ) ) = 0 ) ) ) ) = 0 );
16569      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16570                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16571                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16572                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16573                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16574                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16575                + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'number of rows' ) ) ) ) =
16576                1 ) ) ) ) = 0 ) ) ) ) = 0 );
16577      wr7 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16578                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16579                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16580                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16581                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16582                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16583                + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'number of columns' ) ) ) )
16584                = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16585      wr8 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16586                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16587                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16588                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16589                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16590                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16591                TYPEOF( it ) ) = 2 ) AND ( it.name = 'row spacing' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16592      wr9 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16593                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16594                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16595                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16596                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16597                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16598                TYPEOF( it ) ) = 2 ) AND ( it.name = 'column spacing' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16599      wr10: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16600                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16601                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16602                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16603                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
16604                IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16605  END_ENTITY;
16606
16607  ENTITY rectangular_trimmed_surface
16608    SUBTYPE OF ( bounded_surface );
16609      basis_surface  : surface;
16610      u1             : parameter_value;
16611      u2             : parameter_value;
16612      v1             : parameter_value;
16613      v2             : parameter_value;
16614      usense         : BOOLEAN;
16615      vsense         : BOOLEAN;
16616    WHERE
16617      wr1: ( u1 <> u2 );
16618      wr2: ( v1 <> v2 );
16619      wr3: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF( basis_surface ) ) AND ( NOT (
16620               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE'  IN TYPEOF( basis_surface ) ) ) ) OR (
16621               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_REVOLUTION'  IN TYPEOF( basis_surface ) ) OR ( usense
16622               = ( u2 > u1 ) ) );
16623      wr4: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE' IN TYPEOF( basis_surface ) ) OR (
16624               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE'  IN TYPEOF( basis_surface ) ) OR ( vsense = (
16625               v2 > v1 ) ) );
16626  END_ENTITY;
16627
16628  ENTITY referenced_modified_datum
16629    SUBTYPE OF ( datum_reference );
16630      modifier  : limit_condition;
16631  END_ENTITY;
16632
16633  ENTITY reindexed_array_function
16634    SUBTYPE OF ( maths_function, unary_generic_expression );
16635      SELF\unary_generic_expression.operand  : maths_function;
16636      starting_indices                       : LIST [1 : ?] OF INTEGER;
16637    WHERE
16638      wr1: function_is_array( SELF\unary_generic_expression.operand );
16639      wr2: ( SIZEOF( starting_indices ) = SIZEOF( shape_of_array( SELF\unary_generic_expression.operand ) ) );
16640  END_ENTITY;
16641
16642  ENTITY relative_event_occurrence
16643    SUBTYPE OF ( event_occurrence );
16644      base_event  : event_occurrence;
16645      offset      : time_measure_with_unit;
16646  END_ENTITY;
16647
16648  ENTITY removal_volume
16649    SUBTYPE OF ( feature_definition );
16650    WHERE
16651      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16652               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16653               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16654               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
16655               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16656      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16657               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16658               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
16659               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
16660               'shape volume occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
16661               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) | ( ( sar
16662               .description = 'volume shape usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16663               + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( sdr.relating_shape_aspect.description = 'volume shape' ) ) )
16664               = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
16665  END_ENTITY;
16666
16667  ENTITY rep_item_group
16668    SUBTYPE OF ( group, representation_item );
16669    WHERE
16670      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRESENTATION_LAYER_ASSIGNMENT.' +
16671               'ASSIGNED_ITEMS'  ) ) > 0 );
16672      wr2: ( SIZEOF( QUERY ( r <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION.' + 'ITEMS' )
16673               | ( r.name = 'group representation' ) ) ) > 0 );
16674      wr3: ( SIZEOF( QUERY ( ga <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GROUP_ASSIGNMENT.' +
16675               'ASSIGNED_GROUP'  ) | ( ga.role.name <> 'group membership' ) ) ) = 0 );
16676      wr4: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRIC_REPRESENTATION_ITEM',
16677               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'TOPOLOGICAL_REPRESENTATION_ITEM',
16678               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MAPPED_ITEM',
16679               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'STYLED_ITEM'] * TYPEOF( SELF ) ) = 1 );
16680  END_ENTITY;
16681
16682  ENTITY repackaging_function
16683    SUBTYPE OF ( maths_function, unary_generic_expression );
16684      SELF\unary_generic_expression.operand  : maths_function;
16685      input_repack                           : repackage_options;
16686      output_repack                          : repackage_options;
16687      selected_output                        : nonnegative_integer;
16688    WHERE
16689      wr1: ( ( input_repack <> ro_wrap_as_tuple ) OR ( ( space_dimension( operand.domain ) = 1 ) AND ( ( schema_prefix +
16690               'TUPLE_SPACE'  ) IN TYPEOF( factor1( operand.domain ) ) ) ) );
16691      wr2: ( ( output_repack <> ro_unwrap_tuple ) OR ( ( space_dimension( operand.range ) = 1 ) AND ( ( schema_prefix +
16692               'TUPLE_SPACE'  ) IN TYPEOF( factor1( operand.range ) ) ) ) );
16693      wr3: ( selected_output <= space_dimension( repackage( operand.range, output_repack ) ) );
16694  END_ENTITY;
16695
16696  ENTITY reparametrised_composite_curve_segment
16697    SUBTYPE OF ( composite_curve_segment );
16698      param_length  : parameter_value;
16699    WHERE
16700      wr1: ( param_length > 0 );
16701  END_ENTITY;
16702
16703  ENTITY replicate_feature
16704    SUPERTYPE OF ( ONEOF ( circular_pattern, rectangular_pattern, feature_pattern ) )
16705    SUBTYPE OF ( feature_definition );
16706    WHERE
16707      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16708               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16709               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16710               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
16711      wr2: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16712               + 'SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATING_SHAPE_ASPECT' ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16713               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) | ( ( SIZEOF( [
16714               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPLICATE_FEATURE' ,
16715               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCED_FEATURE' ] * TYPEOF( fcr.related_shape_aspect ) ) >= 1 )
16716               AND ( fcr.name = 'pattern basis' ) ) ) ) = 1 );
16717      wr3: ( ( SIZEOF( QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
16718               + 'RELATING_SHAPE_ASPECT' ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16719               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) ) + SIZEOF( QUERY ( sar <* USEDIN( SELF,
16720               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) | ( NOT
16721               ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP' IN TYPEOF( sar ) ) ) ) ) ) = 0 );
16722  END_ENTITY;
16723
16724  ENTITY repositioned_neutral_sketch
16725    SUBTYPE OF ( mapped_item, geometric_representation_item );
16726    DERIVE
16727      map  : representation_map := SELF\mapped_item.mapping_source;
16728    WHERE
16729      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION' IN TYPEOF( map.mapped_representation ) );
16730      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN TYPEOF( map.mapping_origin ) );
16731      wr3: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' IN TYPEOF( SELF\mapped_item.mapping_target ) );
16732  END_ENTITY;
16733
16734  ENTITY repositioned_tessellated_item
16735    SUBTYPE OF ( tessellated_item );
16736      location  : axis2_placement_3d;
16737    WHERE
16738      wr1: ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_CURVE_SET',
16739               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_GEOMETRIC_SET' ,
16740               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_POINT_SET' ,
16741               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SURFACE_SET' ,
16742               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHELL' ,
16743               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SOLID' ,
16744               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_WIRE' ] * TYPEOF( SELF ) ) = 0 ) );
16745  END_ENTITY;
16746
16747  ENTITY representation
16748    SUPERTYPE OF ( ONEOF ( interpolated_configuration_representation, link_motion_representation_along_path ) ANDOR ONEOF (
16749        kinematic_link_representation, kinematic_topology_structure, kinematic_topology_directed_structure,
16750        kinematic_topology_network_structure, mechanism_representation, shape_representation ) ANDOR ONEOF (
16751        kinematic_topology_structure, kinematic_topology_directed_structure, kinematic_topology_network_structure ) );
16752      name              : label;
16753      items             : SET [1 : ?] OF representation_item;
16754      context_of_items  : representation_context;
16755    DERIVE
16756      id           : identifier := get_id_value( SELF );
16757      description  : text := get_description_value( SELF );
16758    WHERE
16759      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
16760      wr2: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DESCRIPTION_ATTRIBUTE.DESCRIBED_ITEM' ) )
16761               <= 1 );
16762  END_ENTITY;
16763
16764  ENTITY representation_context;
16765      context_identifier  : identifier;
16766      context_type        : text;
16767    INVERSE
16768      representations_in_context : SET [1 : ?] OF representation FOR context_of_items;
16769  END_ENTITY;
16770
16771  ENTITY representation_item
16772    SUPERTYPE OF ( ONEOF ( binary_representation_item, compound_representation_item, mapped_item, value_representation_item )
16773        ANDOR ONEOF ( mapped_item, styled_item ) ANDOR ONEOF ( boolean_representation_item, date_representation_item,
16774        date_time_representation_item, integer_representation_item, logical_representation_item, rational_representation_item,
16775        real_representation_item ) );
16776      name  : label;
16777    WHERE
16778      wr1: ( SIZEOF( using_representations( SELF ) ) > 0 );
16779  END_ENTITY;
16780
16781  ENTITY representation_item_relationship;
16782      name                          : label;
16783      description                   : OPTIONAL text;
16784      relating_representation_item  : representation_item;
16785      related_representation_item   : representation_item;
16786  END_ENTITY;
16787
16788  ENTITY representation_map;
16789      mapping_origin         : representation_item;
16790      mapped_representation  : representation;
16791    INVERSE
16792      map_usage : SET [1 : ?] OF mapped_item FOR mapping_source;
16793    WHERE
16794      wr1: item_in_context( SELF.mapping_origin, SELF.mapped_representation.context_of_items );
16795  END_ENTITY;
16796
16797  ENTITY representation_proxy_item
16798    SUBTYPE OF ( representation_item );
16799  END_ENTITY;
16800
16801  ENTITY representation_relationship;
16802      name         : label;
16803      description  : OPTIONAL text;
16804      rep_1        : representation;
16805      rep_2        : representation;
16806  END_ENTITY;
16807
16808  ENTITY representation_relationship_with_transformation
16809    SUBTYPE OF ( representation_relationship );
16810      transformation_operator  : transformation;
16811    WHERE
16812      wr1: ( SELF\representation_relationship.rep_1.context_of_items :<>: SELF\representation_relationship.rep_2.context_of_items );
16813  END_ENTITY;
16814
16815  ENTITY representative_shape_representation
16816    SUBTYPE OF ( shape_representation );
16817    WHERE
16818      wr1: ( unique_in_product_definition( SELF ) OR unique_in_shape_aspect( SELF ) );
16819  END_ENTITY;
16820
16821  ENTITY requirement_assigned_object
16822    SUBTYPE OF ( group_assignment );
16823      SELF\group_assignment.assigned_group  : requirement_assignment;
16824      items                                 : SET [1 : 1] OF requirement_assigned_item;
16825  END_ENTITY;
16826
16827  ENTITY requirement_assignment
16828    SUBTYPE OF ( characterized_object, group );
16829  END_ENTITY;
16830
16831  ENTITY requirement_for_action_resource
16832    SUBTYPE OF ( action_resource_requirement );
16833      resources  : SET [1 : ?] OF action_resource;
16834  END_ENTITY;
16835
16836  ENTITY requirement_source
16837    SUBTYPE OF ( group );
16838  END_ENTITY;
16839
16840  ENTITY resistance_measure_with_unit
16841    SUBTYPE OF ( measure_with_unit );
16842    WHERE
16843      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESISTANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
16844  END_ENTITY;
16845
16846  ENTITY resistance_unit
16847    SUBTYPE OF ( derived_unit );
16848    WHERE
16849      wr1: ( derive_dimensional_exponents( SELF ) = dimensions_for_si_unit( si_unit_name.ohm ) );
16850  END_ENTITY;
16851
16852  ENTITY resource_property;
16853      name         : label;
16854      description  : text;
16855      resource     : characterized_resource_definition;
16856  END_ENTITY;
16857
16858  ENTITY resource_property_representation;
16859      name            : label;
16860      description     : text;
16861      property        : resource_property;
16862      representation  : representation;
16863  END_ENTITY;
16864
16865  ENTITY resource_requirement_type;
16866      name         : label;
16867      description  : text;
16868  END_ENTITY;
16869
16870  ENTITY restriction_function
16871    SUBTYPE OF ( maths_function, unary_generic_expression );
16872      SELF\unary_generic_expression.operand  : maths_space;
16873  END_ENTITY;
16874
16875  ENTITY resulting_path
16876    SUBTYPE OF ( link_motion_representation_along_path );
16877      controlling_joints  : SET [1 : ?] OF kinematic_joint;
16878  END_ENTITY;
16879
16880  ENTITY retention
16881    SUBTYPE OF ( action );
16882    WHERE
16883      wr1: ( SIZEOF( QUERY ( aa <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_ASSIGNMENT.'
16884               + 'ASSIGNED_ACTION'  ) | ( ( 'ACTIVITY.APPLIED_ACTION_ASSIGNMENT' IN TYPEOF( aa ) ) AND ( aa.role.name = 'retention'  ) ) ) )
16885               >= 1 );
16886      wr2: ( ( SIZEOF( QUERY ( atia <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
16887               'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'  ) | ( atia.role.name = 'minimum retention period' ) ) ) = 1 ) AND (
16888               SIZEOF( QUERY ( atia <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
16889               'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'  ) | ( atia.role.name = 'maximum retention period' ) ) ) = 1 ) AND (
16890               SIZEOF( QUERY ( atia1 <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
16891               'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS'  ) | ( ( atia1.role.name = 'minimum retention period' ) AND (
16892               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_INTERVAL_WITH_BOUNDS'  IN TYPEOF( atia1.
16893               assigned_time_interval ) ) AND ( EXISTS( atia1.assigned_time_interval\time_interval_with_bounds.secondary_bound )
16894               OR EXISTS( atia1.assigned_time_interval\time_interval_with_bounds.duration ) ) AND ( SIZEOF( QUERY ( atia2 <*
16895               USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'APPLIED_TIME_INTERVAL_ASSIGNMENT.ITEMS' ) | (
16896               ( atia2.role.name = 'maximum retention period' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16897               + 'TIME_INTERVAL_WITH_BOUNDS'  IN TYPEOF( atia2.assigned_time_interval ) ) AND ( EXISTS( atia2.
16898               assigned_time_interval\time_interval_with_bounds.secondary_bound ) OR EXISTS( atia2.assigned_time_interval\
16899               time_interval_with_bounds.duration ) ) AND ( atia1.assigned_time_interval\time_interval_with_bounds.primary_bound
16900               :=: atia2.assigned_time_interval\time_interval_with_bounds.primary_bound ) ) ) ) = 1 ) ) ) ) = 1 ) );
16901      wr3: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_RELATIONSHIP.RELATING_ACTION' ) )
16902               + SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ACTION_RELATIONSHIP.RELATED_ACTION' ) ) )
16903               = 0 );
16904  END_ENTITY;
16905
16906  ENTITY revolute_pair
16907    SUBTYPE OF ( low_order_kinematic_pair );
16908    DERIVE
16909      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := FALSE;
16910      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
16911      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
16912      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := FALSE;
16913      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := FALSE;
16914      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
16915  END_ENTITY;
16916
16917  ENTITY revolute_pair_value
16918    SUBTYPE OF ( pair_value );
16919      SELF\pair_value.applies_to_pair  : revolute_pair;
16920      actual_rotation                  : plane_angle_measure;
16921  END_ENTITY;
16922
16923  ENTITY revolute_pair_with_range
16924    SUBTYPE OF ( revolute_pair );
16925      lower_limit_actual_rotation  : OPTIONAL plane_angle_measure;
16926      upper_limit_actual_rotation  : OPTIONAL plane_angle_measure;
16927    WHERE
16928      wr1: ( ( ( NOT EXISTS( lower_limit_actual_rotation ) ) OR ( NOT EXISTS( upper_limit_actual_rotation ) ) ) XOR (
16929               lower_limit_actual_rotation < upper_limit_actual_rotation ) );
16930  END_ENTITY;
16931
16932  ENTITY revolved_area_solid
16933    SUBTYPE OF ( swept_area_solid );
16934      axis   : axis1_placement;
16935      angle  : plane_angle_measure;
16936    DERIVE
16937      axis_line  : line := representation_item( '' ) || geometric_representation_item(  ) || curve(  ) || line( axis.location,
16938                     representation_item( '' ) || geometric_representation_item(  ) || vector( axis.z, 1 ) );
16939  END_ENTITY;
16940
16941  ENTITY revolved_face_solid
16942    SUBTYPE OF ( swept_face_solid );
16943      axis   : axis1_placement;
16944      angle  : plane_angle_measure;
16945    DERIVE
16946      axis_line  : line := representation_item( '' ) || geometric_representation_item(  ) || curve(  ) || line( axis.location,
16947                     representation_item( '' ) || geometric_representation_item(  ) || vector( axis.z, 1 ) );
16948  END_ENTITY;
16949
16950  ENTITY revolved_face_solid_with_trim_conditions
16951    SUBTYPE OF ( revolved_face_solid );
16952      first_trim_condition   : trim_condition_select;
16953      second_trim_condition  : trim_condition_select;
16954    WHERE
16955      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF( first_trim_condition ) ) OR (
16956               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'  IN TYPEOF( second_trim_condition ) ) ) );
16957      wr2: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF( first_trim_condition ) )
16958               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF( second_trim_condition ) )
16959               AND ( first_trim_condition = second_trim_condition ) ) );
16960  END_ENTITY;
16961
16962  ENTITY revolved_profile
16963    SUBTYPE OF ( feature_definition );
16964    WHERE
16965      wr1: ( SELF\characterized_object.description IN [ 'groove', 'flat', 'round', 'open profile'] );
16966      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16967               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16968               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16969               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
16970               used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 );
16971      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
16972               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16973               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16974               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
16975               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
16976               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
16977               TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
16978      wr4: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
16979               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.
16980               used_representation ) ) AND ( pdr.used_representation.name = 'removal direction' ) ) ) ) = 1 );
16981      wr5: ( ( NOT ( SELF\characterized_object.description = 'open profile' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <*
16982               USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | (
16983               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
16984               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
16985               sa_occ.description = 'outer edge shape occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
16986               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
16987               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
16988               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE' IN TYPEOF( sdr.
16989               relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description = 'outer edge shape' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) )
16990               = 0 ) );
16991      wr6: ( ( NOT ( SELF\characterized_object.description = 'flat' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
16992               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
16993               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
16994               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
16995               sa_occ.description = 'flat edge shape occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
16996               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
16997               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
16998               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINEAR_PROFILE' IN TYPEOF( sdr.
16999               relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description = 'flat edge shape' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) )
17000               = 0 ) );
17001      wr7: ( ( NOT ( SELF\characterized_object.description = 'round' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
17002               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
17003               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
17004               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
17005               sa_occ.description = 'rounded edge shape occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17006               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17007               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
17008               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(
17009               sdr.relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description = 'rounded edge shape' ) ) ) ) = 1 ) ) ) )
17010               = 1 ) ) ) ) = 0 ) );
17011      wr8: ( ( NOT ( SELF\characterized_object.description = 'groove' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
17012               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
17013               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
17014               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
17015               sa_occ.description = 'sweep occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17016               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17017               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
17018               IN TYPEOF( sar ) ) ) ) | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
17019               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' ,
17020               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE' ,
17021               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17022               + 'TEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] * TYPEOF( sdr.
17023               relating_shape_aspect ) ) = 1 ) AND ( sdr.relating_shape_aspect.description = 'sweep' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) )
17024               = 0 ) );
17025      wr9: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
17026               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
17027               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
17028  END_ENTITY;
17029
17030  ENTITY rgc_with_dimension
17031    SUBTYPE OF ( radius_geometric_constraint );
17032      radius_value  : positive_length_measure;
17033  END_ENTITY;
17034
17035  ENTITY rib_top
17036    SUBTYPE OF ( feature_definition );
17037    WHERE
17038      wr1: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17039               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17040               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17041               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17042               'rib top condition occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17043               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17044               description = 'rib top usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17045               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17046               + 'RIB_TOP_FLOOR'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17047               + 'RIB_TOP'  IN TYPEOF( sdr.related_shape_aspect.of_shape.definition ) ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
17048      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17049               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17050               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17051               + 'DIRECTION_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
17052               'removal direction'  ) ) ) ) = 1 ) ) ) ) = 1 );
17053      wr3: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
17054               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
17055               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
17056  END_ENTITY;
17057
17058  ENTITY rib_top_floor
17059    SUBTYPE OF ( shape_aspect );
17060    WHERE
17061      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
17062      wr2: ( SELF.description IN [ 'planar', 'complex'] );
17063      wr3: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17064               + 'SHAPE_ASPECT_RELATIONSHIP.RELATING_SHAPE_ASPECT'  ) | ( ( sar.description = 'rib top usage' ) AND (
17065               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( fcr
17066               .related_shape_aspect.description = 'rib top condition occurrence' ) AND (
17067               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) )
17068               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP_FLOOR' IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) )
17069               >= 1 );
17070      wr4: ( ( NOT ( SELF.description = 'complex' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
17071               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
17072               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
17073               + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' IN TYPEOF( pdr
17074               .used_representation ) ) AND ( pdr.used_representation.name = 'rib top face' ) ) ) ) = 1 ) ) ) ) = 0 ) );
17075      wr5: ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
17076               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
17077               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
17078               + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' IN TYPEOF(
17079               pdr.used_representation ) ) AND ( pdr.used_representation.name = 'rib top face' ) ) ) ) = 1 ) ) ) ) = 0 ) );
17080      wr6: ( ( NOT ( SELF.description = 'planar' ) ) OR ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF,
17081               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | (
17082               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF(
17083               QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
17084               sa_occ.description = 'boundary occurrence' ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17085               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17086               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
17087               IN TYPEOF( sar ) ) ) ) | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE',
17088               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NGON_CLOSED_PROFILE' ,
17089               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_CLOSED_PROFILE' ,
17090               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_PATH_PROFILE' ] * TYPEOF( sdr.relating_shape_aspect ) ) =
17091               1 ) AND ( sdr.relating_shape_aspect.description = 'rib top floor boundary' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
17092  END_ENTITY;
17093
17094  ENTITY right_angular_wedge
17095    SUBTYPE OF ( geometric_representation_item );
17096      position  : axis2_placement_3d;
17097      x         : positive_length_measure;
17098      y         : positive_length_measure;
17099      z         : positive_length_measure;
17100      ltx       : length_measure;
17101    WHERE
17102      wr1: ( ( 0 <= ltx ) AND ( ltx < x ) );
17103  END_ENTITY;
17104
17105  ENTITY right_circular_cone
17106    SUBTYPE OF ( geometric_representation_item );
17107      position    : axis1_placement;
17108      height      : positive_length_measure;
17109      radius      : length_measure;
17110      semi_angle  : plane_angle_measure;
17111    WHERE
17112      wr1: ( radius >= 0 );
17113  END_ENTITY;
17114
17115  ENTITY right_circular_cylinder
17116    SUBTYPE OF ( geometric_representation_item );
17117      position  : axis1_placement;
17118      height    : positive_length_measure;
17119      radius    : positive_length_measure;
17120  END_ENTITY;
17121
17122  ENTITY right_to_usage_association
17123    SUBTYPE OF ( action_method_relationship );
17124      SELF\action_method_relationship.relating_method : information_usage_right;
17125      SELF\action_method_relationship.related_method : information_right;
17126    DERIVE
17127      right_applied  : information_right := SELF\action_method_relationship.related_method;
17128      right_usage    : information_usage_right := SELF\action_method_relationship.relating_method;
17129  END_ENTITY;
17130
17131  ENTITY rigid_link_representation
17132    SUBTYPE OF ( kinematic_link_representation );
17133  END_ENTITY;
17134
17135  ENTITY rigid_subsketch
17136    SUBTYPE OF ( subsketch );
17137  END_ENTITY;
17138
17139  ENTITY role_association;
17140      role            : object_role;
17141      item_with_role  : role_select;
17142  END_ENTITY;
17143
17144  ENTITY rolling_curve_pair
17145    SUBTYPE OF ( planar_curve_pair );
17146  END_ENTITY;
17147
17148  ENTITY rolling_curve_pair_value
17149    SUBTYPE OF ( pair_value );
17150      SELF\pair_value.applies_to_pair  : rolling_curve_pair;
17151      actual_point_on_curve_1          : point_on_curve;
17152    WHERE
17153      wr1: ( SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: actual_point_on_curve_1.basis_curve );
17154  END_ENTITY;
17155
17156  ENTITY rolling_surface_pair
17157    SUBTYPE OF ( surface_pair );
17158  END_ENTITY;
17159
17160  ENTITY rolling_surface_pair_value
17161    SUBTYPE OF ( pair_value );
17162      SELF\pair_value.applies_to_pair  : rolling_surface_pair;
17163      actual_point_on_surface          : point_on_surface;
17164      actual_rotation                  : plane_angle_measure;
17165    WHERE
17166      wr1: ( SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: actual_point_on_surface.basis_surface );
17167  END_ENTITY;
17168
17169  ENTITY rotation_about_direction
17170    SUBTYPE OF ( geometric_representation_item );
17171      direction_of_axis  : direction;
17172      rotation_angle     : plane_angle_measure;
17173    WHERE
17174      wr1: ( SIZEOF( direction_of_axis.direction_ratios ) = 3 );
17175  END_ENTITY;
17176
17177  ENTITY round_hole
17178    SUBTYPE OF ( feature_definition );
17179    WHERE
17180      wr1: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17181               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17182               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17183               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17184               'diameter occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17185               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17186               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
17187               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_CLOSED_PROFILE' IN TYPEOF(
17188               sdr.relating_shape_aspect ) ) AND ( sdr.name = 'diameter' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
17189      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17190               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17191               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17192               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17193               'hole depth occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17194               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17195               description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17196               + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17197               + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( sdr.name = 'hole depth' ) AND ( sdr.
17198               relating_shape_aspect.description = 'linear' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
17199      wr3: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17200               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17201               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17202               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17203               'bottom condition occurrence'  ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( sa_occ,
17204               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17205               description = 'hole bottom usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17206               + 'FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17207               + 'HOLE_BOTTOM'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17208               + 'ROUND_HOLE'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
17209      wr4: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17210               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17211               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17212               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17213               'change in diameter occurrence'  ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( sa_occ,
17214               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17215               description = 'taper usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
17216               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAPER' IN TYPEOF( fcr.
17217               relating_shape_aspect ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE' IN TYPEOF( fcr.
17218               related_shape_aspect.of_shape.definition ) ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 0 );
17219      wr5: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | (
17220               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
17221               used_representation ) ) ) ) = 1 );
17222  END_ENTITY;
17223
17224  ENTITY rounded_end
17225    SUBTYPE OF ( feature_definition );
17226    WHERE
17227      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17228               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17229               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17230               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
17231               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
17232      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17233               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17234               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17235               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17236               'partial circular boundary occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17237               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17238               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
17239               IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' IN TYPEOF(
17240               sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
17241      wr3: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17242               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17243               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
17244               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
17245               'course of travel occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
17246               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
17247               description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17248               + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17249               + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description =
17250               'linear' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
17251      wr4: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
17252               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
17253               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
17254  END_ENTITY;
17255
17256  ENTITY rounded_u_profile
17257    SUBTYPE OF ( shape_aspect );
17258    WHERE
17259      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
17260      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17261               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17262               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17263               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
17264      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17265               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17266               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17267               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
17268               used_representation.items ) >= 1 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 2 ) ) ) ) = 0 ) ) ) ) =
17269               0 );
17270      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17271               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17272               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17273               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
17274               pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'depth' ) ) ) ) = SIZEOF( pdr.
17275               used_representation.items ) ) ) ) ) = 1 ) ) ) = 1 );
17276      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17277               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17278               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17279               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
17280               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17281               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
17282               TYPEOF( it ) ) = 2 ) AND ( it.name = 'width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
17283      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17284               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17285               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17286               + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
17287               'profile limit'  ) ) ) ) <= 1 ) ) ) ) = 0 );
17288      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
17289               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17290               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17291               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
17292               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17293               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
17294               TYPEOF( it ) ) = 2 ) AND ( it.name = 'depth' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
17295  END_ENTITY;
17296
17297  ENTITY roundness_tolerance
17298    SUBTYPE OF ( geometric_tolerance );
17299    WHERE
17300      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' ) IN
17301               TYPEOF( SELF ) ) );
17302  END_ENTITY;
17303
17304  ENTITY row_representation_item
17305    SUBTYPE OF ( compound_representation_item );
17306      SELF\compound_representation_item.item_element : list_representation_item;
17307  END_ENTITY;
17308
17309  ENTITY row_value
17310    SUBTYPE OF ( compound_representation_item );
17311  END_ENTITY;
17312
17313  ENTITY row_variable
17314    SUBTYPE OF ( abstract_variable );
17315  END_ENTITY;
17316
17317  ENTITY rule_action
17318    SUBTYPE OF ( action );
17319  END_ENTITY;
17320
17321  ENTITY rule_condition
17322    SUBTYPE OF ( atomic_formula );
17323  END_ENTITY;
17324
17325  ENTITY rule_definition
17326    SUBTYPE OF ( rule_software_definition );
17327  END_ENTITY;
17328
17329  ENTITY rule_set
17330    SUBTYPE OF ( rule_software_definition );
17331  END_ENTITY;
17332
17333  ENTITY rule_set_group
17334    SUBTYPE OF ( rule_software_definition );
17335  END_ENTITY;
17336
17337  ENTITY rule_software_definition
17338    SUBTYPE OF ( product_definition );
17339  END_ENTITY;
17340
17341  ENTITY rule_superseded_assignment
17342    SUBTYPE OF ( action_assignment );
17343      items  : SET [1 : ?] OF rule_superseded_item;
17344  END_ENTITY;
17345
17346  ENTITY rule_supersedence
17347    SUBTYPE OF ( rule_action );
17348  END_ENTITY;
17349
17350  ENTITY ruled_surface_swept_area_solid
17351    SUBTYPE OF ( surface_curve_swept_area_solid );
17352    WHERE
17353      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF( SELF.reference_surface ) ) AND (
17354               SELF.reference_surface\b_spline_surface.u_degree = 1 ) );
17355      wr2: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( SELF.directrix ) ) OR ( (
17356               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'  IN TYPEOF( SELF.directrix\surface_curve.curve_3d ) )
17357               AND ( SELF.directrix\surface_curve.curve_3d\b_spline_curve.degree = SELF.reference_surface\b_spline_surface.
17358               v_degree ) ) );
17359  END_ENTITY;
17360
17361  ENTITY runout_zone_definition
17362    SUBTYPE OF ( tolerance_zone_definition );
17363      orientation  : runout_zone_orientation;
17364  END_ENTITY;
17365
17366  ENTITY runout_zone_orientation;
17367      angle  : plane_angle_measure_with_unit;
17368  END_ENTITY;
17369
17370  ENTITY runout_zone_orientation_reference_direction
17371    SUBTYPE OF ( runout_zone_orientation );
17372      orientation_defining_relationship  : shape_aspect_relationship;
17373  END_ENTITY;
17374
17375  ENTITY satisfied_requirement
17376    SUBTYPE OF ( group_assignment );
17377      SELF\group_assignment.assigned_group  : satisfies_requirement;
17378      items                                 : SET [1 : 1] OF product_definition;
17379  END_ENTITY;
17380
17381  ENTITY satisfies_requirement
17382    SUBTYPE OF ( group );
17383  END_ENTITY;
17384
17385  ENTITY satisfying_item
17386    SUBTYPE OF ( group_assignment );
17387      SELF\group_assignment.assigned_group  : satisfies_requirement;
17388      items                                 : SET [1 : 1] OF requirement_satisfaction_item;
17389  END_ENTITY;
17390
17391  ENTITY scalar_variable
17392    SUBTYPE OF ( abstract_variable );
17393  END_ENTITY;
17394
17395  ENTITY screw_pair
17396    SUBTYPE OF ( low_order_kinematic_pair_with_motion_coupling );
17397      pitch  : length_measure;
17398    WHERE
17399      wr1: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
17400               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
17401  END_ENTITY;
17402
17403  ENTITY screw_pair_value
17404    SUBTYPE OF ( pair_value );
17405      SELF\pair_value.applies_to_pair  : screw_pair;
17406      actual_rotation                  : plane_angle_measure;
17407    DERIVE
17408      actual_translation  : length_measure := ( SELF\pair_value.applies_to_pair\screw_pair.pitch *
17409                              plane_angle_for_pair_in_radian( SELF\pair_value.applies_to_pair, actual_rotation ) ) DIV ( 2 * PI );
17410  END_ENTITY;
17411
17412  ENTITY screw_pair_with_range
17413    SUBTYPE OF ( screw_pair );
17414      lower_limit_actual_rotation  : OPTIONAL plane_angle_measure;
17415      upper_limit_actual_rotation  : OPTIONAL plane_angle_measure;
17416    WHERE
17417      wr1: ( ( ( NOT EXISTS( lower_limit_actual_rotation ) ) OR ( NOT EXISTS( upper_limit_actual_rotation ) ) ) XOR (
17418               lower_limit_actual_rotation < upper_limit_actual_rotation ) );
17419  END_ENTITY;
17420
17421  ENTITY sculptured_solid
17422    SUBTYPE OF ( modified_solid );
17423      sculpturing_element  : generalized_surface_select;
17424      positive_side        : BOOLEAN;
17425  END_ENTITY;
17426
17427  ENTITY sdgc_with_dimension
17428    SUBTYPE OF ( surface_distance_geometric_constraint );
17429      distance_value  : non_negative_length_measure;
17430  END_ENTITY;
17431
17432  ENTITY seam_curve
17433    SUBTYPE OF ( surface_curve );
17434    WHERE
17435      wr1: ( SIZEOF( SELF\surface_curve.associated_geometry ) = 2 );
17436      wr2: ( associated_surface( SELF\surface_curve.associated_geometry[1] ) = associated_surface( SELF\surface_curve.
17437               associated_geometry[2] ) );
17438      wr3: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( SELF\surface_curve.associated_geometry[1] ) );
17439      wr4: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( SELF\surface_curve.associated_geometry[2] ) );
17440  END_ENTITY;
17441
17442  ENTITY security_classification;
17443      name            : label;
17444      purpose         : text;
17445      security_level  : security_classification_level;
17446  END_ENTITY;
17447
17448  ENTITY security_classification_assignment
17449    ABSTRACT SUPERTYPE;
17450      assigned_security_classification  : security_classification;
17451    DERIVE
17452      role  : object_role := get_role( SELF );
17453    WHERE
17454      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) ) <=
17455               1 );
17456  END_ENTITY;
17457
17458  ENTITY security_classification_level;
17459      name  : label;
17460  END_ENTITY;
17461
17462  ENTITY selector_function
17463    SUBTYPE OF ( maths_function, generic_literal );
17464      selector          : input_selector;
17465      source_of_domain  : maths_space_or_function;
17466    WHERE
17467      wr1: no_cyclic_domain_reference( source_of_domain, [SELF] );
17468      wr2: expression_is_constant( domain_from( source_of_domain ) );
17469  END_ENTITY;
17470
17471  ENTITY self_intersecting_curve
17472    SUBTYPE OF ( self_intersecting_geometry );
17473      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
17474      arc_length_separation_factor           : REAL;
17475      interference_tolerance                 : length_measure;
17476    WHERE
17477      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
17478      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE'] );
17479      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE',
17480               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' ] );
17481      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17482  END_ENTITY;
17483
17484  ENTITY self_intersecting_geometry
17485    ABSTRACT SUPERTYPE OF ( ONEOF ( self_intersecting_curve, self_intersecting_surface ) )
17486    SUBTYPE OF ( inapt_geometry );
17487  END_ENTITY;
17488
17489  ENTITY self_intersecting_loop
17490    SUBTYPE OF ( topology_related_to_self_intersecting_geometry );
17491      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
17492      arc_length_distance_factor             : REAL;
17493      interference_tolerance                 : length_measure;
17494    WHERE
17495      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
17496      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'] );
17497      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17498               'POINT_ON_EDGE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POINT_ON_EDGE_CURVE'] );
17499      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17500  END_ENTITY;
17501
17502  ENTITY self_intersecting_shell
17503    SUBTYPE OF ( topology_related_to_self_intersecting_geometry );
17504      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
17505      geodesic_separation_factor             : REAL;
17506      interference_tolerance                 : length_measure;
17507    WHERE
17508      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
17509      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
17510      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17511               'POINT_ON_FACE_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POINT_ON_FACE_SURFACE'] );
17512      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17513  END_ENTITY;
17514
17515  ENTITY self_intersecting_surface
17516    SUBTYPE OF ( self_intersecting_geometry );
17517      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
17518      geodesic_separation_factor             : REAL;
17519      interference_tolerance                 : length_measure;
17520    WHERE
17521      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
17522      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'] );
17523      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE',
17524               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' ] );
17525      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17526  END_ENTITY;
17527
17528  ENTITY serial_numbered_effectivity
17529    SUBTYPE OF ( effectivity );
17530      effectivity_start_id  : identifier;
17531      effectivity_end_id    : OPTIONAL identifier;
17532  END_ENTITY;
17533
17534  ENTITY series_composed_function
17535    SUBTYPE OF ( maths_function, multiple_arity_generic_expression );
17536      SELF\multiple_arity_generic_expression.operands : LIST [2 : ?] OF maths_function;
17537    WHERE
17538      wr1: composable_sequence( SELF\multiple_arity_generic_expression.operands );
17539  END_ENTITY;
17540
17541  ENTITY shape_aspect
17542    SUPERTYPE OF ( ONEOF ( contacting_feature, datum, datum_feature, datum_target, datum_system, general_datum_reference ) );
17543      name                  : label;
17544      description           : OPTIONAL text;
17545      of_shape              : product_definition_shape;
17546      product_definitional  : LOGICAL;
17547    DERIVE
17548      id  : identifier := get_id_value( SELF );
17549    UNIQUE
17550      ur1 : id, of_shape;
17551    WHERE
17552      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
17553  END_ENTITY;
17554
17555  ENTITY shape_aspect_associativity
17556    SUBTYPE OF ( shape_aspect_relationship );
17557    WHERE
17558      wr1: SELF.relating_shape_aspect.product_definitional;
17559      wr2: ( NOT SELF.related_shape_aspect.product_definitional );
17560  END_ENTITY;
17561
17562  ENTITY shape_aspect_deriving_relationship
17563    SUBTYPE OF ( shape_aspect_relationship );
17564      SELF\shape_aspect_relationship.relating_shape_aspect : derived_shape_aspect;
17565  END_ENTITY;
17566
17567  ENTITY shape_aspect_relationship;
17568      name                   : label;
17569      description            : OPTIONAL text;
17570      relating_shape_aspect  : shape_aspect;
17571      related_shape_aspect   : shape_aspect;
17572    DERIVE
17573      id  : identifier := get_id_value( SELF );
17574    WHERE
17575      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.IDENTIFIED_ITEM' ) ) <= 1 );
17576  END_ENTITY;
17577
17578  ENTITY shape_aspect_relationship_representation_association;
17579      represented_shape_aspect_relationship  : shape_aspect_relationship;
17580      representing_representation_relationship : representation_relationship;
17581    WHERE
17582      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF(
17583               representing_representation_relationship\representation_relationship.rep_1 ) ) AND (
17584               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION'  IN TYPEOF(
17585               representing_representation_relationship\representation_relationship.rep_2 ) ) );
17586      wr2: ( ( represented_shape_aspect_relationship.relating_shape_aspect IN using_shape_aspect_of_shape_representation(
17587               representing_representation_relationship.rep_1 ) ) AND ( represented_shape_aspect_relationship.related_shape_aspect
17588               IN using_shape_aspect_of_shape_representation( representing_representation_relationship.rep_2 ) ) );
17589      wr3: ( ( find_representative_shape_representation_of_product_definition( using_product_definition_of_shape_aspect(
17590               represented_shape_aspect_relationship.relating_shape_aspect ) ).context_of_items :=:
17591               find_representative_shape_representation_of_shape_aspect( represented_shape_aspect_relationship.
17592               relating_shape_aspect ).context_of_items ) AND ( find_representative_shape_representation_of_product_definition(
17593               using_product_definition_of_shape_aspect( represented_shape_aspect_relationship.related_shape_aspect ) ).
17594               context_of_items :=: find_representative_shape_representation_of_shape_aspect(
17595               represented_shape_aspect_relationship.related_shape_aspect ).context_of_items ) );
17596      wr4: ( using_product_definition_of_shape_aspect( represented_shape_aspect_relationship.relating_shape_aspect ) :<>:
17597               using_product_definition_of_shape_aspect( represented_shape_aspect_relationship.related_shape_aspect ) );
17598      wr5: ( find_assembly_root( [using_product_definition_of_shape_aspect( represented_shape_aspect_relationship.
17599               relating_shape_aspect )] ) :=: find_assembly_root( [using_product_definition_of_shape_aspect(
17600               represented_shape_aspect_relationship.related_shape_aspect )] ) );
17601  END_ENTITY;
17602
17603  ENTITY shape_criteria_representation_with_accuracy
17604    SUBTYPE OF ( shape_data_quality_criteria_representation );
17605      required_general_accuracy  : SET [1 : ?] OF shape_measurement_accuracy;
17606  END_ENTITY;
17607
17608  ENTITY shape_data_quality_assessment_by_logical_test
17609    SUBTYPE OF ( data_quality_assessment_specification );
17610  END_ENTITY;
17611
17612  ENTITY shape_data_quality_assessment_by_numerical_test
17613    SUBTYPE OF ( data_quality_assessment_specification );
17614      threshold  : shape_data_quality_value_limit_type_select;
17615  END_ENTITY;
17616
17617  ENTITY shape_data_quality_criteria_representation
17618    SUBTYPE OF ( data_quality_criteria_representation );
17619    WHERE
17620      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17621               'SHAPE_DATA_QUALITY_CRITERION'  ) IN TYPEOF( q ) ) ) ) > 0 );
17622  END_ENTITY;
17623
17624  ENTITY shape_data_quality_criterion
17625    SUPERTYPE OF ( ONEOF ( erroneous_data, inapt_data ) )
17626    SUBTYPE OF ( data_quality_criterion, data_quality_measurement_requirement );
17627      assessment_specification  : shape_data_quality_assessment_specification_select;
17628    WHERE
17629      wr1: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17630               'DATA_QUALITY_CRITERION_ASSESSMENT_ASSOCIATION.'  + 'CRITERION' ) ) = 0 );
17631      wr2: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17632               'REPRESENTATION_ITEM_RELATIONSHIP.'  + 'RELATED_REPRESENTATION_ITEM' ) ) | ( (
17633               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' ) IN
17634               TYPEOF( i1 ) ) ) ) = 0 );
17635      wr3: ( SIZEOF( QUERY ( i1 <* bag_to_set( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17636               'REPRESENTATION_ITEM_RELATIONSHIP.'  + 'RELATING_REPRESENTATION_ITEM' ) ) | ( (
17637               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DATA_QUALITY_CRITERION_MEASUREMENT_ASSOCIATION' ) IN
17638               TYPEOF( i1 ) ) ) ) = 0 );
17639  END_ENTITY;
17640
17641  ENTITY shape_data_quality_criterion_and_accuracy_association;
17642      required_specific_accuracy    : shape_measurement_accuracy;
17643      shape_data_quality_criterion  : shape_data_quality_criterion;
17644  END_ENTITY;
17645
17646  ENTITY shape_data_quality_inspected_shape_and_result_relationship
17647    SUBTYPE OF ( shape_representation_relationship );
17648      SELF\representation_relationship.rep_1 : shape_representation;
17649      SELF\representation_relationship.rep_2 : shape_data_quality_inspection_result_representation;
17650    WHERE
17651      wr1: ( SIZEOF( using_product_definition_of_shape_representation( SELF.rep_1 ) * bag_to_set( inspected_product_definition(
17652               SELF.rep_2 ) ) ) > 0 );
17653      wr2: ( SELF.rep_1\representation.context_of_items :=: SELF.rep_2\representation.context_of_items );
17654  END_ENTITY;
17655
17656  ENTITY shape_data_quality_inspection_criterion_report
17657    SUBTYPE OF ( data_quality_inspection_criterion_report );
17658      representative_measured_value  : measured_value_select;
17659  END_ENTITY;
17660
17661  ENTITY shape_data_quality_inspection_instance_report
17662    SUBTYPE OF ( data_quality_inspection_instance_report );
17663      SELF\data_quality_inspection_instance_report.inspected_instances : LIST [1 : ?] OF
17664                                                 shape_data_quality_inspection_instance_report_item;
17665  END_ENTITY;
17666
17667  ENTITY shape_data_quality_inspection_instance_report_item
17668    SUBTYPE OF ( data_quality_inspection_instance_report_item );
17669      SELF\data_quality_inspection_instance_report_item.inspected_elements : SET [1 : ?] OF inspected_shape_element_select;
17670      measured_value                         : measured_value_select;
17671  END_ENTITY;
17672
17673  ENTITY shape_data_quality_inspection_result
17674    SUBTYPE OF ( data_quality_inspection_result );
17675      SELF\data_quality_inspection_result.criterion_inspected : shape_data_quality_criterion;
17676  END_ENTITY;
17677
17678  ENTITY shape_data_quality_inspection_result_representation
17679    SUBTYPE OF ( data_quality_inspection_result_representation );
17680    WHERE
17681      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17682               'SHAPE_DATA_QUALITY_INSPECTION_RESULT'  ) IN TYPEOF( q ) ) ) ) > 0 );
17683      wr2: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_CONTEXT' IN TYPEOF( SELF\representation.
17684               context_of_items ) );
17685      wr3: ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17686               'SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.'  + 'REP_2' ) ) > 0 );
17687  END_ENTITY;
17688
17689  ENTITY shape_data_quality_lower_value_limit
17690    SUBTYPE OF ( shape_data_quality_value_limit );
17691    WHERE
17692      wr1: ( SELF\qualified_representation_item.qualifiers[1].name = 'minimum' );
17693  END_ENTITY;
17694
17695  ENTITY shape_data_quality_upper_value_limit
17696    SUBTYPE OF ( shape_data_quality_value_limit );
17697    WHERE
17698      wr1: ( SELF\qualified_representation_item.qualifiers[1].name = 'maximum' );
17699  END_ENTITY;
17700
17701  ENTITY shape_data_quality_value_limit
17702    ABSTRACT SUPERTYPE OF ( ONEOF ( shape_data_quality_upper_value_limit, shape_data_quality_lower_value_limit ) )
17703    SUBTYPE OF ( measure_representation_item, qualified_representation_item );
17704  END_ENTITY;
17705
17706  ENTITY shape_data_quality_value_range
17707    SUBTYPE OF ( compound_representation_item );
17708    WHERE
17709      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SET_REPRESENTATION_ITEM' IN TYPEOF( SELF\
17710               compound_representation_item.item_element ) ) AND ( SIZEOF( SELF\compound_representation_item.item_element ) = 2 )
17711               AND ( ( SIZEOF( QUERY ( i1 <* SELF\compound_representation_item.item_element | (
17712               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i1 ) ) ) ) = 2 ) OR (
17713               SIZEOF( QUERY ( i2 <* SELF\compound_representation_item.item_element | (
17714               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM'  IN TYPEOF( i2 ) ) ) ) = 2 ) ) );
17715      wr2: ( ( SIZEOF( QUERY ( i <* SELF\compound_representation_item.item_element | ( i.name = 'upper limit' ) ) ) = 1 ) AND (
17716               SIZEOF( QUERY ( i <* SELF\compound_representation_item.item_element | ( i.name = 'lower limit' ) ) ) = 1 ) );
17717      wr3: ( ( SIZEOF( QUERY ( i1 <* SELF\compound_representation_item.item_element | ( (
17718               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i1 ) ) AND ( SIZEOF(
17719               QUERY ( i2 <* SELF\compound_representation_item.item_element | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17720               + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i2 ) ) AND ( i1 :<>: i2 ) AND ( i1\measure_with_unit.unit_component
17721               :=: i2\measure_with_unit.unit_component ) ) ) ) = 1 ) ) ) ) = 2 ) OR ( SIZEOF( QUERY ( i1 <* SELF\
17722               compound_representation_item.item_element | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17723               + 'VALUE_REPRESENTATION_ITEM'  IN TYPEOF( i1 ) ) AND ( SIZEOF( QUERY ( i2 <* SELF\compound_representation_item.
17724               item_element | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' IN TYPEOF( i2 ) )
17725               AND ( i1 :<>: i2 ) AND ( TYPEOF( i1\value_representation_item.value_component ) = TYPEOF( i2\
17726               value_representation_item.value_component ) ) ) ) ) = 1 ) ) ) ) = 2 ) );
17727  END_ENTITY;
17728
17729  ENTITY shape_defining_relationship
17730    SUBTYPE OF ( shape_aspect_relationship );
17731  END_ENTITY;
17732
17733  ENTITY shape_definition_representation
17734    SUBTYPE OF ( property_definition_representation );
17735      SELF\property_definition_representation.definition : property_definition;
17736      SELF\property_definition_representation.used_representation : shape_representation;
17737    WHERE
17738      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( definition ) ) OR (
17739               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION'  IN TYPEOF( definition\property_definition.
17740               definition ) ) );
17741  END_ENTITY;
17742
17743  ENTITY shape_dimension_representation
17744    SUBTYPE OF ( shape_representation );
17745      SELF\representation.items  : SET [1 : ?] OF shape_dimension_representation_item;
17746  END_ENTITY;
17747
17748  ENTITY shape_feature_definition
17749    SUBTYPE OF ( feature_definition );
17750  END_ENTITY;
17751
17752  ENTITY shape_inspection_result_accuracy_association;
17753      applied_specific_accuracy  : shape_measurement_accuracy;
17754      shape_data_quality_result  : shape_data_quality_inspection_result;
17755  END_ENTITY;
17756
17757  ENTITY shape_inspection_result_representation_with_accuracy
17758    SUBTYPE OF ( shape_data_quality_inspection_result_representation );
17759      applied_general_accuracy  : SET [1 : ?] OF shape_measurement_accuracy;
17760  END_ENTITY;
17761
17762  ENTITY shape_measurement_accuracy;
17763      description  : text;
17764      range        : shape_data_quality_value_limit_type_select;
17765  END_ENTITY;
17766
17767  ENTITY shape_representation
17768    SUBTYPE OF ( representation );
17769  END_ENTITY;
17770
17771  ENTITY shape_representation_relationship
17772    SUBTYPE OF ( representation_relationship );
17773    WHERE
17774      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN ( TYPEOF( SELF\representation_relationship
17775               .rep_1 ) + TYPEOF( SELF\representation_relationship.rep_2 ) ) );
17776  END_ENTITY;
17777
17778  ENTITY shape_representation_with_parameters
17779    SUBTYPE OF ( shape_representation );
17780      SELF\representation.items  : SET [1 : ?] OF shape_representation_with_parameters_items;
17781  END_ENTITY;
17782
17783  ENTITY shape_summary_request_with_representative_value
17784    SUBTYPE OF ( summary_report_request );
17785  END_ENTITY;
17786
17787  ENTITY shell_based_surface_model
17788    SUBTYPE OF ( geometric_representation_item );
17789      sbsm_boundary  : SET [1 : ?] OF shell;
17790    WHERE
17791      wr1: constraints_geometry_shell_based_surface_model( SELF );
17792  END_ENTITY;
17793
17794  ENTITY shell_based_wireframe_model
17795    SUBTYPE OF ( geometric_representation_item );
17796      sbwm_boundary  : SET [1 : ?] OF shell;
17797    WHERE
17798      wr1: constraints_geometry_shell_based_wireframe_model( SELF );
17799  END_ENTITY;
17800
17801  ENTITY shell_based_wireframe_shape_representation
17802    SUBTYPE OF ( shape_representation );
17803    WHERE
17804      wr1 : ( SIZEOF( QUERY ( it <* SELF.items | ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17805                + 'SHELL_BASED_WIREFRAME_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM',
17806                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_3D' ] * TYPEOF( it ) ) = 1 ) ) ) ) = 0 );
17807      wr2 : ( SIZEOF( QUERY ( it <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17808                + 'SHELL_BASED_WIREFRAME_MODEL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM'] * TYPEOF( it ) )
17809                = 1 ) ) ) >= 1 );
17810      wr3 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17811                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17812                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17813                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17814                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT ( SIZEOF(
17815                QUERY ( el <* eloop\path.edge_list | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE' IN
17816                TYPEOF( el.edge_element ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
17817      wr4 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17818                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17819                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17820                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17821                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT ( SIZEOF(
17822                QUERY ( pline_el <* QUERY ( el <* eloop\path.edge_list | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17823                + 'POLYLINE'  IN TYPEOF( el.edge_element\edge_curve.edge_geometry ) ) ) | ( NOT ( SIZEOF( pline_el.edge_element\
17824                edge_curve.edge_geometry\polyline.points ) > 2 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
17825      wr5 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17826                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17827                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17828                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17829                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT ( SIZEOF(
17830                QUERY ( el <* eloop\path.edge_list | ( NOT valid_wireframe_edge_curve( el.edge_element\edge_curve.edge_geometry ) ) ) )
17831                = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
17832      wr6 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17833                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17834                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17835                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17836                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT ( SIZEOF(
17837                QUERY ( el <* eloop\path.edge_list | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
17838                TYPEOF( el.edge_element.edge_start ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN
17839                TYPEOF( el.edge_element.edge_end ) ) ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
17840      wr7 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17841                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17842                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17843                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( eloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17844                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT ( SIZEOF(
17845                QUERY ( el <* eloop\path.edge_list | ( NOT ( valid_wireframe_vertex_point( el.edge_element.edge_start\vertex_point
17846                .vertex_geometry ) AND valid_wireframe_vertex_point( el.edge_element.edge_end\vertex_point.vertex_geometry ) ) ) ) )
17847                = 0 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
17848      wr8 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17849                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17850                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17851                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17852                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT (
17853                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT'  IN TYPEOF( vloop\vertex_loop.loop_vertex ) ) ) ) )
17854                = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
17855      wr9 : ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17856                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( ws <* QUERY ( sb <* sbwm\
17857                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN
17858                TYPEOF( sb ) ) ) | ( NOT ( SIZEOF( QUERY ( vloop <* QUERY ( wsb <* ws\wire_shell.wire_shell_extent | (
17859                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_LOOP'  IN TYPEOF( wsb ) ) ) | ( NOT
17860                valid_wireframe_vertex_point( vloop\vertex_loop.loop_vertex\vertex_point.vertex_geometry ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) )
17861                = 0 );
17862      wr10: ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17863                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( vs <* QUERY ( sb <* sbwm\
17864                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN
17865                TYPEOF( sb ) ) ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_POINT' IN TYPEOF( vs\
17866                vertex_shell.vertex_shell_extent.loop_vertex ) ) ) ) ) = 0 ) ) ) ) = 0 );
17867      wr11: ( SIZEOF( QUERY ( sbwm <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
17868                + 'SHELL_BASED_WIREFRAME_MODEL'  IN TYPEOF( it ) ) ) | ( NOT ( SIZEOF( QUERY ( vs <* QUERY ( sb <* sbwm\
17869                shell_based_wireframe_model.sbwm_boundary | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL' IN
17870                TYPEOF( sb ) ) ) | ( NOT valid_wireframe_vertex_point( vs\vertex_shell.vertex_shell_extent.loop_vertex\
17871                vertex_point.vertex_geometry ) ) ) ) = 0 ) ) ) ) = 0 );
17872      wr12: ( SIZEOF( QUERY ( mi <* QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN
17873                TYPEOF( it ) ) ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17874                'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION'  ) IN TYPEOF( mi\mapped_item.mapping_source.mapped_representation ) ) ) ) )
17875                = 0 );
17876      wr13: ( SELF.context_of_items\geometric_representation_context.coordinate_space_dimension = 3 );
17877  END_ENTITY;
17878
17879  ENTITY shelled_solid
17880    SUPERTYPE OF ( ONEOF ( double_offset_shelled_solid, complex_shelled_solid ) )
17881    SUBTYPE OF ( modified_solid );
17882      deleted_face_set  : SET [1 : ?] OF face_surface;
17883      thickness         : length_measure;
17884    WHERE
17885      wr1: ( thickness <> 0 );
17886  END_ENTITY;
17887
17888  ENTITY short_length_curve
17889    SUBTYPE OF ( nearly_degenerate_geometry );
17890      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17891    WHERE
17892      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
17893               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
17894               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
17895               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
17896      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
17897      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE'] );
17898      wr4: validate_locations_of_extreme_value_type( SELF, [] );
17899      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17900  END_ENTITY;
17901
17902  ENTITY short_length_curve_segment
17903    SUBTYPE OF ( geometry_with_local_near_degeneracy );
17904      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17905    WHERE
17906      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
17907               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
17908               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
17909               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
17910      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
17911      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE'] );
17912      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
17913               'B_SPLINE_CURVE_SEGMENT' ] );
17914      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17915  END_ENTITY;
17916
17917  ENTITY short_length_edge
17918    SUBTYPE OF ( topology_related_to_nearly_degenerate_geometry );
17919      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
17920    WHERE
17921      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
17922               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
17923               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
17924               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
17925      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
17926      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_CURVE'] );
17927      wr4: validate_locations_of_extreme_value_type( SELF, [] );
17928      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
17929  END_ENTITY;
17930
17931  ENTITY si_absorbed_dose_unit
17932    SUBTYPE OF ( absorbed_dose_unit, si_unit );
17933    WHERE
17934      wr1: ( SELF\si_unit.name = si_unit_name.gray );
17935      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17936  END_ENTITY;
17937
17938  ENTITY si_capacitance_unit
17939    SUBTYPE OF ( capacitance_unit, si_unit );
17940    WHERE
17941      wr1: ( SELF\si_unit.name = si_unit_name.farad );
17942      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17943  END_ENTITY;
17944
17945  ENTITY si_conductance_unit
17946    SUBTYPE OF ( conductance_unit, si_unit );
17947    WHERE
17948      wr1: ( SELF\si_unit.name = si_unit_name.siemens );
17949      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17950  END_ENTITY;
17951
17952  ENTITY si_dose_equivalent_unit
17953    SUBTYPE OF ( dose_equivalent_unit, si_unit );
17954    WHERE
17955      wr1: ( SELF\si_unit.name = si_unit_name.sievert );
17956      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17957  END_ENTITY;
17958
17959  ENTITY si_electric_charge_unit
17960    SUBTYPE OF ( electric_charge_unit, si_unit );
17961    WHERE
17962      wr1: ( SELF\si_unit.name = si_unit_name.coulomb );
17963      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17964  END_ENTITY;
17965
17966  ENTITY si_electric_potential_unit
17967    SUBTYPE OF ( electric_potential_unit, si_unit );
17968    WHERE
17969      wr1: ( SELF\si_unit.name = si_unit_name.volt );
17970      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17971  END_ENTITY;
17972
17973  ENTITY si_energy_unit
17974    SUBTYPE OF ( energy_unit, si_unit );
17975    WHERE
17976      wr1: ( SELF\si_unit.name = si_unit_name.joule );
17977      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17978  END_ENTITY;
17979
17980  ENTITY si_force_unit
17981    SUBTYPE OF ( force_unit, si_unit );
17982    WHERE
17983      wr1: ( SELF\si_unit.name = si_unit_name.newton );
17984      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17985  END_ENTITY;
17986
17987  ENTITY si_frequency_unit
17988    SUBTYPE OF ( frequency_unit, si_unit );
17989    WHERE
17990      wr1: ( SELF\si_unit.name = si_unit_name.hertz );
17991      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17992  END_ENTITY;
17993
17994  ENTITY si_illuminance_unit
17995    SUBTYPE OF ( illuminance_unit, si_unit );
17996    WHERE
17997      wr1: ( SELF\si_unit.name = si_unit_name.lux );
17998      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
17999  END_ENTITY;
18000
18001  ENTITY si_inductance_unit
18002    SUBTYPE OF ( inductance_unit, si_unit );
18003    WHERE
18004      wr1: ( SELF\si_unit.name = si_unit_name.henry );
18005      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18006  END_ENTITY;
18007
18008  ENTITY si_magnetic_flux_density_unit
18009    SUBTYPE OF ( magnetic_flux_density_unit, si_unit );
18010    WHERE
18011      wr1: ( SELF\si_unit.name = si_unit_name.tesla );
18012      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18013  END_ENTITY;
18014
18015  ENTITY si_magnetic_flux_unit
18016    SUBTYPE OF ( magnetic_flux_unit, si_unit );
18017    WHERE
18018      wr1: ( SELF\si_unit.name = si_unit_name.weber );
18019      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18020  END_ENTITY;
18021
18022  ENTITY si_power_unit
18023    SUBTYPE OF ( power_unit, si_unit );
18024    WHERE
18025      wr1: ( SELF\si_unit.name = si_unit_name.watt );
18026      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18027  END_ENTITY;
18028
18029  ENTITY si_pressure_unit
18030    SUBTYPE OF ( pressure_unit, si_unit );
18031    WHERE
18032      wr1: ( SELF\si_unit.name = si_unit_name.pascal );
18033      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18034  END_ENTITY;
18035
18036  ENTITY si_radioactivity_unit
18037    SUBTYPE OF ( radioactivity_unit, si_unit );
18038    WHERE
18039      wr1: ( SELF\si_unit.name = si_unit_name.becquerel );
18040      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18041  END_ENTITY;
18042
18043  ENTITY si_resistance_unit
18044    SUBTYPE OF ( resistance_unit, si_unit );
18045    WHERE
18046      wr1: ( SELF\si_unit.name = si_unit_name.ohm );
18047      wr2: ( NOT EXISTS( SELF\derived_unit.name ) );
18048  END_ENTITY;
18049
18050  ENTITY si_unit
18051    SUBTYPE OF ( named_unit );
18052      prefix  : OPTIONAL si_prefix;
18053      name    : si_unit_name;
18054    DERIVE
18055      SELF\named_unit.dimensions  : dimensional_exponents := dimensions_for_si_unit( name );
18056    WHERE
18057      wr1: ( ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_UNIT' IN TYPEOF( SELF ) ) AND ( SIZEOF( USEDIN( SELF,
18058               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_UNIT_ELEMENT.UNIT'  ) ) > 0 ) ) ) OR ( prefix = si_prefix
18059               .kilo ) );
18060  END_ENTITY;
18061
18062  ENTITY simple_boolean_expression
18063    ABSTRACT SUPERTYPE OF ( ONEOF ( boolean_literal, boolean_variable ) )
18064    SUBTYPE OF ( boolean_expression, simple_generic_expression );
18065  END_ENTITY;
18066
18067  ENTITY simple_clause
18068    SUBTYPE OF ( compound_representation_item );
18069  END_ENTITY;
18070
18071  ENTITY simple_generic_expression
18072    ABSTRACT SUPERTYPE OF ( ONEOF ( generic_literal, generic_variable ) )
18073    SUBTYPE OF ( generic_expression );
18074  END_ENTITY;
18075
18076  ENTITY simple_numeric_expression
18077    ABSTRACT SUPERTYPE OF ( ONEOF ( literal_number, numeric_variable ) )
18078    SUBTYPE OF ( numeric_expression, simple_generic_expression );
18079  END_ENTITY;
18080
18081  ENTITY simple_string_expression
18082    ABSTRACT SUPERTYPE OF ( ONEOF ( string_literal, string_variable ) )
18083    SUBTYPE OF ( string_expression, simple_generic_expression );
18084  END_ENTITY;
18085
18086  ENTITY simultaneous_constraint_group
18087    SUBTYPE OF ( variational_representation_item );
18088      constraint_group  : SET [2 : ?] OF constraint_group_member;
18089    WHERE
18090      wr1: ( SIZEOF( QUERY ( q <* using_representations( SELF ) | ( SIZEOF( QUERY ( r <* q.items | ( (
18091               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMULTANEOUS_CONSTRAINT_GROUP'  IN TYPEOF( r ) ) AND ( SIZEOF(
18092               QUERY ( s <* constraint_group | ( ( s IN r\simultaneous_constraint_group.constraint_group ) AND ( NOT ( r :=: SELF ) ) ) ) )
18093               > 0 ) ) ) ) > 0 ) ) ) = 0 );
18094      wr2: ( SIZEOF( QUERY ( q <* using_representations( constraint_group[1] ) | ( SIZEOF( QUERY ( r <* constraint_group |
18095               item_in_context( r, q.context_of_items ) ) ) = SIZEOF( constraint_group ) ) ) ) > 0 );
18096      wr3: ( SIZEOF( QUERY ( q <* constraint_group | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_CONSTRAINT' IN
18097               TYPEOF( q ) ) AND ( SIZEOF( QUERY ( r <* q.constrained_elements | ( SIZEOF( QUERY ( s <* constraint_group | ( r IN
18098               s.reference_elements ) ) ) > 0 ) ) ) > 0 ) ) ) ) = 0 );
18099  END_ENTITY;
18100
18101  ENTITY sin_function
18102    SUBTYPE OF ( unary_function_call );
18103  END_ENTITY;
18104
18105  ENTITY single_area_csg_2d_shape_representation
18106    SUBTYPE OF ( csg_2d_shape_representation );
18107      SELF\representation.items  : SET [1 : ?] OF csg_2d_area_select;
18108    WHERE
18109      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF( it ) ) ) )
18110               = 0 );
18111      wr2: ( SIZEOF( QUERY ( it <* SELF.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SOLID_2D' IN TYPEOF( it ) ) ) )
18112               = 1 );
18113  END_ENTITY;
18114
18115  ENTITY single_boundary_csg_2d_shape_representation
18116    SUBTYPE OF ( single_area_csg_2d_shape_representation );
18117    WHERE
18118      wr1: ( SIZEOF( QUERY ( it <* SELF.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_PRIMITIVE_SOLID_2D' IN
18119               TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY' IN TYPEOF(
18120               it\csg_primitive_solid_2d.tree_root_expression ) ) ) ) ) = 0 );
18121  END_ENTITY;
18122
18123  ENTITY single_property_is_definition
18124    SUBTYPE OF ( property_definition );
18125      SELF\property_definition.definition  : product_definition;
18126    UNIQUE
18127      ur1 : definition;
18128  END_ENTITY;
18129
18130  ENTITY skew_line_distance_geometric_constraint
18131    SUBTYPE OF ( explicit_geometric_constraint );
18132      SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF line;
18133      SELF\explicit_constraint.reference_elements : SET [0 : 1] OF line;
18134      distance_value                         : non_negative_length_measure;
18135    WHERE
18136      wr1: ( SIZEOF( SELF\explicit_constraint.constrained_elements + SELF\explicit_constraint.reference_elements ) = 2 );
18137  END_ENTITY;
18138
18139  ENTITY slash_expression
18140    SUBTYPE OF ( binary_numeric_expression );
18141  END_ENTITY;
18142
18143  ENTITY sliding_curve_pair
18144    SUBTYPE OF ( planar_curve_pair );
18145  END_ENTITY;
18146
18147  ENTITY sliding_curve_pair_value
18148    SUBTYPE OF ( pair_value );
18149      SELF\pair_value.applies_to_pair  : sliding_curve_pair;
18150      actual_point_on_curve_1          : point_on_curve;
18151      actual_point_on_curve_2          : point_on_curve;
18152    WHERE
18153      wr1: ( SELF\pair_value.applies_to_pair\planar_curve_pair.curve_1 :=: actual_point_on_curve_1.basis_curve );
18154      wr2: ( SELF\pair_value.applies_to_pair\planar_curve_pair.curve_2 :=: actual_point_on_curve_2.basis_curve );
18155  END_ENTITY;
18156
18157  ENTITY sliding_surface_pair
18158    SUBTYPE OF ( surface_pair );
18159  END_ENTITY;
18160
18161  ENTITY sliding_surface_pair_value
18162    SUBTYPE OF ( pair_value );
18163      SELF\pair_value.applies_to_pair  : sliding_surface_pair;
18164      actual_point_on_surface_1        : point_on_surface;
18165      actual_point_on_surface_2        : point_on_surface;
18166      actual_rotation                  : plane_angle_measure;
18167    WHERE
18168      wr1: ( SELF\pair_value.applies_to_pair\surface_pair.surface_1 :=: actual_point_on_surface_1.basis_surface );
18169      wr2: ( SELF\pair_value.applies_to_pair\surface_pair.surface_2 :=: actual_point_on_surface_2.basis_surface );
18170  END_ENTITY;
18171
18172  ENTITY slot
18173    SUBTYPE OF ( feature_definition );
18174    WHERE
18175      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18176               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18177               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18178               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
18179               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18180      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18181               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18182               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
18183               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
18184               'swept shape occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
18185               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) | ( ( sar
18186               .description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
18187               IN TYPEOF( sar ) ) ) ) | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_U_PROFILE',
18188               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARTIAL_CIRCULAR_PROFILE' ,
18189               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDED_U_PROFILE' ,
18190               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18191               + 'TEE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_PATH_PROFILE'] * TYPEOF( sdr.
18192               relating_shape_aspect ) ) = 1 ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
18193      wr3: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18194               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18195               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
18196               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
18197               'course of travel occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
18198               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) | ( ( sar
18199               .description = 'path feature component usage' ) AND ( sar.name = 'course of travel' ) AND (
18200               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
18201               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) )
18202               = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
18203      wr4: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18204               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18205               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
18206               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
18207               'end condition occurrence'  ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( sa_occ,
18208               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
18209               description = 'slot end usage' ) AND ( sar.name IN [ 'course of travel start', 'course of travel end'] ) AND (
18210               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
18211               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND ( fcr.
18212               relating_shape_aspect.description IN [ 'open', 'radiused', 'flat', 'woodruff'] ) AND (
18213               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) ) ) ) )
18214               = 1 ) ) ) ) = 2 ) OR ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18215               + 'SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description = 'end condition occurrence' ) AND ( SIZEOF( QUERY ( fcr <*
18216               QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
18217               + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'slot end usage' ) AND ( sar.name IN [ 'course of travel start',
18218               'course of travel end' ] ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'
18219               IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN TYPEOF( fcr.
18220               relating_shape_aspect ) ) AND ( fcr.relating_shape_aspect.description IN [ 'loop'] ) AND (
18221               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) ) ) ) )
18222               = 1 ) ) ) ) = 1 ) ) ) ) ) = 0 );
18223      wr5: ( ( NOT ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18224               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18225               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
18226               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
18227               'end condition occurrence'  ) AND ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( sa_occ,
18228               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
18229               description = 'slot end usage' ) AND ( sar.name IN [ 'course of travel start', 'course of travel end'] ) AND (
18230               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
18231               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END'  IN TYPEOF( fcr.relating_shape_aspect ) ) AND ( fcr.
18232               relating_shape_aspect.description IN [ 'loop'] ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT' IN
18233               TYPEOF( fcr.related_shape_aspect.of_shape.definition ) ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) ) OR ( SIZEOF(
18234               QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.'
18235               + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pd ) ) )
18236               | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.'
18237               + 'OF_SHAPE'  ) | ( ( sa_occ.description = 'course of travel occurrence' ) AND ( SIZEOF( QUERY ( sdr <*
18238               QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
18239               + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'path feature component usage' ) AND ( sar.name =
18240               'course of travel'  ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP' IN
18241               TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_FEATURE_COMPONENT' IN TYPEOF( sdr.
18242               relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description IN [ 'complex', 'complete circular'] ) ) ) )
18243               = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) );
18244      wr6: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
18245               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
18246               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
18247  END_ENTITY;
18248
18249  ENTITY slot_end
18250    SUBTYPE OF ( shape_aspect );
18251    WHERE
18252      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
18253      wr2 : ( SELF.description IN [ 'open', 'radiused', 'flat', 'woodruff', 'loop'] );
18254      wr3 : ( ( NOT ( SELF.description IN [ 'open', 'radiused', 'loop'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18255                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18256                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
18257                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
18258                TYPEOF( pdr.used_representation ) ) ) ) = 0 ) ) ) ) = 0 ) );
18259      wr4 : ( ( NOT ( SELF.description IN [ 'flat', 'woodruff'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18260                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18261                QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
18262                + 'DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' IN
18263                TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 ) );
18264      wr5 : ( ( NOT ( SELF.description IN [ 'flat'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18265                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18266                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18267                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18268                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
18269                used_representation.items ) = 2 ) ) ) ) = 0 ) ) ) ) = 0 ) );
18270      wr6 : ( ( NOT ( SELF.description = 'flat' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18271                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18272                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18273                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18274                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18275                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18276                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18277                TYPEOF( it ) ) = 2 ) AND ( it.name = 'first radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
18278      wr7 : ( ( NOT ( SELF.description = 'flat' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18279                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18280                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18281                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18282                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18283                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18284                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18285                TYPEOF( it ) ) = 2 ) AND ( it.name = 'second radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
18286      wr8 : ( ( NOT ( SELF.description = 'woodruff' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18287                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18288                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18289                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18290                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18291                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18292                + 'LENGTH_MEASURE_WITH_UNIT'  IN TYPEOF( it ) ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
18293      wr9 : ( ( NOT ( SELF.description IN [ 'woodruff'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
18294                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
18295                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18296                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18297                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
18298                used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
18299      wr10: ( SIZEOF( QUERY ( fcr <* QUERY ( sar <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18300                + 'SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATING_SHAPE_ASPECT' ) | ( ( sar.description = 'slot end usage' ) AND ( sar.
18301                name IN [ 'course of travel start', 'course of travel end'] ) AND (
18302                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( (
18303                fcr.related_shape_aspect.description = 'end condition occurrence' ) AND (
18304                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT'  IN TYPEOF( fcr.related_shape_aspect.of_shape.definition ) )
18305                AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT_END' IN TYPEOF( fcr.relating_shape_aspect ) ) ) ) ) >=
18306                1 );
18307  END_ENTITY;
18308
18309  ENTITY small_area_face
18310    SUBTYPE OF ( topology_related_to_nearly_degenerate_geometry );
18311      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18312    WHERE
18313      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18314               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18315               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN value_limit_type( SELF\
18316               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18317      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' );
18318      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
18319      wr4: validate_locations_of_extreme_value_type( SELF, [] );
18320      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE'] );
18321  END_ENTITY;
18322
18323  ENTITY small_area_surface
18324    SUBTYPE OF ( nearly_degenerate_geometry );
18325      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18326    WHERE
18327      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18328               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18329               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN value_limit_type( SELF\
18330               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18331      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' );
18332      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'] );
18333      wr4: validate_locations_of_extreme_value_type( SELF, [] );
18334      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE'] );
18335  END_ENTITY;
18336
18337  ENTITY small_area_surface_patch
18338    SUBTYPE OF ( geometry_with_local_near_degeneracy );
18339      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18340    WHERE
18341      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18342               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18343               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN value_limit_type( SELF\
18344               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18345      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' );
18346      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE'] );
18347      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
18348               'B_SPLINE_SURFACE_PATCH' ] );
18349      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE'] );
18350  END_ENTITY;
18351
18352  ENTITY small_volume_solid
18353    SUBTYPE OF ( inapt_manifold_solid_brep );
18354      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18355    WHERE
18356      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18357               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18358               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN value_limit_type( SELF\
18359               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18360      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' );
18361      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP'] );
18362      wr4: validate_locations_of_extreme_value_type( SELF, [] );
18363      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE'] );
18364  END_ENTITY;
18365
18366  ENTITY smeared_material_definition
18367    SUBTYPE OF ( zone_structural_makeup );
18368  END_ENTITY;
18369
18370  ENTITY software_for_data_quality_check;
18371      description       : text;
18372      software_name     : text;
18373      software_version  : text;
18374      data_quality      : data_quality_definition_representation_relationship;
18375  END_ENTITY;
18376
18377  ENTITY solid_angle_measure_with_unit
18378    SUBTYPE OF ( measure_with_unit );
18379    WHERE
18380      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_ANGLE_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
18381  END_ENTITY;
18382
18383  ENTITY solid_angle_unit
18384    SUBTYPE OF ( named_unit );
18385    WHERE
18386      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
18387               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
18388               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
18389               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
18390  END_ENTITY;
18391
18392  ENTITY solid_curve_font
18393    SUBTYPE OF ( pre_defined_curve_font );
18394  END_ENTITY;
18395
18396  ENTITY solid_model
18397    SUPERTYPE OF ( ONEOF ( csg_solid, manifold_solid_brep, swept_face_solid, swept_area_solid, swept_disk_solid, solid_replica ) )
18398    SUBTYPE OF ( geometric_representation_item );
18399  END_ENTITY;
18400
18401  ENTITY solid_replica
18402    SUBTYPE OF ( solid_model );
18403      parent_solid    : solid_model;
18404      transformation  : cartesian_transformation_operator_3d;
18405    WHERE
18406      wr1: acyclic_solid_replica( SELF, parent_solid );
18407      wr2: ( parent_solid\geometric_representation_item.dim = 3 );
18408  END_ENTITY;
18409
18410  ENTITY solid_with_angle_based_chamfer
18411    SUBTYPE OF ( solid_with_chamfered_edges );
18412      offset_distance  : positive_length_measure;
18413      left_offset      : BOOLEAN;
18414      offset_angle     : positive_plane_angle_measure;
18415  END_ENTITY;
18416
18417  ENTITY solid_with_chamfered_edges
18418    ABSTRACT SUPERTYPE OF ( ONEOF ( solid_with_single_offset_chamfer, solid_with_double_offset_chamfer,
18419        solid_with_angle_based_chamfer ) )
18420    SUBTYPE OF ( edge_blended_solid );
18421  END_ENTITY;
18422
18423  ENTITY solid_with_circular_pattern
18424    SUPERTYPE OF ( solid_with_incomplete_circular_pattern )
18425    SUBTYPE OF ( solid_with_shape_element_pattern );
18426      replicate_count   : positive_integer;
18427      angular_spacing   : plane_angle_measure;
18428      radial_alignment  : BOOLEAN;
18429      reference_point   : point;
18430  END_ENTITY;
18431
18432  ENTITY solid_with_circular_pocket
18433    SUBTYPE OF ( solid_with_pocket );
18434      pocket_radius  : positive_length_measure;
18435    WHERE
18436      wr1: ( SELF\solid_with_pocket.floor_blend_radius <= pocket_radius );
18437  END_ENTITY;
18438
18439  ENTITY solid_with_circular_protrusion
18440    SUBTYPE OF ( solid_with_protrusion );
18441      protrusion_radius  : positive_length_measure;
18442  END_ENTITY;
18443
18444  ENTITY solid_with_conical_bottom_round_hole
18445    SUBTYPE OF ( solid_with_stepped_round_hole );
18446      semi_apex_angle  : positive_plane_angle_measure;
18447      tip_radius       : non_negative_length_measure;
18448    WHERE
18449      wr1: ( tip_radius < SELF\solid_with_stepped_round_hole.segment_radii[segments] );
18450  END_ENTITY;
18451
18452  ENTITY solid_with_constant_radius_edge_blend
18453    SUBTYPE OF ( edge_blended_solid );
18454      radius  : positive_length_measure;
18455  END_ENTITY;
18456
18457  ENTITY solid_with_curved_slot
18458    SUBTYPE OF ( solid_with_slot );
18459      slot_centreline  : bounded_curve;
18460  END_ENTITY;
18461
18462  ENTITY solid_with_depression
18463    ABSTRACT SUPERTYPE OF ( solid_with_through_depression ANDOR ONEOF ( solid_with_hole, solid_with_pocket, solid_with_slot,
18464        solid_with_groove ) )
18465    SUBTYPE OF ( modified_solid_with_placed_configuration );
18466      depth  : positive_length_measure;
18467  END_ENTITY;
18468
18469  ENTITY solid_with_double_offset_chamfer
18470    SUBTYPE OF ( solid_with_chamfered_edges );
18471      left_offset_distance   : positive_length_measure;
18472      right_offset_distance  : positive_length_measure;
18473  END_ENTITY;
18474
18475  ENTITY solid_with_excessive_number_of_voids
18476    SUBTYPE OF ( inapt_manifold_solid_brep );
18477      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18478    WHERE
18479      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18480               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18481               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
18482               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18483      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
18484      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MANIFOLD_SOLID_BREP'] );
18485      wr4: validate_locations_of_extreme_value_type( SELF, [] );
18486      wr5: validate_accuracy_types( SELF, [] );
18487  END_ENTITY;
18488
18489  ENTITY solid_with_flat_bottom_round_hole
18490    SUBTYPE OF ( solid_with_stepped_round_hole );
18491      fillet_radius  : non_negative_length_measure;
18492    WHERE
18493      wr1: ( fillet_radius < SELF\solid_with_stepped_round_hole.segment_radii[segments] );
18494  END_ENTITY;
18495
18496  ENTITY solid_with_general_pocket
18497    SUBTYPE OF ( solid_with_pocket );
18498      profile          : positioned_sketch;
18499      reference_point  : point;
18500    WHERE
18501      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
18502               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' ] * TYPEOF( profile.sketch_basis ) ) = 1 );
18503      wr2: ( profile IN using_items( reference_point, [] ) );
18504  END_ENTITY;
18505
18506  ENTITY solid_with_general_protrusion
18507    SUBTYPE OF ( solid_with_protrusion );
18508      profile          : positioned_sketch;
18509      reference_point  : point;
18510    WHERE
18511      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE',
18512               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' ] * TYPEOF( profile.sketch_basis ) ) = 1 );
18513      wr2: ( profile IN using_items( reference_point, [] ) );
18514  END_ENTITY;
18515
18516  ENTITY solid_with_groove
18517    SUBTYPE OF ( solid_with_depression );
18518      groove_radius        : positive_length_measure;
18519      groove_width         : positive_length_measure;
18520      draft_angle          : plane_angle_measure;
18521      floor_fillet_radius  : non_negative_length_measure;
18522      external_groove      : BOOLEAN;
18523    WHERE
18524      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF( SELF ) ) );
18525  END_ENTITY;
18526
18527  ENTITY solid_with_hole
18528    ABSTRACT SUPERTYPE OF ( solid_with_stepped_round_hole )
18529    SUBTYPE OF ( solid_with_depression );
18530  END_ENTITY;
18531
18532  ENTITY solid_with_incomplete_circular_pattern
18533    SUBTYPE OF ( solid_with_circular_pattern );
18534      omitted_instances  : SET [1 : ?] OF positive_integer;
18535    WHERE
18536      wr1: ( SIZEOF( omitted_instances ) < SELF\solid_with_circular_pattern.replicate_count );
18537      wr2: ( SIZEOF( QUERY ( q <* omitted_instances | ( q > SELF\solid_with_circular_pattern.replicate_count ) ) ) = 0 );
18538  END_ENTITY;
18539
18540  ENTITY solid_with_incomplete_rectangular_pattern
18541    SUBTYPE OF ( solid_with_rectangular_pattern );
18542      omitted_instances  : SET [1 : ?] OF LIST [2 : 2] OF positive_integer;
18543    WHERE
18544      wr1: ( NOT ( [1, 1] IN omitted_instances ) );
18545      wr2: ( SIZEOF( omitted_instances ) < ( ( SELF\solid_with_rectangular_pattern.row_count * SELF\
18546               solid_with_rectangular_pattern.column_count ) - 1 ) );
18547      wr3: ( SIZEOF( QUERY ( q <* omitted_instances | ( ( q[1] > SELF\solid_with_rectangular_pattern.row_count ) OR ( q[2] > SELF
18548               \solid_with_rectangular_pattern.column_count ) ) ) ) = 0 );
18549  END_ENTITY;
18550
18551  ENTITY solid_with_pocket
18552    ABSTRACT SUPERTYPE OF ( ONEOF ( solid_with_rectangular_pocket, solid_with_circular_pocket, solid_with_general_pocket ) )
18553    SUBTYPE OF ( solid_with_depression );
18554      floor_blend_radius  : non_negative_length_measure;
18555      draft_angle         : plane_angle_measure;
18556  END_ENTITY;
18557
18558  ENTITY solid_with_protrusion
18559    ABSTRACT SUPERTYPE OF ( ONEOF ( solid_with_circular_protrusion, solid_with_rectangular_protrusion,
18560        solid_with_general_protrusion ) )
18561    SUBTYPE OF ( modified_solid_with_placed_configuration );
18562      protrusion_height       : positive_length_measure;
18563      protrusion_draft_angle  : plane_angle_measure;
18564  END_ENTITY;
18565
18566  ENTITY solid_with_rectangular_pattern
18567    SUPERTYPE OF ( solid_with_incomplete_rectangular_pattern )
18568    SUBTYPE OF ( solid_with_shape_element_pattern );
18569      row_count       : positive_integer;
18570      column_count    : positive_integer;
18571      row_spacing     : length_measure;
18572      column_spacing  : length_measure;
18573    WHERE
18574      wr1: ( ( row_count * column_count ) > 1 );
18575  END_ENTITY;
18576
18577  ENTITY solid_with_rectangular_pocket
18578    SUBTYPE OF ( solid_with_pocket );
18579      pocket_length  : positive_length_measure;
18580      pocket_width   : positive_length_measure;
18581      corner_radius  : non_negative_length_measure;
18582    WHERE
18583      wr1: ( ( corner_radius < ( pocket_width DIV 2 ) ) AND ( corner_radius < ( pocket_length DIV 2 ) ) );
18584  END_ENTITY;
18585
18586  ENTITY solid_with_rectangular_protrusion
18587    SUBTYPE OF ( solid_with_protrusion );
18588      protrusion_length         : positive_length_measure;
18589      protrusion_width          : positive_length_measure;
18590      protrusion_corner_radius  : non_negative_length_measure;
18591    WHERE
18592      wr1: ( ( protrusion_corner_radius <= ( protrusion_width DIV 2 ) ) AND ( protrusion_corner_radius <= ( protrusion_length DIV
18593               2 ) ) );
18594  END_ENTITY;
18595
18596  ENTITY solid_with_shape_element_pattern
18597    ABSTRACT SUPERTYPE OF ( ONEOF ( solid_with_circular_pattern, solid_with_rectangular_pattern ) )
18598    SUBTYPE OF ( modified_solid_with_placed_configuration );
18599      replicated_element  : modified_solid_with_placed_configuration;
18600  END_ENTITY;
18601
18602  ENTITY solid_with_single_offset_chamfer
18603    SUBTYPE OF ( solid_with_chamfered_edges );
18604      offset_distance  : positive_length_measure;
18605  END_ENTITY;
18606
18607  ENTITY solid_with_slot
18608    ABSTRACT SUPERTYPE OF ( ONEOF ( solid_with_trapezoidal_section_slot, solid_with_tee_section_slot ) AND ONEOF (
18609        solid_with_straight_slot, solid_with_curved_slot ) )
18610    SUBTYPE OF ( solid_with_depression );
18611      slot_width      : positive_length_measure;
18612      closed_ends     : LIST [2 : 2] OF LOGICAL;
18613      end_exit_faces  : LIST [2 : 2] OF SET [0 : ?] OF face_surface;
18614    WHERE
18615      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF( SELF ) ) AND (
18616               closed_ends = [FALSE, FALSE] ) ) );
18617      wr2: ( NOT ( ( ( closed_ends[1] = TRUE ) AND ( SIZEOF( end_exit_faces[1] ) <> 0 ) ) OR ( ( closed_ends[2] = TRUE ) AND (
18618               SIZEOF( end_exit_faces[2] ) <> 0 ) ) ) );
18619  END_ENTITY;
18620
18621  ENTITY solid_with_spherical_bottom_round_hole
18622    SUBTYPE OF ( solid_with_stepped_round_hole );
18623      sphere_radius  : positive_length_measure;
18624    WHERE
18625      wr1: ( sphere_radius >= SELF\solid_with_stepped_round_hole.segment_radii[segments] );
18626  END_ENTITY;
18627
18628  ENTITY solid_with_stepped_round_hole
18629    SUPERTYPE OF ( solid_with_stepped_round_hole_and_conical_transitions ANDOR ONEOF ( solid_with_flat_bottom_round_hole,
18630        solid_with_conical_bottom_round_hole, solid_with_spherical_bottom_round_hole ) )
18631    SUBTYPE OF ( solid_with_hole );
18632      segments        : positive_integer;
18633      segment_radii   : LIST [1 : segments] OF positive_length_measure;
18634      segment_depths  : LIST [1 : segments] OF positive_length_measure;
18635    DERIVE
18636      SELF\solid_with_depression.depth  : positive_length_measure := compute_total_depth( SELF );
18637    WHERE
18638      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF( SELF ) ) AND (
18639               SIZEOF( TYPEOF( SELF ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE',
18640               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_SPHERICAL_BOTTOM_ROUND_HOLE' ,
18641               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_FLAT_BOTTOM_ROUND_HOLE' ] ) <> 0 ) ) );
18642  END_ENTITY;
18643
18644  ENTITY solid_with_stepped_round_hole_and_conical_transitions
18645    SUBTYPE OF ( solid_with_stepped_round_hole );
18646      conical_transitions  : SET [1 : ?] OF conical_stepped_hole_transition;
18647    WHERE
18648      wr1: ( SIZEOF( conical_transitions ) <= ( SELF\solid_with_stepped_round_hole.segments + 1 ) );
18649      wr2: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_THROUGH_DEPRESSION' IN TYPEOF( SELF ) ) XOR ( SIZEOF(
18650               conical_transitions ) <= SELF\solid_with_stepped_round_hole.segments ) );
18651      wr3: validate_countersink_radii( SELF );
18652  END_ENTITY;
18653
18654  ENTITY solid_with_straight_slot
18655    SUBTYPE OF ( solid_with_slot );
18656      slot_length  : positive_length_measure;
18657  END_ENTITY;
18658
18659  ENTITY solid_with_tee_section_slot
18660    SUBTYPE OF ( solid_with_slot );
18661      tee_section_width  : positive_length_measure;
18662      collar_depth       : positive_length_measure;
18663    WHERE
18664      wr1: ( collar_depth < SELF\solid_with_depression.depth );
18665      wr2: ( tee_section_width > SELF\solid_with_slot.slot_width );
18666  END_ENTITY;
18667
18668  ENTITY solid_with_through_depression
18669    SUBTYPE OF ( solid_with_depression );
18670      exit_faces  : SET [1 : ?] OF face_surface;
18671    WHERE
18672      wr1: ( SIZEOF( TYPEOF( SELF ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_HOLE',
18673               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_POCKET' ,
18674               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_SLOT' ] ) = 1 );
18675  END_ENTITY;
18676
18677  ENTITY solid_with_trapezoidal_section_slot
18678    SUBTYPE OF ( solid_with_slot );
18679      draft_angle          : plane_angle_measure;
18680      floor_fillet_radius  : non_negative_length_measure;
18681  END_ENTITY;
18682
18683  ENTITY solid_with_variable_radius_edge_blend
18684    SUBTYPE OF ( track_blended_solid );
18685      point_list          : LIST [2 : ?] OF point;
18686      radius_list         : LIST [2 : ?] OF positive_length_measure;
18687      edge_function_list  : LIST [1 : ?] OF blend_radius_variation_type;
18688    WHERE
18689      wr1: ( SIZEOF( point_list ) = SIZEOF( radius_list ) );
18690      wr2: ( SIZEOF( edge_function_list ) = ( SIZEOF( radius_list ) - 1 ) );
18691      wr3: ( NOT ( ( point_list[1] = point_list[HIINDEX( point_list )] ) AND ( NOT ( radius_list[1] = radius_list[HIINDEX(
18692               radius_list )] ) ) ) );
18693  END_ENTITY;
18694
18695  ENTITY solid_with_wrong_number_of_voids
18696    SUBTYPE OF ( erroneous_manifold_solid_brep );
18697      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
18698    WHERE
18699      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
18700      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS'] );
18701      wr3: validate_locations_of_extreme_value_type( SELF, [] );
18702      wr4: validate_accuracy_types( SELF, [] );
18703  END_ENTITY;
18704
18705  ENTITY source_for_requirement
18706    SUBTYPE OF ( group_assignment );
18707      SELF\group_assignment.assigned_group  : requirement_source;
18708      items                                 : SET [1 : 1] OF requirement_source_item;
18709  END_ENTITY;
18710
18711  ENTITY sourced_requirement
18712    SUBTYPE OF ( group_assignment );
18713      SELF\group_assignment.assigned_group  : requirement_source;
18714      items                                 : SET [1 : 1] OF product_definition;
18715  END_ENTITY;
18716
18717  ENTITY specification_definition
18718    SUBTYPE OF ( product_definition );
18719  END_ENTITY;
18720
18721  ENTITY specified_higher_usage_occurrence
18722    SUBTYPE OF ( assembly_component_usage );
18723      upper_usage  : assembly_component_usage;
18724      next_usage   : next_assembly_usage_occurrence;
18725    UNIQUE
18726      ur1 : upper_usage, next_usage;
18727    WHERE
18728      wr1: ( SELF :<>: upper_usage );
18729      wr2: ( SELF\product_definition_relationship.relating_product_definition :=: upper_usage.relating_product_definition );
18730      wr3: ( SELF\product_definition_relationship.related_product_definition :=: next_usage.related_product_definition );
18731      wr4: ( ( upper_usage.related_product_definition :=: next_usage.relating_product_definition ) OR ( SIZEOF( QUERY ( pdr <*
18732               USEDIN( upper_usage.related_product_definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18733               + 'PRODUCT_DEFINITION_RELATIONSHIP.'  + 'RELATED_PRODUCT_DEFINITION' ) | ( pdr.relating_product_definition :=:
18734               next_usage.relating_product_definition ) ) ) = 1 ) );
18735      wr5: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEXT_ASSEMBLY_USAGE_OCCURRENCE',
18736               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPECIFIED_HIGHER_USAGE_OCCURRENCE' ] * TYPEOF( upper_usage ) ) =
18737               1 );
18738  END_ENTITY;
18739
18740  ENTITY sphere
18741    SUBTYPE OF ( geometric_representation_item );
18742      radius  : positive_length_measure;
18743      centre  : point;
18744  END_ENTITY;
18745
18746  ENTITY spherical_cap
18747    SUBTYPE OF ( feature_definition );
18748    WHERE
18749      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18750               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18751               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18752               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
18753               used_representation.items ) = 3 ) ) ) ) = 0 ) ) ) ) = 0 );
18754      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18755               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18756               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18757               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18758               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18759               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18760               TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18761      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18762               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18763               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18764               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18765               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18766               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
18767               * TYPEOF( it ) ) = 2 ) AND ( it.name = 'internal angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18768  END_ENTITY;
18769
18770  ENTITY spherical_pair
18771    SUBTYPE OF ( low_order_kinematic_pair );
18772    DERIVE
18773      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := FALSE;
18774      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
18775      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
18776      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := TRUE;
18777      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := TRUE;
18778      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
18779  END_ENTITY;
18780
18781  ENTITY spherical_pair_value
18782    SUBTYPE OF ( pair_value );
18783      SELF\pair_value.applies_to_pair  : spherical_pair_select;
18784      input_orientation                : spatial_rotation;
18785    DERIVE
18786      actual_orientation  : ypr_rotation := convert_spatial_to_ypr_rotation( SELF\pair_value.applies_to_pair, input_orientation );
18787  END_ENTITY;
18788
18789  ENTITY spherical_pair_with_pin
18790    SUBTYPE OF ( low_order_kinematic_pair );
18791    DERIVE
18792      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := FALSE;
18793      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
18794      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
18795      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := FALSE;
18796      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := TRUE;
18797      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
18798  END_ENTITY;
18799
18800  ENTITY spherical_pair_with_pin_and_range
18801    SUBTYPE OF ( spherical_pair_with_pin );
18802      lower_limit_yaw   : OPTIONAL plane_angle_measure;
18803      upper_limit_yaw   : OPTIONAL plane_angle_measure;
18804      lower_limit_roll  : OPTIONAL plane_angle_measure;
18805      upper_limit_roll  : OPTIONAL plane_angle_measure;
18806    WHERE
18807      wr1: ( ( ( NOT EXISTS( lower_limit_yaw ) ) OR ( NOT EXISTS( upper_limit_yaw ) ) ) XOR ( lower_limit_yaw < upper_limit_yaw ) );
18808      wr2: ( ( ( NOT EXISTS( lower_limit_roll ) ) OR ( NOT EXISTS( upper_limit_roll ) ) ) XOR ( lower_limit_roll <
18809               upper_limit_roll ) );
18810  END_ENTITY;
18811
18812  ENTITY spherical_pair_with_range
18813    SUBTYPE OF ( spherical_pair );
18814      lower_limit_yaw    : OPTIONAL plane_angle_measure;
18815      upper_limit_yaw    : OPTIONAL plane_angle_measure;
18816      lower_limit_pitch  : OPTIONAL plane_angle_measure;
18817      upper_limit_pitch  : OPTIONAL plane_angle_measure;
18818      lower_limit_roll   : OPTIONAL plane_angle_measure;
18819      upper_limit_roll   : OPTIONAL plane_angle_measure;
18820    WHERE
18821      wr1: ( ( ( NOT EXISTS( lower_limit_yaw ) ) OR ( NOT EXISTS( upper_limit_yaw ) ) ) XOR ( lower_limit_yaw < upper_limit_yaw ) );
18822      wr2: ( ( ( NOT EXISTS( lower_limit_pitch ) ) OR ( NOT EXISTS( upper_limit_pitch ) ) ) XOR ( lower_limit_pitch <
18823               upper_limit_pitch ) );
18824      wr3: ( ( ( NOT EXISTS( lower_limit_roll ) ) OR ( NOT EXISTS( upper_limit_roll ) ) ) XOR ( lower_limit_roll <
18825               upper_limit_roll ) );
18826  END_ENTITY;
18827
18828  ENTITY spherical_surface
18829    SUBTYPE OF ( elementary_surface );
18830      radius  : positive_length_measure;
18831  END_ENTITY;
18832
18833  ENTITY sql_mappable_defined_function
18834    ABSTRACT SUPERTYPE
18835    SUBTYPE OF ( defined_function );
18836  END_ENTITY;
18837
18838  ENTITY square_root_function
18839    SUBTYPE OF ( unary_function_call );
18840  END_ENTITY;
18841
18842  ENTITY square_u_profile
18843    SUBTYPE OF ( shape_aspect );
18844    WHERE
18845      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
18846      wr2 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18847                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18848                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18849                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
18850      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18851                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18852                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18853                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
18854                used_representation.items ) >= 4 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 7 ) ) ) ) = 0 ) ) ) ) =
18855                0 );
18856      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18857                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18858                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18859                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
18860                pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'width' ) OR ( srwp_i.name =
18861                'first angle'  ) OR ( srwp_i.name = 'second angle' ) OR ( srwp_i.name = 'first radius' ) OR ( srwp_i.name =
18862                'second radius'  ) OR ( srwp_i.name = 'profile limit' ) OR ( srwp_i.name = 'depth' ) ) ) ) = SIZEOF( pdr.
18863                used_representation.items ) ) ) ) ) = 1 ) ) ) = 1 );
18864      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18865                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18866                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18867                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18868                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
18869                IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18870      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18871                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18872                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18873                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18874                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18875                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18876                TYPEOF( it ) ) = 2 ) AND ( it.name = 'width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18877      wr7 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18878                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18879                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18880                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18881                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18882                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18883                TYPEOF( it ) ) = 2 ) AND ( it.name = 'first radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18884      wr8 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18885                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18886                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18887                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18888                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18889                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18890                TYPEOF( it ) ) = 2 ) AND ( it.name = 'second radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18891      wr9 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18892                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18893                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18894                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18895                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18896                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
18897                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'first angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18898      wr10: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18899                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18900                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18901                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18902                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18903                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
18904                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'second angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18905      wr11: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18906                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18907                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18908                + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
18909                'profile limit'  ) ) ) ) <= 1 ) ) ) ) = 0 );
18910      wr12: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18911                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18912                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18913                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
18914                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18915                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
18916                TYPEOF( it ) ) = 2 ) AND ( it.name = 'depth' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18917  END_ENTITY;
18918
18919  ENTITY standard_uncertainty
18920    SUPERTYPE OF ( expanded_uncertainty )
18921    SUBTYPE OF ( uncertainty_qualifier );
18922      uncertainty_value  : REAL;
18923  END_ENTITY;
18924
18925  ENTITY start_request
18926    SUBTYPE OF ( action_request_assignment );
18927      items  : SET [1 : ?] OF start_request_item;
18928  END_ENTITY;
18929
18930  ENTITY start_work
18931    SUBTYPE OF ( action_assignment );
18932      items  : SET [1 : ?] OF work_item;
18933  END_ENTITY;
18934
18935  ENTITY steep_angle_between_adjacent_edges
18936    SUBTYPE OF ( steep_geometry_transition_across_edge );
18937      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18938    WHERE
18939      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18940               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18941               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
18942               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18943      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
18944      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_LOOP'] );
18945      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE'] );
18946      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE'] );
18947  END_ENTITY;
18948
18949  ENTITY steep_angle_between_adjacent_faces
18950    SUBTYPE OF ( steep_geometry_transition_across_edge );
18951      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
18952    WHERE
18953      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
18954               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
18955               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
18956               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
18957      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
18958      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONNECTED_FACE_SET'] );
18959      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
18960               'POINT_ON_EDGE_CURVE' ] );
18961      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE'] );
18962  END_ENTITY;
18963
18964  ENTITY steep_geometry_transition_across_edge
18965    ABSTRACT SUPERTYPE OF ( ONEOF ( steep_angle_between_adjacent_edges, steep_angle_between_adjacent_faces ) )
18966    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
18967  END_ENTITY;
18968
18969  ENTITY step
18970    SUBTYPE OF ( feature_definition );
18971    WHERE
18972      wr1: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
18973               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18974               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18975               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
18976               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
18977      wr2: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18978               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18979               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
18980               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
18981               'course of travel occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
18982               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
18983               description = 'path feature component usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18984               + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18985               + 'PATH_FEATURE_COMPONENT'  IN TYPEOF( sdr.relating_shape_aspect ) ) AND ( sdr.relating_shape_aspect.description =
18986               'linear' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
18987      wr3: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18988               + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
18989               + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
18990               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
18991               'removal boundary occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
18992               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
18993               description = 'profile usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'
18994               IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VEE_PROFILE' IN TYPEOF( sdr.
18995               relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
18996      wr4: ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( SELF ) | ( (
18997               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
18998               AND ( pdr.used_representation.name = 'maximum feature limit' ) ) ) ) >= 0 );
18999      wr5: ( SIZEOF( QUERY ( pds <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19000               | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( pds ) ) AND ( SIZEOF(
19001               QUERY ( csa <* USEDIN( pds, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) | ( (
19002               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHAPE_ASPECT'  IN TYPEOF( csa ) ) AND ( csa.name =
19003               'uncut volume'  ) AND ( SIZEOF( QUERY ( sar <* csa.component_relationships | ( (
19004               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_RELATIONSHIP'  IN TYPEOF( sar ) ) AND (
19005               SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19006               + 'PROTRUSION' ] * TYPEOF( sar.related_shape_aspect ) ) = 1 ) ) ) ) = 1 ) ) ) ) <= 1 ) ) ) ) = 1 );
19007  END_ENTITY;
19008
19009  ENTITY straightness_tolerance
19010    SUBTYPE OF ( geometric_tolerance );
19011    WHERE
19012      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'GEOMETRIC_TOLERANCE_WITH_DATUM_REFERENCE' ) IN
19013               TYPEOF( SELF ) ) );
19014  END_ENTITY;
19015
19016  ENTITY string_defined_function
19017    ABSTRACT SUPERTYPE
19018    SUBTYPE OF ( defined_function, string_expression );
19019  END_ENTITY;
19020
19021  ENTITY string_expression
19022    ABSTRACT SUPERTYPE OF ( ONEOF ( simple_string_expression, index_expression, substring_expression, concat_expression,
19023        format_function, string_defined_function ) )
19024    SUBTYPE OF ( expression );
19025  END_ENTITY;
19026
19027  ENTITY string_literal
19028    SUBTYPE OF ( simple_string_expression, generic_literal );
19029      the_value  : STRING;
19030  END_ENTITY;
19031
19032  ENTITY string_variable
19033    SUBTYPE OF ( simple_string_expression, variable );
19034  END_ENTITY;
19035
19036  ENTITY structured_dimension_callout
19037    SUBTYPE OF ( draughting_callout );
19038    WHERE
19039      wr1: ( SIZEOF( TYPEOF( SELF ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_FEATURE_CALLOUT',
19040               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DATUM_TARGET_CALLOUT' ,
19041               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICAL_TOLERANCE_CALLOUT' ,
19042               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LEADER_DIRECTED_CALLOUT' ,
19043               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROJECTION_DIRECTED_CALLOUT' ,
19044               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSION_CURVE_DIRECTED_CALLOUT' ] ) = 0 );
19045      wr2: ( SIZEOF( QUERY ( ato <* QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19046               + 'ANNOTATION_TEXT_OCCURRENCE'  IN TYPEOF( con ) ) ) | ( NOT ( ato.name IN [ 'dimension value', 'tolerance value',
19047               'unit text' , 'prefix text', 'suffix text'] ) ) ) ) = 0 );
19048      wr3: ( SIZEOF( QUERY ( ato <* QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19049               + 'ANNOTATION_TEXT_OCCURRENCE'  IN TYPEOF( con ) ) ) | ( ato.name = 'dimension value' ) ) ) >= 1 );
19050      wr4: ( SIZEOF( QUERY ( dcr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19051               'DRAUGHTING_CALLOUT_RELATIONSHIP.'  + 'RELATING_DRAUGHTING_CALLOUT' ) | ( ( (
19052               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' ) IN TYPEOF( dcr ) )
19053               AND ( dcr.name = 'prefix' ) ) ) ) <= 1 );
19054      wr5: ( SIZEOF( QUERY ( dcr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19055               'DRAUGHTING_CALLOUT_RELATIONSHIP.'  + 'RELATING_DRAUGHTING_CALLOUT' ) | ( ( (
19056               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP' ) IN TYPEOF( dcr ) )
19057               AND ( dcr.name = 'suffix' ) ) ) ) <= 1 );
19058      wr6: ( ( NOT ( SIZEOF( QUERY ( ato <* QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19059               + 'ANNOTATION_TEXT_OCCURRENCE'  IN TYPEOF( con ) ) ) | ( ato.name = 'prefix text' ) ) ) > 0 ) ) OR ( SIZEOF(
19060               QUERY ( dcr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.'
19061               + 'RELATING_DRAUGHTING_CALLOUT' ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19062               'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP'  ) IN TYPEOF( dcr ) ) AND ( dcr.name = 'prefix' ) ) ) ) = 1 ) );
19063      wr7: ( ( NOT ( SIZEOF( QUERY ( ato <* QUERY ( con <* SELF.contents | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19064               + 'ANNOTATION_TEXT_OCCURRENCE'  IN TYPEOF( con ) ) ) | ( ato.name = 'suffix text' ) ) ) > 0 ) ) OR ( SIZEOF(
19065               QUERY ( dcr <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'DRAUGHTING_CALLOUT_RELATIONSHIP.'
19066               + 'RELATING_DRAUGHTING_CALLOUT' ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19067               'DIMENSION_CALLOUT_COMPONENT_RELATIONSHIP'  ) IN TYPEOF( dcr ) ) AND ( dcr.name = 'suffix' ) ) ) ) = 1 ) );
19068  END_ENTITY;
19069
19070  ENTITY structured_text_composition
19071    SUBTYPE OF ( compound_representation_item );
19072  END_ENTITY;
19073
19074  ENTITY structured_text_representation
19075    SUBTYPE OF ( representation );
19076      SELF\representation.items  : SET [1 : ?] OF string_representation_item_select;
19077  END_ENTITY;
19078
19079  ENTITY styled_item
19080    SUBTYPE OF ( representation_item );
19081      styles  : SET [1 : ?] OF presentation_style_assignment;
19082      item    : styled_item_target;
19083    WHERE
19084      wr1: ( ( SIZEOF( SELF.styles ) = 1 ) XOR ( SIZEOF( QUERY ( pres_style <* SELF.styles | ( NOT ( (
19085               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRESENTATION_STYLE_BY_CONTEXT' ) IN TYPEOF( pres_style ) ) ) ) )
19086               = 0 ) );
19087      wr2: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STYLED_ITEM' IN TYPEOF( item ) ) );
19088      wr3: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF( item ) ) OR (
19089               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRIC_REPRESENTATION_ITEM'  IN TYPEOF( item ) ) OR (
19090               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTEXT_DEPENDENT_OVER_RIDING_STYLED_ITEM'  IN TYPEOF( SELF ) ) );
19091  END_ENTITY;
19092
19093  ENTITY su_parameters
19094    SUBTYPE OF ( geometric_representation_item );
19095      a      : length_measure;
19096      alpha  : plane_angle_measure;
19097      b      : length_measure;
19098      beta   : plane_angle_measure;
19099      c      : length_measure;
19100      gamma  : plane_angle_measure;
19101    WHERE
19102      wr1: ( SELF\geometric_representation_item.dim = 3 );
19103  END_ENTITY;
19104
19105  ENTITY subedge
19106    SUBTYPE OF ( edge );
19107      parent_edge  : edge;
19108  END_ENTITY;
19109
19110  ENTITY subface
19111    SUBTYPE OF ( face );
19112      parent_face  : face;
19113    WHERE
19114      wr1: ( NOT mixed_loop_type_set( list_to_set( list_face_loops( SELF ) ) + list_to_set( list_face_loops( parent_face ) ) ) );
19115  END_ENTITY;
19116
19117  ENTITY subsketch
19118    SUBTYPE OF ( geometric_representation_item );
19119      subsketch_elements  : SET [1 : ?] OF sketch_element_select;
19120      owning_sketch       : sketch_type_select;
19121    WHERE
19122      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION' IN TYPEOF( owning_sketch ) ) AND
19123               ( SIZEOF( QUERY ( q <* subsketch_elements | ( NOT ( owning_sketch IN using_representations( q ) ) ) ) ) = 0 ) ) XOR
19124               ( ( SIZEOF( TYPEOF( owning_sketch ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIONED_SKETCH',
19125               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBSKETCH' ] ) = 1 ) AND ( SIZEOF( QUERY ( q <*
19126               subsketch_elements | ( NOT ( owning_sketch IN using_items( q, [] ) ) ) ) ) = 0 ) ) );
19127  END_ENTITY;
19128
19129  ENTITY substring_expression
19130    SUBTYPE OF ( string_expression, multiple_arity_generic_expression );
19131    DERIVE
19132      operand  : generic_expression := SELF\multiple_arity_generic_expression.operands[1];
19133      index1   : generic_expression := SELF\multiple_arity_generic_expression.operands[2];
19134      index2   : generic_expression := SELF\multiple_arity_generic_expression.operands[3];
19135    WHERE
19136      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_EXPRESSION' IN TYPEOF( operand ) ) AND (
19137               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION'  IN TYPEOF( index1 ) ) AND (
19138               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_EXPRESSION'  IN TYPEOF( index2 ) ) );
19139      wr2: ( SIZEOF( SELF\multiple_arity_generic_expression.operands ) = 3 );
19140      wr3: is_int_expr( index1 );
19141      wr4: is_int_expr( index2 );
19142  END_ENTITY;
19143
19144  ENTITY summary_report_request
19145    SUBTYPE OF ( data_quality_report_request );
19146      summary_report_request_type  : summary_report_type;
19147  END_ENTITY;
19148
19149  ENTITY supplied_part_relationship
19150    SUBTYPE OF ( product_definition_relationship );
19151  END_ENTITY;
19152
19153  ENTITY surface
19154    SUPERTYPE OF ( ONEOF ( elementary_surface, swept_surface, bounded_surface, offset_surface, surface_replica ) )
19155    SUBTYPE OF ( geometric_representation_item );
19156  END_ENTITY;
19157
19158  ENTITY surface_condition_callout
19159    SUBTYPE OF ( draughting_callout );
19160    WHERE
19161      wr1: ( SIZEOF( QUERY ( c <* SELF.contents | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19162               'ANNOTATION_CURVE_OCCURRENCE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ANNOTATION_SYMBOL_OCCURRENCE',
19163               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'ANNOTATION_TEXT_OCCURRENCE'] * TYPEOF( c ) ) <> 1 ) ) ) = 0 );
19164  END_ENTITY;
19165
19166  ENTITY surface_curve
19167    SUPERTYPE OF ( ONEOF ( intersection_curve, seam_curve ) ANDOR bounded_surface_curve )
19168    SUBTYPE OF ( curve );
19169      curve_3d               : curve;
19170      associated_geometry    : LIST [1 : 2] OF pcurve_or_surface;
19171      master_representation  : preferred_surface_curve_representation;
19172    DERIVE
19173      basis_surface  : SET [1 : 2] OF surface := get_basis_surface( SELF );
19174    WHERE
19175      wr1: ( curve_3d.dim = 3 );
19176      wr2: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( associated_geometry[1] ) ) OR (
19177               master_representation <> pcurve_s1 ) );
19178      wr3: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( associated_geometry[2] ) ) OR (
19179               master_representation <> pcurve_s2 ) );
19180      wr4: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( curve_3d ) ) );
19181  END_ENTITY;
19182
19183  ENTITY surface_curve_swept_area_solid
19184    SUBTYPE OF ( swept_area_solid );
19185      directrix          : curve;
19186      start_param        : REAL;
19187      end_param          : REAL;
19188      reference_surface  : surface;
19189    WHERE
19190      wr1: ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( directrix ) ) ) OR (
19191               reference_surface IN directrix\surface_curve.basis_surface ) );
19192  END_ENTITY;
19193
19194  ENTITY surface_distance_assembly_constraint_with_dimension
19195    SUBTYPE OF ( binary_assembly_constraint, sdgc_with_dimension );
19196  END_ENTITY;
19197
19198  ENTITY surface_distance_geometric_constraint
19199    SUBTYPE OF ( explicit_geometric_constraint );
19200      SELF\explicit_constraint.constrained_elements : SET [1 : 2] OF surface;
19201      SELF\explicit_constraint.reference_elements : SET [0 : 4] OF point_curve_or_surface_constraint_element;
19202      near_points                            : SET [0 : 4] OF near_point_relationship;
19203    WHERE
19204      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) > 0 ) OR ( (
19205               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SDGC_WITH_DIMENSION'  IN TYPEOF( SELF ) ) AND ( SIZEOF( SELF\
19206               explicit_constraint.constrained_elements ) = 2 ) ) );
19207      wr2: ( SIZEOF( near_points ) <= SIZEOF( SELF\explicit_constraint.reference_elements ) );
19208      wr3: ( SIZEOF( QUERY ( q <* near_points | ( NOT ( q\representation_item_relationship.relating_representation_item IN SELF\
19209               explicit_constraint.reference_elements ) ) ) ) = 0 );
19210  END_ENTITY;
19211
19212  ENTITY surface_of_linear_extrusion
19213    SUBTYPE OF ( swept_surface );
19214      extrusion_axis  : vector;
19215  END_ENTITY;
19216
19217  ENTITY surface_of_revolution
19218    SUBTYPE OF ( swept_surface );
19219      axis_position  : axis1_placement;
19220    DERIVE
19221      axis_line  : line := representation_item( '' ) || geometric_representation_item(  ) || curve(  ) || line( axis_position.
19222                     location, representation_item( '' ) || geometric_representation_item(  ) || vector( axis_position.z, 1 ) );
19223  END_ENTITY;
19224
19225  ENTITY surface_pair
19226    ABSTRACT SUPERTYPE OF ( ONEOF ( sliding_surface_pair, rolling_surface_pair ) ANDOR surface_pair_with_range )
19227    SUBTYPE OF ( high_order_kinematic_pair );
19228      surface_1    : surface;
19229      surface_2    : surface;
19230      orientation  : BOOLEAN;
19231    WHERE
19232      wr1: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( surface_1 IN r.items ) ) ) ) =
19233               0 );
19234      wr2: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT ( surface_2 IN r.items ) ) ) ) =
19235               0 );
19236      wr3: ( SIZEOF( QUERY ( lr <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT (
19237               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIGID_LINK_REPRESENTATION'  IN TYPEOF( lr ) ) ) ) ) = 0 );
19238  END_ENTITY;
19239
19240  ENTITY surface_pair_with_range
19241    SUBTYPE OF ( surface_pair );
19242      range_on_surface_1           : rectangular_trimmed_surface;
19243      range_on_surface_2           : rectangular_trimmed_surface;
19244      lower_limit_actual_rotation  : OPTIONAL plane_angle_measure;
19245      upper_limit_actual_rotation  : OPTIONAL plane_angle_measure;
19246    WHERE
19247      wr1: ( SELF\surface_pair.surface_1 :=: range_on_surface_1.basis_surface );
19248      wr2: ( SELF\surface_pair.surface_2 :=: range_on_surface_2.basis_surface );
19249      wr3: ( ( ( NOT EXISTS( lower_limit_actual_rotation ) ) OR ( NOT EXISTS( upper_limit_actual_rotation ) ) ) XOR (
19250               lower_limit_actual_rotation < upper_limit_actual_rotation ) );
19251      wr4: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_1 | ( NOT ( range_on_surface_1 IN r.items ) ) ) )
19252               = 0 );
19253      wr5: ( SIZEOF( QUERY ( r <* SELF\kinematic_pair.associated_link_representations_2 | ( NOT ( range_on_surface_2 IN r.items ) ) ) )
19254               = 0 );
19255  END_ENTITY;
19256
19257  ENTITY surface_patch
19258    SUBTYPE OF ( founded_item );
19259      parent_surface  : bounded_surface;
19260      u_transition    : transition_code;
19261      v_transition    : transition_code;
19262      u_sense         : BOOLEAN;
19263      v_sense         : BOOLEAN;
19264    INVERSE
19265      using_surfaces : BAG [1 : ?] OF rectangular_composite_surface FOR segments;
19266    WHERE
19267      wr1: ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF( parent_surface ) ) );
19268  END_ENTITY;
19269
19270  ENTITY surface_patch_set
19271    SUBTYPE OF ( geometric_representation_item );
19272      patches  : SET [1 : ?] OF surface_patch;
19273  END_ENTITY;
19274
19275  ENTITY surface_profile_tolerance
19276    SUBTYPE OF ( geometric_tolerance );
19277  END_ENTITY;
19278
19279  ENTITY surface_rendering_properties;
19280      rendered_colour  : colour;
19281  END_ENTITY;
19282
19283  ENTITY surface_replica
19284    SUBTYPE OF ( surface );
19285      parent_surface  : surface;
19286      transformation  : cartesian_transformation_operator_3d;
19287    WHERE
19288      wr1: acyclic_surface_replica( SELF, parent_surface );
19289  END_ENTITY;
19290
19291  ENTITY surface_side_style
19292    SUBTYPE OF ( founded_item );
19293      name    : label;
19294      styles  : SET [1 : 7] OF surface_style_element_select;
19295    WHERE
19296      wr1: ( SIZEOF( QUERY ( style1 <* SELF.styles | ( SIZEOF( QUERY ( style2 <* ( SELF.styles - style1 ) | ( TYPEOF( style1 ) =
19297               TYPEOF( style2 ) ) ) ) > 0 ) ) ) = 0 );
19298  END_ENTITY;
19299
19300  ENTITY surface_smoothness_geometric_constraint
19301    SUBTYPE OF ( explicit_geometric_constraint );
19302      SELF\explicit_constraint.constrained_elements : SET [1 : 1] OF surface_patch_set;
19303      u_smoothness                           : transition_code;
19304      v_smoothness                           : transition_code;
19305    WHERE
19306      wr1: ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 );
19307  END_ENTITY;
19308
19309  ENTITY surface_style_boundary
19310    SUBTYPE OF ( founded_item );
19311      style_of_boundary  : curve_or_render;
19312  END_ENTITY;
19313
19314  ENTITY surface_style_control_grid
19315    SUBTYPE OF ( founded_item );
19316      style_of_control_grid  : curve_or_render;
19317  END_ENTITY;
19318
19319  ENTITY surface_style_fill_area
19320    SUBTYPE OF ( founded_item );
19321      fill_area  : fill_area_style;
19322  END_ENTITY;
19323
19324  ENTITY surface_style_parameter_line
19325    SUBTYPE OF ( founded_item );
19326      style_of_parameter_lines  : curve_or_render;
19327      direction_counts          : SET [1 : 2] OF direction_count_select;
19328    WHERE
19329      wr1: ( ( HIINDEX( SELF.direction_counts ) = 1 ) XOR ( TYPEOF( SELF.direction_counts[1] ) <> TYPEOF( SELF.direction_counts[2] ) ) );
19330  END_ENTITY;
19331
19332  ENTITY surface_style_reflectance_ambient;
19333      ambient_reflectance  : REAL;
19334  END_ENTITY;
19335
19336  ENTITY surface_style_reflectance_ambient_diffuse
19337    SUBTYPE OF ( surface_style_reflectance_ambient );
19338      diffuse_reflectance  : REAL;
19339  END_ENTITY;
19340
19341  ENTITY surface_style_reflectance_ambient_diffuse_specular
19342    SUBTYPE OF ( surface_style_reflectance_ambient_diffuse );
19343      specular_reflectance  : REAL;
19344      specular_exponent     : REAL;
19345      specular_colour       : colour;
19346  END_ENTITY;
19347
19348  ENTITY surface_style_rendering;
19349      rendering_method  : shading_surface_method;
19350      surface_colour    : colour;
19351  END_ENTITY;
19352
19353  ENTITY surface_style_rendering_with_properties
19354    SUBTYPE OF ( surface_style_rendering );
19355      properties  : SET [1 : 2] OF rendering_properties_select;
19356    WHERE
19357      wr1: ( ( HIINDEX( SELF.properties ) = 1 ) XOR ( TYPEOF( SELF.properties[1] ) <> TYPEOF( SELF.properties[2] ) ) );
19358  END_ENTITY;
19359
19360  ENTITY surface_style_segmentation_curve
19361    SUBTYPE OF ( founded_item );
19362      style_of_segmentation_curve  : curve_or_render;
19363  END_ENTITY;
19364
19365  ENTITY surface_style_silhouette
19366    SUBTYPE OF ( founded_item );
19367      style_of_silhouette  : curve_or_render;
19368  END_ENTITY;
19369
19370  ENTITY surface_style_transparent;
19371      transparency  : REAL;
19372    WHERE
19373      wr1: ( ( 0 <= transparency ) AND ( transparency <= 1 ) );
19374  END_ENTITY;
19375
19376  ENTITY surface_style_usage
19377    SUBTYPE OF ( founded_item );
19378      side   : surface_side;
19379      style  : surface_side_style_select;
19380  END_ENTITY;
19381
19382  ENTITY surface_texture_representation
19383    SUBTYPE OF ( representation );
19384    WHERE
19385      wr1: ( SIZEOF( QUERY ( i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19386               'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'VALUE_RANGE',
19387               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DESCRIPTIVE_REPRESENTATION_ITEM'] * TYPEOF( i ) ) <> 1 ) ) )
19388               = 0 );
19389      wr2: ( ( SIZEOF( QUERY ( i <* SELF.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19390               'DESCRIPTIVE_REPRESENTATION_ITEM'  ) IN TYPEOF( i ) ) ) ) = 1 ) AND ( SIZEOF( QUERY ( i <* SELF.items | ( ( (
19391               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DESCRIPTIVE_REPRESENTATION_ITEM' ) IN TYPEOF( i ) ) AND ( i
19392               .name = 'measuring method' ) ) ) ) = 1 ) );
19393      wr3: ( SIZEOF( QUERY ( i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19394               'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'VALUE_RANGE'] * TYPEOF( i ) )
19395               = 1 ) ) ) > 0 );
19396      wr4: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'REPRESENTATION_RELATIONSHIP.' + 'REP_1' ) )
19397               <= 1 ) AND ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19398               'REPRESENTATION_RELATIONSHIP.'  + 'REP_2' ) ) = 0 ) AND ( SIZEOF( QUERY ( rr <* USEDIN( SELF,
19399               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'REPRESENTATION_RELATIONSHIP.' + 'REP_1' ) | ( rr.rep_2.name
19400               = 'measuring direction' ) ) ) = SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19401               'REPRESENTATION_RELATIONSHIP.'  + 'REP_1' ) ) ) );
19402      wr5: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' +
19403               'USED_REPRESENTATION' ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( SELF,
19404               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION' )
19405               | ( SIZEOF( QUERY ( gpa <* USEDIN( pdr.definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19406               'GENERAL_PROPERTY_ASSOCIATION.'  + 'DERIVED_DEFINITION' ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19407               + 'GENERAL_PROPERTY' ) IN TYPEOF( gpa.base_definition ) ) AND ( gpa\general_property_association.base_definition\
19408               general_property.name = 'surface_condition' ) ) ) ) = 1 ) ) ) = 1 ) );
19409  END_ENTITY;
19410
19411  ENTITY surface_with_excessive_patches_in_one_direction
19412    SUBTYPE OF ( overcomplex_geometry );
19413      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
19414    WHERE
19415      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
19416               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
19417               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
19418               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
19419      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
19420      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19421               'B_SPLINE_OR_RECTANGULAR_COMPOSITE_SURFACE_SELECT' ] );
19422      wr4: validate_locations_of_extreme_value_type( SELF, [] );
19423      wr5: validate_accuracy_types( SELF, [] );
19424  END_ENTITY;
19425
19426  ENTITY surface_with_small_curvature_radius
19427    SUBTYPE OF ( geometry_with_local_near_degeneracy );
19428      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
19429    WHERE
19430      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
19431               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
19432               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN value_limit_type( SELF\
19433               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
19434      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' );
19435      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'] );
19436      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] );
19437      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
19438  END_ENTITY;
19439
19440  ENTITY surfaced_open_shell
19441    SUBTYPE OF ( open_shell );
19442    WHERE
19443      wr1: ( SIZEOF( QUERY ( q <* SELF\connected_face_set.cfs_faces | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19444               + 'FACE_SURFACE'  IN TYPEOF( q ) ) ) ) ) = 0 );
19445  END_ENTITY;
19446
19447  ENTITY swept_area_solid
19448    SUPERTYPE OF ( ONEOF ( revolved_area_solid, extruded_area_solid, surface_curve_swept_area_solid ) )
19449    SUBTYPE OF ( solid_model );
19450      swept_area  : curve_bounded_surface;
19451    WHERE
19452      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( swept_area.basis_surface ) );
19453  END_ENTITY;
19454
19455  ENTITY swept_curve_surface_geometric_constraint
19456    SUBTYPE OF ( explicit_geometric_constraint );
19457      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF surface;
19458      SELF\explicit_constraint.reference_elements : SET [1 : 1] OF swept_surface_or_solid;
19459  END_ENTITY;
19460
19461  ENTITY swept_disk_solid
19462    SUBTYPE OF ( solid_model );
19463      directrix     : curve;
19464      radius        : positive_length_measure;
19465      inner_radius  : OPTIONAL positive_length_measure;
19466      start_param   : REAL;
19467      end_param     : REAL;
19468    WHERE
19469      wr1: ( directrix.dim = 3 );
19470      wr2: ( ( NOT EXISTS( inner_radius ) ) OR ( radius > inner_radius ) );
19471  END_ENTITY;
19472
19473  ENTITY swept_face_solid
19474    SUPERTYPE OF ( ONEOF ( extruded_face_solid, revolved_face_solid ) )
19475    SUBTYPE OF ( solid_model );
19476      swept_face  : face_surface;
19477    WHERE
19478      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( swept_face.face_geometry ) );
19479  END_ENTITY;
19480
19481  ENTITY swept_point_curve_geometric_constraint
19482    SUBTYPE OF ( explicit_geometric_constraint );
19483      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve;
19484      SELF\explicit_constraint.reference_elements : SET [1 : 1] OF swept_face_solid;
19485  END_ENTITY;
19486
19487  ENTITY swept_surface
19488    SUPERTYPE OF ( ONEOF ( surface_of_linear_extrusion, surface_of_revolution ) )
19489    SUBTYPE OF ( surface );
19490      swept_curve  : curve;
19491  END_ENTITY;
19492
19493  ENTITY symbol
19494    SUBTYPE OF ( representation_item );
19495  END_ENTITY;
19496
19497  ENTITY symbol_colour;
19498      colour_of_symbol  : colour;
19499  END_ENTITY;
19500
19501  ENTITY symbol_representation
19502    SUBTYPE OF ( representation );
19503  END_ENTITY;
19504
19505  ENTITY symbol_representation_map
19506    SUBTYPE OF ( representation_map );
19507      SELF\representation_map.mapped_representation : symbol_representation;
19508      SELF\representation_map.mapping_origin : axis2_placement;
19509    WHERE
19510      wr1: ( SIZEOF( QUERY ( mi <* SELF\representation_map.map_usage | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19511               + 'ANNOTATION_SYMBOL'  IN TYPEOF( mi ) ) ) ) ) = 0 );
19512  END_ENTITY;
19513
19514  ENTITY symbol_style
19515    SUBTYPE OF ( founded_item );
19516      name             : label;
19517      style_of_symbol  : symbol_style_select;
19518  END_ENTITY;
19519
19520  ENTITY symbol_target
19521    SUBTYPE OF ( geometric_representation_item );
19522      placement  : axis2_placement;
19523      x_scale    : positive_ratio_measure;
19524      y_scale    : positive_ratio_measure;
19525  END_ENTITY;
19526
19527  ENTITY symmetric_shape_aspect
19528    SUBTYPE OF ( shape_aspect );
19529    INVERSE
19530      basis_relationships : SET [1 : ?] OF shape_aspect_deriving_relationship FOR related_shape_aspect;
19531  END_ENTITY;
19532
19533  ENTITY symmetry_geometric_constraint
19534    SUBTYPE OF ( explicit_geometric_constraint );
19535      SELF\explicit_constraint.constrained_elements : SET [2 : 2] OF geometric_representation_item;
19536      mirror_element                         : linear_geometry_constraint_element;
19537    WHERE
19538      wr1: ( SIZEOF( SELF\explicit_constraint.reference_elements ) = 0 );
19539      wr2: ( SIZEOF( TYPEOF( mirror_element ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION',
19540               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' ] ) = 0 );
19541      wr3: ( NOT ( ( SELF\geometric_representation_item.dim = 2 ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE'
19542               IN TYPEOF( mirror_element ) ) ) );
19543  END_ENTITY;
19544
19545  ENTITY symmetry_tolerance
19546    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
19547  END_ENTITY;
19548
19549  ENTITY table_representation_item
19550    SUBTYPE OF ( compound_representation_item );
19551    WHERE
19552      wr1: ( SIZEOF( QUERY ( itet <* SELF\compound_representation_item.item_element | ( NOT (
19553               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROW_REPRESENTATION_ITEM'  IN TYPEOF( itet ) ) ) ) ) = 0 );
19554  END_ENTITY;
19555
19556  ENTITY tactile_appearance_representation
19557    SUBTYPE OF ( representation );
19558    WHERE
19559      wr1: ( SIZEOF( QUERY ( i <* SELF.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19560               'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'VALUE_RANGE'] * TYPEOF( i ) )
19561               <> 1 ) ) ) = 0 );
19562      wr2: ( SIZEOF( QUERY ( i <* SELF.items | ( name = 'depth' ) ) ) <= 1 );
19563      wr3: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.' +
19564               'USED_REPRESENTATION' ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( SELF,
19565               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION' )
19566               | ( SIZEOF( QUERY ( gpa <* USEDIN( pdr.definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19567               'GENERAL_PROPERTY_ASSOCIATION.'  + 'DERIVED_DEFINITION' ) | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19568               + 'GENERAL_PROPERTY' ) IN TYPEOF( gpa.base_definition ) ) AND ( gpa\general_property_association.base_definition\
19569               general_property.name = 'surface_condition' ) ) ) ) = 1 ) ) ) = 1 ) );
19570  END_ENTITY;
19571
19572  ENTITY tagged_text_format
19573    SUBTYPE OF ( representation_context );
19574  END_ENTITY;
19575
19576  ENTITY tagged_text_item
19577    SUBTYPE OF ( descriptive_representation_item );
19578  END_ENTITY;
19579
19580  ENTITY tan_function
19581    SUBTYPE OF ( unary_function_call );
19582  END_ENTITY;
19583
19584  ENTITY tangent
19585    SUBTYPE OF ( derived_shape_aspect );
19586    WHERE
19587      wr1: ( SIZEOF( SELF\derived_shape_aspect.deriving_relationships ) = 1 );
19588  END_ENTITY;
19589
19590  ENTITY tangent_assembly_constraint
19591    SUBTYPE OF ( binary_assembly_constraint, tangent_geometric_constraint );
19592  END_ENTITY;
19593
19594  ENTITY tangent_geometric_constraint
19595    SUBTYPE OF ( explicit_geometric_constraint );
19596      SELF\explicit_constraint.constrained_elements : SET [1 : ?] OF curve_or_surface_constraint_element;
19597      SELF\explicit_constraint.reference_elements : SET [0 : ?] OF curve_or_surface_constraint_element;
19598      near_points                            : SET [0 : ?] OF near_point_relationship;
19599      tangent_contact                        : tangent_contact_type;
19600    WHERE
19601      wr1: ( ( SIZEOF( SELF\explicit_constraint.reference_elements ) > 0 ) OR ( SIZEOF( SELF\explicit_constraint.
19602               constrained_elements ) = 2 ) );
19603      wr2: ( NOT ( ( SELF\geometric_representation_item.dim = 2 ) AND ( tangent_contact = surface_contact ) ) );
19604      wr3: ( SIZEOF( QUERY ( q <* near_points | ( NOT ( q\representation_item_relationship.relating_representation_item IN SELF\
19605               explicit_constraint.reference_elements ) ) ) ) = 0 );
19606  END_ENTITY;
19607
19608  ENTITY taper
19609    SUBTYPE OF ( shape_aspect );
19610    WHERE
19611      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
19612      wr2: ( SELF.description IN [ 'angle taper', 'diameter taper', 'directed taper'] );
19613      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19614               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19615               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19616               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
19617      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19618               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19619               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19620               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
19621               used_representation.items ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19622      wr5: ( ( NOT ( SELF.description = 'angle taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
19623               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
19624               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19625               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19626               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19627               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19628               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
19629               * TYPEOF( it ) ) = 2 ) AND ( it.name = 'taper angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
19630      wr6: ( ( NOT ( SELF.description = 'diameter taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
19631               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
19632               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19633               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19634               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19635               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19636               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19637               TYPEOF( it ) ) = 2 ) AND ( it.name = 'final diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
19638      wr7: ( ( NOT ( SELF.description = 'directed taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
19639               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
19640               QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19641               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19642               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19643               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19644               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
19645               * TYPEOF( it ) ) = 2 ) AND ( it.name = 'angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
19646      wr8: ( ( NOT ( SELF.description = 'directed taper' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
19647               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
19648               QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'
19649               + 'DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' IN
19650               TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name = 'direction' ) ) ) ) = 1 ) ) ) ) = 0 ) );
19651  END_ENTITY;
19652
19653  ENTITY tee_profile
19654    SUBTYPE OF ( shape_aspect );
19655    WHERE
19656      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
19657      wr2 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19658                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19659                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19660                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
19661      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19662                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19663                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19664                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
19665                used_representation.items ) >= 9 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 10 ) ) ) ) = 0 ) ) ) )
19666                = 0 );
19667      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19668                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19669                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19670                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
19671                pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'width' ) OR ( srwp_i.name =
19672                'depth'  ) OR ( srwp_i.name = 'cross bar width' ) OR ( srwp_i.name = 'cross bar depth' ) OR ( srwp_i.name =
19673                'first offset'  ) OR ( srwp_i.name = 'second offset' ) OR ( srwp_i.name = 'first angle' ) OR ( srwp_i.name =
19674                'second angle'  ) OR ( srwp_i.name = 'radius' ) ) ) ) = SIZEOF( pdr.used_representation.items ) ) ) ) ) = 1 ) ) )
19675                = 1 );
19676      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19677                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19678                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19679                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19680                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
19681                IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19682      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19683                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19684                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19685                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19686                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19687                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19688                TYPEOF( it ) ) = 2 ) AND ( it.name = 'width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19689      wr7 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19690                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19691                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19692                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19693                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19694                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19695                TYPEOF( it ) ) = 2 ) AND ( it.name = 'depth' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19696      wr8 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19697                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19698                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19699                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19700                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19701                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19702                TYPEOF( it ) ) = 2 ) AND ( it.name = 'cross bar width' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19703      wr9 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19704                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19705                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19706                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19707                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19708                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19709                TYPEOF( it ) ) = 2 ) AND ( it.name = 'cross bar depth' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19710      wr10: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19711                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19712                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19713                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19714                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19715                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19716                TYPEOF( it ) ) = 2 ) AND ( it.name = 'first offset' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19717      wr11: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19718                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19719                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19720                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19721                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19722                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19723                TYPEOF( it ) ) = 2 ) AND ( it.name = 'second offset' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19724      wr12: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19725                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19726                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19727                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19728                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19729                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
19730                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'first angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19731      wr13: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19732                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19733                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19734                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19735                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19736                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
19737                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'second angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19738      wr14: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19739                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19740                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19741                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
19742                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19743                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
19744                TYPEOF( it ) ) = 2 ) AND ( it.name = 'radius' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
19745      wr15: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
19746                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19747                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19748                + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
19749                'profile limit'  ) ) ) ) <= 1 ) ) ) ) = 0 );
19750  END_ENTITY;
19751
19752  ENTITY terminator_symbol
19753    SUBTYPE OF ( annotation_symbol_occurrence );
19754      annotated_curve  : annotation_curve_occurrence;
19755  END_ENTITY;
19756
19757  ENTITY tessellated_annotation_occurrence
19758    SUBTYPE OF ( annotation_occurrence );
19759      SELF\styled_item.item  : tessellated_geometric_set;
19760  END_ENTITY;
19761
19762  ENTITY tessellated_connecting_edge
19763    SUBTYPE OF ( tessellated_edge );
19764      smooth            : LOGICAL;
19765      face1             : tessellated_face;
19766      face2             : tessellated_face;
19767      line_strip_face1  : LIST [2 : ?] OF INTEGER;
19768      line_strip_face2  : LIST [2 : ?] OF INTEGER;
19769    WHERE
19770      wr1: ( SIZEOF( line_strip_face1 ) = SIZEOF( line_strip_face2 ) );
19771      wr2: ( SIZEOF( line_strip_face1 ) = SIZEOF( SELF\tessellated_edge.line_strip ) );
19772  END_ENTITY;
19773
19774  ENTITY tessellated_curve_set
19775    SUBTYPE OF ( tessellated_item );
19776      coordinates  : coordinates_list;
19777      line_strips  : LIST [1 : ?] OF LIST [2 : ?] OF INTEGER;
19778  END_ENTITY;
19779
19780  ENTITY tessellated_edge
19781    SUBTYPE OF ( tessellated_structured_item );
19782      coordinates     : coordinates_list;
19783      geometric_link  : OPTIONAL edge_or_curve;
19784      line_strip      : LIST [2 : ?] OF INTEGER;
19785  END_ENTITY;
19786
19787  ENTITY tessellated_face
19788    ABSTRACT SUPERTYPE OF ( ONEOF ( triangulated_face, complex_triangulated_face ) )
19789    SUBTYPE OF ( tessellated_structured_item );
19790      coordinates     : coordinates_list;
19791      pnmax           : INTEGER;
19792      normals         : LIST [0 : ?] OF LIST [3 : 3] OF REAL;
19793      geometric_link  : OPTIONAL face_or_surface;
19794    WHERE
19795      wr1: ( ( SIZEOF( normals ) = 0 ) OR ( SIZEOF( normals ) = 1 ) OR ( SIZEOF( normals ) = pnmax ) );
19796  END_ENTITY;
19797
19798  ENTITY tessellated_geometric_set
19799    SUBTYPE OF ( tessellated_item );
19800      children  : SET [1 : ?] OF tessellated_item;
19801  END_ENTITY;
19802
19803  ENTITY tessellated_item
19804    ABSTRACT SUPERTYPE OF ( ONEOF ( coordinates_list, tessellated_solid, tessellated_shell, tessellated_wire,
19805        tessellated_geometric_set, tessellated_curve_set, tessellated_point_set, tessellated_surface_set,
19806        tessellated_structured_item ) )
19807    SUBTYPE OF ( geometric_representation_item );
19808    WHERE
19809      wr1: ( SIZEOF( QUERY ( using_rep <* using_representations( SELF ) | ( NOT (
19810               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION'  IN TYPEOF( using_rep ) ) ) ) )
19811               = 0 );
19812  END_ENTITY;
19813
19814  ENTITY tessellated_point_set
19815    SUBTYPE OF ( tessellated_item );
19816      coordinates  : coordinates_list;
19817      point_list   : LIST [1 : ?] OF INTEGER;
19818  END_ENTITY;
19819
19820  ENTITY tessellated_shape_representation
19821    SUBTYPE OF ( shape_representation );
19822      SELF\representation.items  : SET [1 : ?] OF tessellated_item;
19823    WHERE
19824      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF( SELF\representation.
19825               context_of_items ) );
19826  END_ENTITY;
19827
19828  ENTITY tessellated_shell
19829    SUBTYPE OF ( tessellated_item );
19830      items             : SET [1 : ?] OF tessellated_structured_item;
19831      topological_link  : OPTIONAL connected_face_set;
19832  END_ENTITY;
19833
19834  ENTITY tessellated_solid
19835    SUBTYPE OF ( tessellated_item );
19836      items           : SET [1 : ?] OF tessellated_structured_item;
19837      geometric_link  : OPTIONAL manifold_solid_brep;
19838  END_ENTITY;
19839
19840  ENTITY tessellated_structured_item
19841    SUPERTYPE OF ( ONEOF ( tessellated_face, tessellated_edge, tessellated_vertex ) )
19842    SUBTYPE OF ( tessellated_item );
19843  END_ENTITY;
19844
19845  ENTITY tessellated_surface_set
19846    ABSTRACT SUPERTYPE OF ( ONEOF ( triangulated_surface_set, complex_triangulated_surface_set ) )
19847    SUBTYPE OF ( tessellated_item );
19848      coordinates  : coordinates_list;
19849      pnmax        : INTEGER;
19850      normals      : LIST [0 : ?] OF LIST [3 : 3] OF REAL;
19851    WHERE
19852      wr1: ( ( SIZEOF( normals ) = 0 ) OR ( SIZEOF( normals ) = 1 ) OR ( SIZEOF( normals ) = pnmax ) );
19853  END_ENTITY;
19854
19855  ENTITY tessellated_vertex
19856    SUBTYPE OF ( tessellated_structured_item );
19857      coordinates       : coordinates_list;
19858      topological_link  : OPTIONAL vertex_point;
19859      point_index       : INTEGER;
19860  END_ENTITY;
19861
19862  ENTITY tessellated_wire
19863    SUBTYPE OF ( tessellated_item );
19864      items                 : SET [1 : ?] OF tessellated_edge_or_vertex;
19865      geometric_model_link  : OPTIONAL path_or_composite_curve;
19866  END_ENTITY;
19867
19868  ENTITY text_font;
19869      id           : identifier;
19870      name         : label;
19871      description  : text;
19872    INVERSE
19873      glyphs : SET [1 : ?] OF character_glyph_font_usage FOR font;
19874  END_ENTITY;
19875
19876  ENTITY text_font_family;
19877      id           : identifier;
19878      name         : label;
19879      description  : text;
19880    INVERSE
19881      fonts : SET [1 : ?] OF text_font_in_family FOR family;
19882  END_ENTITY;
19883
19884  ENTITY text_font_in_family;
19885      font    : text_font;
19886      family  : text_font_family;
19887  END_ENTITY;
19888
19889  ENTITY text_literal
19890    SUBTYPE OF ( geometric_representation_item );
19891      literal    : presentable_text;
19892      placement  : axis2_placement;
19893      alignment  : text_alignment;
19894      path       : text_path;
19895      font       : font_select;
19896  END_ENTITY;
19897
19898  ENTITY text_literal_with_associated_curves
19899    SUBTYPE OF ( text_literal );
19900      associated_curves  : SET [1 : ?] OF curve;
19901  END_ENTITY;
19902
19903  ENTITY text_literal_with_blanking_box
19904    SUBTYPE OF ( text_literal );
19905      blanking  : planar_box;
19906  END_ENTITY;
19907
19908  ENTITY text_literal_with_delineation
19909    SUBTYPE OF ( text_literal );
19910      delineation  : text_delineation;
19911  END_ENTITY;
19912
19913  ENTITY text_literal_with_extent
19914    SUBTYPE OF ( text_literal );
19915      extent  : planar_extent;
19916  END_ENTITY;
19917
19918  ENTITY text_string_representation
19919    SUBTYPE OF ( representation );
19920      SELF\representation.items  : SET [1 : ?] OF text_string_representation_item;
19921    WHERE
19922      wr1: ( SIZEOF( QUERY ( item <* SELF\representation.items | ( NOT ( SIZEOF( [
19923               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
19924               + 'ANNOTATION_TEXT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT_CHARACTER',
19925               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEFINED_CHARACTER_GLYPH' ,
19926               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' ] * TYPEOF( item ) ) = 0 ) ) ) ) >= 1 );
19927      wr2: ( SIZEOF( QUERY ( a2p <* QUERY ( item <* SELF\representation.items | (
19928               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT'  IN TYPEOF( item ) ) ) | ( NOT ( ( SIZEOF(
19929               QUERY ( at <* QUERY ( item <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19930               'ANNOTATION_TEXT'  ) IN TYPEOF( item ) ) ) | ( at\mapped_item.mapping_target :=: a2p ) ) ) >= 1 ) OR ( SIZEOF(
19931               QUERY ( atc <* QUERY ( item <* SELF\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
19932               'ANNOTATION_TEXT_CHARACTER' ) IN TYPEOF( item ) ) ) | ( atc\mapped_item.mapping_target :=: a2p ) ) ) >= 1 ) ) ) ) )
19933               = 0 );
19934  END_ENTITY;
19935
19936  ENTITY text_style
19937    SUBTYPE OF ( founded_item );
19938      name                  : label;
19939      character_appearance  : character_style_select;
19940  END_ENTITY;
19941
19942  ENTITY text_style_for_defined_font;
19943      text_colour  : colour;
19944  END_ENTITY;
19945
19946  ENTITY text_style_with_box_characteristics
19947    SUBTYPE OF ( text_style );
19948      characteristics  : SET [1 : 4] OF box_characteristic_select;
19949    WHERE
19950      wr1: ( SIZEOF( QUERY ( c1 <* SELF.characteristics | ( SIZEOF( QUERY ( c2 <* ( SELF.characteristics - c1 ) | ( TYPEOF( c1 )
19951               = TYPEOF( c2 ) ) ) ) > 0 ) ) ) = 0 );
19952  END_ENTITY;
19953
19954  ENTITY text_style_with_mirror
19955    SUBTYPE OF ( text_style );
19956      mirror_placement  : axis2_placement;
19957  END_ENTITY;
19958
19959  ENTITY text_style_with_spacing
19960    SUBTYPE OF ( text_style );
19961      character_spacing  : character_spacing_select;
19962  END_ENTITY;
19963
19964  ENTITY thermal_component
19965    SUBTYPE OF ( assembly_component );
19966  END_ENTITY;
19967
19968  ENTITY thermal_resistance_measure_with_unit
19969    SUBTYPE OF ( measure_with_unit );
19970    WHERE
19971      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMAL_RESISTANCE_UNIT' IN TYPEOF( SELF\measure_with_unit.
19972               unit_component ) );
19973  END_ENTITY;
19974
19975  ENTITY thermal_resistance_unit
19976    SUBTYPE OF ( derived_unit );
19977    WHERE
19978      wr1: ( derive_dimensional_exponents( SELF ) = dimensional_exponents( -1, -1, -3, 0, 1, 0, 0 ) );
19979  END_ENTITY;
19980
19981  ENTITY thermodynamic_temperature_measure_with_unit
19982    SUBTYPE OF ( measure_with_unit );
19983    WHERE
19984      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_UNIT' IN TYPEOF( SELF\measure_with_unit.
19985               unit_component ) );
19986  END_ENTITY;
19987
19988  ENTITY thermodynamic_temperature_unit
19989    SUBTYPE OF ( named_unit );
19990    WHERE
19991      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
19992               named_unit.dimensions.time_exponent = 0 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
19993               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 1 ) AND ( SELF\named_unit.dimensions.
19994               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
19995  END_ENTITY;
19996
19997  ENTITY thickened_face_solid
19998    SUBTYPE OF ( solid_model );
19999      base_element  : generalized_surface_select;
20000      offset1       : length_measure;
20001      offset2       : length_measure;
20002    WHERE
20003      wr1: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF( base_element ) ) AND ( NOT (
20004               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_SURFACE'  IN TYPEOF( base_element ) ) ) ) );
20005      wr2: ( offset1 <> offset2 );
20006  END_ENTITY;
20007
20008  ENTITY thickness_laminate_table
20009    SUBTYPE OF ( zone_structural_makeup );
20010  END_ENTITY;
20011
20012  ENTITY thread
20013    SUBTYPE OF ( feature_definition );
20014    WHERE
20015      wr1 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20016                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20017                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20018                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( 8 <= SIZEOF( pdr.
20019                used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.items ) <= 11 ) ) ) ) = 1 ) ) ) = 1 );
20020      wr2 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20021                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20022                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20023                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20024                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20025                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20026                TYPEOF( it ) ) = 2 ) AND ( it.name = 'major diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20027      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20028                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20029                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20030                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20031                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20032                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20033                TYPEOF( it ) ) = 2 ) AND ( it.name = 'minor diameter' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20034      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20035                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20036                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20037                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20038                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20039                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20040                TYPEOF( it ) ) = 2 ) AND ( it.name = 'pitch diameter' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20041      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20042                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20043                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20044                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20045                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20046                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE_WITH_UNIT'] *
20047                TYPEOF( it ) ) = 2 ) AND ( it.name = 'number of threads' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20048      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20049                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20050                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20051                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20052                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20053                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'fit class' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
20054                = 0 );
20055      wr7 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20056                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20057                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20058                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20059                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20060                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'form' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20061      wr8 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20062                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20063                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20064                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20065                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20066                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'hand' ) AND ( it.description IN [ 'left',
20067                'right' ] ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20068      wr9 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20069                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20070                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20071                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20072                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20073                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'qualifier' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) )
20074                = 0 );
20075      wr10: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20076                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20077                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20078                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20079                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20080                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'thread side' ) AND ( ( it.description =
20081                'internal'  ) OR ( it.description = 'external' ) ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20082      wr11: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20083                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20084                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20085                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20086                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20087                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20088                TYPEOF( it ) ) = 2 ) AND ( it.name = 'crest' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20089      wr12: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20090                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20091                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
20092                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
20093                'partial area occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
20094                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
20095                description = 'applied area usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20096                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20097                + 'APPLIED_AREA'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
20098      wr13: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20099                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20100                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
20101                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( SIZEOF( QUERY ( sdr <*
20102                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
20103                + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'applied shape' ) AND (
20104                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
20105                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) )
20106                = 1 ) ) ) ) = 0 );
20107      wr14: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20108                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20109                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20110                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20111                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20112                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'fit class 2' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) )
20113                = 0 );
20114      wr15: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20115                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20116                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20117                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20118                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20119                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20120                TYPEOF( it ) ) = 2 ) AND ( it.name = 'nominal size' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20121      wr16: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20122                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20123                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
20124                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
20125                'thread runout'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
20126                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
20127                description = 'thread runout usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20128                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20129                + 'THREAD_RUNOUT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) <= 1 ) ) ) ) = 1 ) ) ) ) = 0 );
20130  END_ENTITY;
20131
20132  ENTITY thread_runout
20133    SUBTYPE OF ( shape_aspect );
20134    WHERE
20135      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( SELF.of_shape ) );
20136      wr2: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20137               | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20138               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20139               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
20140      wr3: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20141               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20142               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20143               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( impl_rep.
20144               used_representation.items ) = 3 ) ) ) ) = 0 ) ) ) ) = 0 );
20145      wr4: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20146               | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20147               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20148               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
20149               pdr.used_representation.items | ( NOT ( srwp_i.name IN [ 'length of runout', 'pitch or dimension',
20150               'included or extra' ] ) ) ) ) > 0 ) ) ) ) = 0 ) ) ) = 0 );
20151      wr5: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20152               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20153               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20154               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20155               QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20156               + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20157               TYPEOF( it ) ) = 2 ) AND ( it.name = 'length of runout' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) <= 1 );
20158      wr6: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20159               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20160               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20161               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20162               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20163               + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'pitch or dimension' ) AND ( it.description
20164               IN [ 'pitch', 'pitch or dimension'] ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20165      wr7: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20166               | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20167               + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20168               + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20169               QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20170               + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'included or extra' ) AND ( it.description
20171               IN [ 'included', 'extra'] ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20172  END_ENTITY;
20173
20174  ENTITY time_interval;
20175      id           : identifier;
20176      name         : label;
20177      description  : OPTIONAL text;
20178  END_ENTITY;
20179
20180  ENTITY time_interval_assignment
20181    ABSTRACT SUPERTYPE;
20182      assigned_time_interval  : time_interval;
20183      role                    : time_interval_role;
20184  END_ENTITY;
20185
20186  ENTITY time_interval_based_effectivity
20187    SUBTYPE OF ( effectivity );
20188      effectivity_period  : time_interval;
20189  END_ENTITY;
20190
20191  ENTITY time_interval_relationship;
20192      name                    : label;
20193      description             : OPTIONAL text;
20194      relating_time_interval  : time_interval;
20195      related_time_interval   : time_interval;
20196  END_ENTITY;
20197
20198  ENTITY time_interval_role;
20199      name         : label;
20200      description  : OPTIONAL text;
20201  END_ENTITY;
20202
20203  ENTITY time_interval_with_bounds
20204    SUBTYPE OF ( time_interval );
20205      primary_bound    : OPTIONAL date_time_or_event_occurrence;
20206      secondary_bound  : OPTIONAL date_time_or_event_occurrence;
20207      duration         : OPTIONAL time_measure_with_unit;
20208    WHERE
20209      wr1: ( NOT ( EXISTS( secondary_bound ) AND EXISTS( duration ) ) );
20210      wr2: ( EXISTS( primary_bound ) OR EXISTS( secondary_bound ) );
20211  END_ENTITY;
20212
20213  ENTITY time_measure_with_unit
20214    SUBTYPE OF ( measure_with_unit );
20215    WHERE
20216      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
20217  END_ENTITY;
20218
20219  ENTITY time_unit
20220    SUBTYPE OF ( named_unit );
20221    WHERE
20222      wr1: ( ( SELF\named_unit.dimensions.length_exponent = 0 ) AND ( SELF\named_unit.dimensions.mass_exponent = 0 ) AND ( SELF\
20223               named_unit.dimensions.time_exponent = 1 ) AND ( SELF\named_unit.dimensions.electric_current_exponent = 0 ) AND (
20224               SELF\named_unit.dimensions.thermodynamic_temperature_exponent = 0 ) AND ( SELF\named_unit.dimensions.
20225               amount_of_substance_exponent = 0 ) AND ( SELF\named_unit.dimensions.luminous_intensity_exponent = 0 ) );
20226  END_ENTITY;
20227
20228  ENTITY tolerance_value;
20229      lower_bound  : measure_with_unit;
20230      upper_bound  : measure_with_unit;
20231    DERIVE
20232      ubvc  : REAL := upper_bound\measure_with_unit.value_component;
20233      lbvc  : REAL := lower_bound\measure_with_unit.value_component;
20234    WHERE
20235      wr1: ( ubvc > lbvc );
20236      wr2: ( upper_bound\measure_with_unit.unit_component = lower_bound\measure_with_unit.unit_component );
20237  END_ENTITY;
20238
20239  ENTITY tolerance_zone
20240    SUBTYPE OF ( shape_aspect );
20241      defining_tolerance  : SET [1 : ?] OF tolerance_zone_target;
20242      form                : tolerance_zone_form;
20243  END_ENTITY;
20244
20245  ENTITY tolerance_zone_definition
20246    SUPERTYPE OF ( ONEOF ( projected_zone_definition, non_uniform_zone_definition, runout_zone_definition ) );
20247      zone        : tolerance_zone;
20248      boundaries  : SET [0 : ?] OF shape_aspect;
20249  END_ENTITY;
20250
20251  ENTITY tolerance_zone_form;
20252      name  : label;
20253  END_ENTITY;
20254
20255  ENTITY topological_representation_item
20256    SUPERTYPE OF ( ONEOF ( vertex, edge, face_bound, face, vertex_shell, wire_shell, connected_edge_set, connected_face_set, loop
20257        ANDOR path ) )
20258    SUBTYPE OF ( representation_item );
20259  END_ENTITY;
20260
20261  ENTITY topology_related_to_multiply_defined_geometry
20262    ABSTRACT SUPERTYPE OF ( ONEOF ( multiply_defined_faces, multiply_defined_vertices, multiply_defined_edges ) )
20263    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
20264  END_ENTITY;
20265
20266  ENTITY topology_related_to_nearly_degenerate_geometry
20267    ABSTRACT SUPERTYPE OF ( ONEOF ( short_length_edge, small_area_face, entirely_narrow_face ) )
20268    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
20269  END_ENTITY;
20270
20271  ENTITY topology_related_to_overlapping_geometry
20272    ABSTRACT SUPERTYPE OF ( ONEOF ( partly_overlapping_faces, partly_overlapping_edges ) )
20273    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
20274  END_ENTITY;
20275
20276  ENTITY topology_related_to_self_intersecting_geometry
20277    ABSTRACT SUPERTYPE OF ( ONEOF ( self_intersecting_loop, self_intersecting_shell, intersecting_connected_face_sets ) )
20278    SUBTYPE OF ( inapt_topology_and_geometry_relationship );
20279  END_ENTITY;
20280
20281  ENTITY toroidal_surface
20282    SUBTYPE OF ( elementary_surface );
20283      major_radius  : positive_length_measure;
20284      minor_radius  : positive_length_measure;
20285  END_ENTITY;
20286
20287  ENTITY torus
20288    SUBTYPE OF ( geometric_representation_item );
20289      position      : axis1_placement;
20290      major_radius  : positive_length_measure;
20291      minor_radius  : positive_length_measure;
20292    WHERE
20293      wr1: ( major_radius > minor_radius );
20294  END_ENTITY;
20295
20296  ENTITY total_runout_tolerance
20297    SUBTYPE OF ( geometric_tolerance_with_datum_reference );
20298  END_ENTITY;
20299
20300  ENTITY track_blended_solid
20301    ABSTRACT SUPERTYPE
20302    SUBTYPE OF ( edge_blended_solid );
20303    WHERE
20304      wr1: check_continuous_edges( SELF\edge_blended_solid.blended_edges );
20305  END_ENTITY;
20306
20307  ENTITY track_blended_solid_with_end_conditions
20308    SUBTYPE OF ( track_blended_solid );
20309      end_conditions  : LIST [2 : 2] OF blend_end_condition_select;
20310    WHERE
20311      wr1: ( SIZEOF( TYPEOF( SELF ) * [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_CONSTANT_RADIUS_EDGE_BLEND',
20312               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_VARIABLE_RADIUS_EDGE_BLEND' ,
20313               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_WITH_CHAMFERED_EDGES' ] ) = 1 );
20314      wr2: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF( end_conditions[1] ) ) AND (
20315               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX'  IN TYPEOF( end_conditions[2] ) ) ) );
20316      wr3: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF( end_conditions[1] ) ) AND ( NOT ( (
20317               end_conditions[1] :=: SELF\edge_blended_solid.blended_edges[1].edge_start ) XOR ( end_conditions[1] :=: SELF\
20318               edge_blended_solid.blended_edges[1].edge_end ) ) ) ) );
20319      wr4: ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX' IN TYPEOF( end_conditions[2] ) ) AND ( NOT ( (
20320               end_conditions[2] :=: SELF\edge_blended_solid.blended_edges[HIINDEX( SELF\edge_blended_solid.blended_edges )].
20321               edge_start ) XOR ( end_conditions[2] :=: SELF\edge_blended_solid.blended_edges[HIINDEX( SELF\edge_blended_solid.
20322               blended_edges )].edge_end ) ) ) ) );
20323  END_ENTITY;
20324
20325  ENTITY transformation_with_derived_angle
20326    SUPERTYPE OF ( ONEOF ( draped_defined_transformation, laid_defined_transformation ) )
20327    SUBTYPE OF ( item_defined_transformation );
20328      SELF\item_defined_transformation.transform_item_1 : angle_direction_reference_with_a2p3d_select;
20329      SELF\item_defined_transformation.transform_item_2 : axis2_placement_3d;
20330    DERIVE
20331      orientation_angle  : plane_angle_measure := derive_angle( SELF\item_defined_transformation.transform_item_1, SELF\
20332                             item_defined_transformation.transform_item_2 );
20333    WHERE
20334      wr1: ( ( SELF\item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[1] = SELF\
20335               item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[1] ) AND ( SELF\
20336               item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[2] = SELF\
20337               item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[2] ) AND ( SELF\
20338               item_defined_transformation.transform_item_1\axis2_placement_3d.p[3].direction_ratios[3] = SELF\
20339               item_defined_transformation.transform_item_2\axis2_placement_3d.p[3].direction_ratios[3] ) );
20340  END_ENTITY;
20341
20342  ENTITY transition_feature
20343    SUPERTYPE OF ( ONEOF ( chamfer, edge_round, fillet ) )
20344    SUBTYPE OF ( shape_aspect );
20345    WHERE
20346      wr1: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION',
20347               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_FEATURE' ] * TYPEOF( SELF.of_shape.definition ) ) = 1 );
20348      wr2: ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHAMFER',
20349               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE_ROUND' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20350               + 'FILLET' ] * TYPEOF( SELF ) ) = 1 );
20351  END_ENTITY;
20352
20353  ENTITY triangulated_face
20354    SUBTYPE OF ( tessellated_face );
20355      pnindex    : LIST [0 : ?] OF INTEGER;
20356      triangles  : LIST [1 : ?] OF LIST [3 : 3] OF INTEGER;
20357    WHERE
20358      wr1: ( ( SIZEOF( pnindex ) = 0 ) OR ( SIZEOF( pnindex ) = SELF\tessellated_face.pnmax ) );
20359      wr2: ( NOT ( ( SIZEOF( pnindex ) = 0 ) AND ( SELF\tessellated_face.pnmax <> coordinates.npoints ) ) );
20360  END_ENTITY;
20361
20362  ENTITY triangulated_surface_set
20363    SUBTYPE OF ( tessellated_surface_set );
20364      pnindex    : LIST [0 : ?] OF INTEGER;
20365      triangles  : LIST [1 : ?] OF LIST [3 : 3] OF INTEGER;
20366    WHERE
20367      wr1: ( ( SIZEOF( pnindex ) = 0 ) OR ( SIZEOF( pnindex ) = SELF\tessellated_surface_set.pnmax ) );
20368      wr2: ( NOT ( ( SIZEOF( pnindex ) = 0 ) AND ( SELF\tessellated_surface_set.pnmax <> coordinates.npoints ) ) );
20369  END_ENTITY;
20370
20371  ENTITY trimmed_curve
20372    SUBTYPE OF ( bounded_curve );
20373      basis_curve            : curve;
20374      trim_1                 : SET [1 : 2] OF trimming_select;
20375      trim_2                 : SET [1 : 2] OF trimming_select;
20376      sense_agreement        : BOOLEAN;
20377      master_representation  : trimming_preference;
20378    WHERE
20379      wr1: ( ( HIINDEX( trim_1 ) = 1 ) OR ( TYPEOF( trim_1[1] ) <> TYPEOF( trim_1[2] ) ) );
20380      wr2: ( ( HIINDEX( trim_2 ) = 1 ) OR ( TYPEOF( trim_2[1] ) <> TYPEOF( trim_2[2] ) ) );
20381  END_ENTITY;
20382
20383  ENTITY turned_knurl
20384    SUBTYPE OF ( feature_definition );
20385    WHERE
20386      wr1 : ( SELF\characterized_object.description IN [ 'diamond', 'diagonal', 'straight'] );
20387      wr2 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20388                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20389                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20390                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( 6 <= SIZEOF( pdr.
20391                used_representation.items ) ) AND ( SIZEOF( pdr.used_representation.items ) <= 9 ) ) ) ) = 1 ) ) ) = 1 );
20392      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20393                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20394                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20395                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20396                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20397                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20398                + 'COUNT_MEASURE'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'number of teeth' ) ) ) )
20399                <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20400      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20401                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20402                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20403                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20404                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20405                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20406                TYPEOF( it ) ) = 2 ) AND ( it.name = 'major diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20407      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20408                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20409                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20410                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20411                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20412                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20413                TYPEOF( it ) ) = 2 ) AND ( it.name = 'nominal diameter' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20414      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20415                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20416                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20417                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20418                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20419                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20420                TYPEOF( it ) ) = 2 ) AND ( it.name = 'tooth depth' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20421      wr7 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20422                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20423                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20424                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20425                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20426                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20427                TYPEOF( it ) ) = 2 ) AND ( it.name = 'root fillet' ) ) ) ) <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20428      wr8 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20429                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20430                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20431                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20432                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20433                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
20434                TYPEOF( it ) ) = 2 ) AND ( it.name = 'diametral pitch' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20435      wr9 : ( ( NOT ( SELF\characterized_object.description IN [ 'diamond', 'diagonal'] ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN(
20436                SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) | ( NOT ( SIZEOF(
20437                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20438                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20439                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20440                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20441                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
20442                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'helix angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) );
20443      wr10: ( ( NOT ( SELF\characterized_object.description = 'diagonal' ) ) OR ( SIZEOF( QUERY ( pd <* USEDIN( SELF,
20444                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
20445                QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20446                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20447                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20448                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20449                + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( it.name = 'helix hand' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) )
20450                = 0 ) );
20451      wr11: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20452                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20453                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
20454                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( ( sa_occ.description =
20455                'partial area occurrence'  ) AND ( SIZEOF( QUERY ( sdr <* QUERY ( sar <* USEDIN( sa_occ,
20456                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.RELATED_SHAPE_ASPECT'  ) | ( ( sar.
20457                description = 'applied area usage' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20458                + 'SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20459                + 'APPLIED_AREA'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 );
20460      wr12: ( SIZEOF( QUERY ( pds <* QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20461                + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20462                + 'PRODUCT_DEFINITION_SHAPE'  IN TYPEOF( pd ) ) ) | ( NOT ( SIZEOF( QUERY ( sa_occ <* USEDIN( pds,
20463                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE'  ) | ( SIZEOF( QUERY ( sdr <*
20464                QUERY ( sar <* USEDIN( sa_occ, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP.'
20465                + 'RELATED_SHAPE_ASPECT'  ) | ( ( sar.description = 'applied shape' ) AND (
20466                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINING_RELATIONSHIP'  IN TYPEOF( sar ) ) ) ) | (
20467                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT'  IN TYPEOF( sdr.relating_shape_aspect ) ) ) ) = 1 ) ) )
20468                = 1 ) ) ) ) = 0 );
20469  END_ENTITY;
20470
20471  ENTITY two_direction_repeat_factor
20472    SUBTYPE OF ( one_direction_repeat_factor );
20473      second_repeat_factor  : vector;
20474  END_ENTITY;
20475
20476  ENTITY type_qualifier;
20477      name  : label;
20478  END_ENTITY;
20479
20480  ENTITY unary_boolean_expression
20481    ABSTRACT SUPERTYPE OF ( ONEOF ( not_expression, odd_function ) )
20482    SUBTYPE OF ( boolean_expression, unary_generic_expression );
20483  END_ENTITY;
20484
20485  ENTITY unary_function_call
20486    ABSTRACT SUPERTYPE OF ( ONEOF ( abs_function, minus_function, sin_function, cos_function, tan_function, asin_function,
20487        acos_function, exp_function, log_function, log2_function, log10_function, square_root_function ) )
20488    SUBTYPE OF ( unary_numeric_expression );
20489  END_ENTITY;
20490
20491  ENTITY unary_generic_expression
20492    ABSTRACT SUPERTYPE
20493    SUBTYPE OF ( generic_expression );
20494      operand  : generic_expression;
20495  END_ENTITY;
20496
20497  ENTITY unary_numeric_expression
20498    ABSTRACT SUPERTYPE
20499    SUBTYPE OF ( numeric_expression, unary_generic_expression );
20500      SELF\unary_generic_expression.operand  : numeric_expression;
20501  END_ENTITY;
20502
20503  ENTITY unbound_parameter_environment
20504    SUBTYPE OF ( environment );
20505    WHERE
20506      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER' IN TYPEOF( SELF\environment.
20507               syntactic_representation ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20508               + 'UNBOUND_VARIATIONAL_PARAMETER_SEMANTICS'  IN TYPEOF( SELF\environment.semantics ) ) );
20509  END_ENTITY;
20510
20511  ENTITY unbound_variational_parameter
20512    SUBTYPE OF ( variational_parameter );
20513    WHERE
20514      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_PARAMETER_ENVIRONMENT' IN TYPEOF( SELF\generic_variable.
20515               interpretation ) );
20516  END_ENTITY;
20517
20518  ENTITY unbound_variational_parameter_semantics
20519    SUBTYPE OF ( variable_semantics );
20520  END_ENTITY;
20521
20522  ENTITY uncertainty_assigned_representation
20523    SUBTYPE OF ( representation );
20524      uncertainty  : SET [1 : ?] OF uncertainty_measure_with_unit;
20525  END_ENTITY;
20526
20527  ENTITY uncertainty_measure_with_unit
20528    SUBTYPE OF ( measure_with_unit );
20529      name         : label;
20530      description  : OPTIONAL text;
20531    WHERE
20532      wr1: valid_measure_value( SELF\measure_with_unit.value_component );
20533  END_ENTITY;
20534
20535  ENTITY uncertainty_qualifier
20536    SUPERTYPE OF ( ONEOF ( standard_uncertainty, qualitative_uncertainty ) );
20537      measure_name  : label;
20538      description   : text;
20539  END_ENTITY;
20540
20541  ENTITY unconstrained_pair
20542    SUBTYPE OF ( low_order_kinematic_pair );
20543    DERIVE
20544      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := TRUE;
20545      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := TRUE;
20546      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := TRUE;
20547      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := TRUE;
20548      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := TRUE;
20549      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
20550  END_ENTITY;
20551
20552  ENTITY unconstrained_pair_value
20553    SUBTYPE OF ( pair_value );
20554      SELF\pair_value.applies_to_pair  : unconstrained_pair;
20555      actual_placement                 : axis2_placement_3d;
20556  END_ENTITY;
20557
20558  ENTITY unequally_disposed_geometric_tolerance
20559    SUBTYPE OF ( geometric_tolerance );
20560      displacement  : length_measure_with_unit;
20561    WHERE
20562      wr1: ( ( 'NUMBER' IN TYPEOF( SELF\geometric_tolerance_with_defined_unit.unit_size\measure_with_unit.value_component ) ) AND
20563               ( SELF\geometric_tolerance_with_defined_unit.unit_size\measure_with_unit.value_component > 0 ) );
20564  END_ENTITY;
20565
20566  ENTITY uniform_curve
20567    SUBTYPE OF ( b_spline_curve );
20568  END_ENTITY;
20569
20570  ENTITY uniform_product_space
20571    SUBTYPE OF ( maths_space, generic_literal );
20572      base      : maths_space;
20573      exponent  : positive_integer;
20574    WHERE
20575      wr1: expression_is_constant( base );
20576      wr2: no_cyclic_space_reference( SELF, [] );
20577      wr3: ( base <> the_empty_space );
20578  END_ENTITY;
20579
20580  ENTITY uniform_resource_identifier
20581    SUBTYPE OF ( descriptive_representation_item );
20582  END_ENTITY;
20583
20584  ENTITY uniform_surface
20585    SUBTYPE OF ( b_spline_surface );
20586  END_ENTITY;
20587
20588  ENTITY universal_pair
20589    SUBTYPE OF ( low_order_kinematic_pair );
20590      input_skew_angle  : OPTIONAL plane_angle_measure;
20591    DERIVE
20592      SELF\low_order_kinematic_pair.t_x  : BOOLEAN := FALSE;
20593      SELF\low_order_kinematic_pair.t_y  : BOOLEAN := FALSE;
20594      SELF\low_order_kinematic_pair.t_z  : BOOLEAN := FALSE;
20595      SELF\low_order_kinematic_pair.r_x  : BOOLEAN := TRUE;
20596      SELF\low_order_kinematic_pair.r_y  : BOOLEAN := FALSE;
20597      SELF\low_order_kinematic_pair.r_z  : BOOLEAN := TRUE;
20598      skew_angle                         : plane_angle_measure := NVL( input_skew_angle, 0 );
20599    WHERE
20600      wr1: ( COS( plane_angle_for_pair_in_radian( SELF, skew_angle ) ) > 0 );
20601  END_ENTITY;
20602
20603  ENTITY universal_pair_value
20604    SUBTYPE OF ( pair_value );
20605      SELF\pair_value.applies_to_pair  : universal_pair;
20606      first_rotation_angle             : plane_angle_measure;
20607      second_rotation_angle            : plane_angle_measure;
20608  END_ENTITY;
20609
20610  ENTITY universal_pair_with_range
20611    SUBTYPE OF ( universal_pair );
20612      lower_limit_first_rotation   : OPTIONAL plane_angle_measure;
20613      upper_limit_first_rotation   : OPTIONAL plane_angle_measure;
20614      lower_limit_second_rotation  : OPTIONAL plane_angle_measure;
20615      upper_limit_second_rotation  : OPTIONAL plane_angle_measure;
20616    WHERE
20617      wr1: ( ( ( NOT EXISTS( lower_limit_first_rotation ) ) OR ( NOT EXISTS( upper_limit_first_rotation ) ) ) XOR (
20618               lower_limit_first_rotation < upper_limit_first_rotation ) );
20619      wr2: ( ( ( NOT EXISTS( lower_limit_second_rotation ) ) OR ( NOT EXISTS( upper_limit_second_rotation ) ) ) XOR (
20620               lower_limit_second_rotation < upper_limit_second_rotation ) );
20621  END_ENTITY;
20622
20623  ENTITY unused_patches
20624    SUBTYPE OF ( overcomplex_topology_and_geometry_relationship );
20625      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
20626    WHERE
20627      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_LOWER_VALUE_LIMIT' ) IN TYPEOF( SELF\
20628               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
20629               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' IN value_limit_type( SELF\
20630               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
20631      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COUNT_MEASURE' );
20632      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE'] );
20633      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
20634               'B_SPLINE_SURFACE_STRIP' ] );
20635      wr5: validate_accuracy_types( SELF, [] );
20636  END_ENTITY;
20637
20638  ENTITY unused_shape_element
20639    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
20640    WHERE
20641      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM'] );
20642  END_ENTITY;
20643
20644  ENTITY usage_association
20645    SUBTYPE OF ( action_method_relationship );
20646      SELF\action_method_relationship.relating_method : information_usage_right;
20647      SELF\action_method_relationship.related_method : information_usage_right;
20648    DERIVE
20649      related   : information_usage_right := SELF\action_method_relationship.related_method;
20650      relating  : information_usage_right := SELF\action_method_relationship.relating_method;
20651  END_ENTITY;
20652
20653  ENTITY user_defined_curve_font
20654    SUBTYPE OF ( curve_style_font, mapped_item );
20655  END_ENTITY;
20656
20657  ENTITY user_defined_marker
20658    SUBTYPE OF ( mapped_item, pre_defined_marker );
20659  END_ENTITY;
20660
20661  ENTITY user_defined_terminator_symbol
20662    SUBTYPE OF ( mapped_item, pre_defined_symbol );
20663  END_ENTITY;
20664
20665  ENTITY user_selected_elements
20666    SUBTYPE OF ( representation_item );
20667      picked_items  : SET [1 : ?] OF representation_item;
20668  END_ENTITY;
20669
20670  ENTITY user_selected_shape_elements
20671    SUBTYPE OF ( user_selected_elements );
20672      SELF\user_selected_elements.picked_items : SET [1 : ?] OF shape_representation_item;
20673  END_ENTITY;
20674
20675  ENTITY value_format_type_qualifier;
20676      format_type  : value_format_type;
20677  END_ENTITY;
20678
20679  ENTITY value_function
20680    SUPERTYPE OF ( int_value_function )
20681    SUBTYPE OF ( numeric_expression, unary_generic_expression );
20682      SELF\unary_generic_expression.operand  : string_expression;
20683  END_ENTITY;
20684
20685  ENTITY value_range
20686    SUBTYPE OF ( compound_representation_item );
20687    WHERE
20688      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SET_REPRESENTATION_ITEM' ) IN TYPEOF( item_element ) ) AND
20689               value_range_wr1( item_element ) );
20690      wr2: value_range_wr2( item_element );
20691      wr3: value_range_wr3( item_element );
20692  END_ENTITY;
20693
20694  ENTITY value_representation_item
20695    SUBTYPE OF ( representation_item );
20696      value_component  : measure_value;
20697    WHERE
20698      wr1: ( SIZEOF( QUERY ( rep <* using_representations( SELF ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20699               + 'GLOBAL_UNIT_ASSIGNED_CONTEXT'  IN TYPEOF( rep.context_of_items ) ) ) ) ) = 0 );
20700  END_ENTITY;
20701
20702  ENTITY variable
20703    ABSTRACT SUPERTYPE OF ( ONEOF ( numeric_variable, boolean_variable, string_variable ) )
20704    SUBTYPE OF ( generic_variable );
20705  END_ENTITY;
20706
20707  ENTITY variable_expression
20708    SUBTYPE OF ( variable_semantics );
20709      property_associated  : property_variable_rep_select;
20710  END_ENTITY;
20711
20712  ENTITY variable_semantics
20713    ABSTRACT SUPERTYPE;
20714  END_ENTITY;
20715
20716  ENTITY variational_current_representation_relationship
20717    SUBTYPE OF ( representation_relationship );
20718      SELF\representation_relationship.rep_1 : variational_representation;
20719      current_result                         : representation;
20720    UNIQUE
20721      ur1 : current_result;
20722    WHERE
20723      wr1: ( QUERY ( q <* SELF\representation_relationship.rep_1.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20724               + 'VARIATIONAL_REPRESENTATION_ITEM'  IN TYPEOF( q ) ) ) ) = SELF\representation_relationship.rep_2.items );
20725      wr2: ( SELF\representation_relationship.rep_1.context_of_items :=: SELF\representation_relationship.rep_2.context_of_items );
20726      wr3: ( SIZEOF( QUERY ( q <* SELF\representation_relationship.rep_2.items | (
20727               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION_ITEM'  IN TYPEOF( q ) ) ) ) = 0 );
20728      wr4: ( ( TYPEOF( SELF\representation_relationship.rep_1 ) - TYPEOF( SELF\representation_relationship.rep_2 ) ) = [
20729               'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VARIATIONAL_REPRESENTATION' ] );
20730      wr5: ( current_result :=: SELF\representation_relationship.rep_2 );
20731  END_ENTITY;
20732
20733  ENTITY variational_parameter
20734    ABSTRACT SUPERTYPE OF ( ONEOF ( bound_variational_parameter, unbound_variational_parameter ) )
20735    SUBTYPE OF ( variational_representation_item, maths_variable );
20736      parameter_description    : OPTIONAL text;
20737      parameter_current_value  : maths_value;
20738    WHERE
20739      wr1: member_of( parameter_current_value, SELF\maths_variable.values_space );
20740      wr2: ( SELF\maths_variable.name = SELF\representation_item.name );
20741  END_ENTITY;
20742
20743  ENTITY variational_representation
20744    SUBTYPE OF ( representation );
20745    INVERSE
20746      cm_link : variational_current_representation_relationship FOR rep_1;
20747    WHERE
20748      wr1: ( SIZEOF( QUERY ( q <* SELF\representation.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20749               + 'VARIATIONAL_REPRESENTATION_ITEM'  IN TYPEOF( q ) ) ) ) > 0 );
20750      wr2: ( SIZEOF( QUERY ( q <* ( SELF\representation.items - cm_link.rep_2.items ) | invalidate_vrep_item( q ) ) ) = 0 );
20751  END_ENTITY;
20752
20753  ENTITY variational_representation_item
20754    ABSTRACT SUPERTYPE OF ( auxiliary_geometric_representation_item )
20755    SUBTYPE OF ( representation_item );
20756    WHERE
20757      wr1: ( SIZEOF( QUERY ( q <* using_representations( SELF ) | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20758               + 'VARIATIONAL_REPRESENTATION'  IN TYPEOF( q ) ) ) ) ) = 0 );
20759      wr2: ( SIZEOF( QUERY ( q <* using_representations( SELF ) | ( NOT ( SELF IN q.items ) ) ) ) = 0 );
20760  END_ENTITY;
20761
20762  ENTITY vector
20763    SUBTYPE OF ( geometric_representation_item );
20764      orientation  : direction;
20765      magnitude    : length_measure;
20766    WHERE
20767      wr1: ( magnitude >= 0 );
20768  END_ENTITY;
20769
20770  ENTITY vector_style
20771    SUBTYPE OF ( curve_style, pre_defined_terminator_symbol );
20772  END_ENTITY;
20773
20774  ENTITY vee_profile
20775    SUBTYPE OF ( shape_aspect );
20776    WHERE
20777      wr1 : ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FEATURE_COMPONENT_DEFINITION' IN TYPEOF( SELF.of_shape.definition ) );
20778      wr2 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20779                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20780                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20781                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) ) = 1 ) ) ) ) = 0 );
20782      wr3 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20783                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20784                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20785                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( ( NOT ( SIZEOF( impl_rep.
20786                used_representation.items ) >= 3 ) ) AND ( SIZEOF( impl_rep.used_representation.items ) <= 6 ) ) ) ) = 0 ) ) ) ) =
20787                0 );
20788      wr4 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20789                | ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20790                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20791                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) AND ( SIZEOF( QUERY ( srwp_i <*
20792                pdr.used_representation.items | ( ( srwp_i.name = 'orientation' ) OR ( srwp_i.name = 'profile angle' ) OR ( srwp_i
20793                .name = 'tilt angle' ) OR ( srwp_i.name = 'profile radius' ) OR ( srwp_i.name = 'first length' ) OR ( srwp_i.name
20794                = 'second length' ) ) ) ) = SIZEOF( pdr.used_representation.items ) ) ) ) ) = 1 ) ) ) = 1 );
20795      wr5 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20796                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20797                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20798                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20799                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT'
20800                IN TYPEOF( it ) ) AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20801      wr6 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20802                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20803                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20804                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20805                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20806                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20807                + 'LENGTH_MEASURE_WITH_UNIT'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'profile radius' ) ) ) )
20808                <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20809      wr7 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20810                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20811                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20812                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20813                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20814                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
20815                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'profile angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20816      wr8 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20817                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20818                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20819                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20820                QUERY ( it <* impl_rep.used_representation.items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20821                + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE_WITH_UNIT']
20822                * TYPEOF( it ) ) = 2 ) AND ( it.name = 'tilt angle' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20823      wr9 : ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20824                | ( NOT ( SIZEOF( QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20825                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20826                + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
20827                'profile limit'  ) ) ) ) <= 1 ) ) ) ) = 0 );
20828      wr10: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20829                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20830                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20831                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20832                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20833                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20834                + 'LENGTH_MEASURE_WITH_UNIT'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'first length' ) ) ) )
20835                <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20836      wr11: ( SIZEOF( QUERY ( pd <* USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' )
20837                | ( NOT ( SIZEOF( QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20838                + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20839                + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF(
20840                QUERY ( it <* impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20841                + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( it ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20842                + 'LENGTH_MEASURE_WITH_UNIT'  IN TYPEOF( it\measure_with_unit.value_component ) ) AND ( it.name = 'second length' ) ) ) )
20843                <= 1 ) ) ) ) = 0 ) ) ) ) = 0 );
20844  END_ENTITY;
20845
20846  ENTITY velocity_measure_with_unit
20847    SUBTYPE OF ( measure_with_unit );
20848    WHERE
20849      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VELOCITY_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
20850  END_ENTITY;
20851
20852  ENTITY velocity_unit
20853    SUBTYPE OF ( derived_unit );
20854    WHERE
20855      wr1: ( derive_dimensional_exponents( SELF ) = dimensional_exponents( 1, 0, -1, 0, 0, 0, 0 ) );
20856  END_ENTITY;
20857
20858  ENTITY versioned_action_request;
20859      id           : identifier;
20860      version      : OPTIONAL label;
20861      purpose      : text;
20862      description  : OPTIONAL text;
20863  END_ENTITY;
20864
20865  ENTITY versioned_action_request_relationship;
20866      id                                 : identifier;
20867      name                               : label;
20868      description                        : OPTIONAL text;
20869      relating_versioned_action_request  : versioned_action_request;
20870      related_versioned_action_request   : versioned_action_request;
20871  END_ENTITY;
20872
20873  ENTITY vertex
20874    SUBTYPE OF ( topological_representation_item );
20875  END_ENTITY;
20876
20877  ENTITY vertex_loop
20878    SUBTYPE OF ( loop );
20879      loop_vertex  : vertex;
20880  END_ENTITY;
20881
20882  ENTITY vertex_point
20883    SUBTYPE OF ( vertex, geometric_representation_item );
20884      vertex_geometry  : point;
20885  END_ENTITY;
20886
20887  ENTITY vertex_shell
20888    SUBTYPE OF ( topological_representation_item );
20889      vertex_shell_extent  : vertex_loop;
20890  END_ENTITY;
20891
20892  ENTITY view_volume
20893    SUBTYPE OF ( founded_item );
20894      projection_type             : central_or_parallel;
20895      projection_point            : cartesian_point;
20896      view_plane_distance         : length_measure;
20897      front_plane_distance        : length_measure;
20898      front_plane_clipping        : BOOLEAN;
20899      back_plane_distance         : length_measure;
20900      back_plane_clipping         : BOOLEAN;
20901      view_volume_sides_clipping  : BOOLEAN;
20902      view_window                 : planar_box;
20903    INVERSE
20904      camera_usages : SET [1 : ?] OF camera_model_d3 FOR perspective_of_volume;
20905    WHERE
20906      wr1: ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AXIS2_PLACEMENT_2D' IN TYPEOF( SELF\view_volume.view_window.
20907               placement ) ) OR ( dot_product( representation_item( ' ' ) || geometric_representation_item(  ) || direction( [0, 0,
20908               1] ), SELF.view_window\planar_box.placement\axis2_placement_3d.p[3] ) = 1 ) );
20909      wr2: ( view_plane_distance = view_window.placement\placement.location.coordinates[3] );
20910  END_ENTITY;
20911
20912  ENTITY visual_appearance_representation
20913    SUBTYPE OF ( representation );
20914    WHERE
20915      wr1 : ( ( 3 <= SIZEOF( SELF.items ) ) AND ( SIZEOF( SELF.items ) <= 9 ) AND ( ( SIZEOF( QUERY ( i <* items | ( ( (
20916                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DESCRIPTIVE_REPRESENTATION_ITEM' ) IN TYPEOF( i ) ) AND (
20917                i.name IN [ 'colour id', 'colour name', 'lustre', 'pattern', 'transparency', 'orientation'] ) ) ) ) + SIZEOF(
20918                QUERY ( i <* items | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
20919                'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'VALUE_RANGE'] * TYPEOF( i ) )
20920                = 1 ) AND ( i.name IN [ 'refraction index', 'opacity'] ) ) ) ) + SIZEOF( QUERY ( i <* items | ( ( (
20921                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DOCUMENT_FILE' ) IN TYPEOF( i ) ) AND ( i.name IN [
20922                'texture map' ] ) ) ) ) ) = SIZEOF( SELF.items ) ) );
20923      wr2 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'colour id' ) ) ) = 1 );
20924      wr3 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'lustre' ) ) ) = 1 );
20925      wr4 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'colour name' ) ) ) <= 1 );
20926      wr5 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'pattern' ) ) ) <= 1 );
20927      wr6 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'transparency' ) ) ) <= 1 );
20928      wr7 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'texture map' ) ) ) <= 1 );
20929      wr8 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'refraction index' ) ) ) <= 1 );
20930      wr9 : ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'opacity' ) ) ) <= 1 );
20931      wr10: ( SIZEOF( QUERY ( i <* SELF.items | ( i.name = 'orientation' ) ) ) <= 1 );
20932      wr11: ( ( SIZEOF( USEDIN( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PROPERTY_DEFINITION_REPRESENTATION.'
20933                + 'USED_REPRESENTATION' ) ) = 1 ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( SELF,
20934                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION_REPRESENTATION.' + 'USED_REPRESENTATION'  )
20935                | ( SIZEOF( QUERY ( gpa <* USEDIN( pdr.definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
20936                'GENERAL_PROPERTY_ASSOCIATION.'  + 'DERIVED_DEFINITION' ) | ( ( (
20937                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'GENERAL_PROPERTY' ) IN TYPEOF( gpa.base_definition ) ) AND
20938                ( gpa\general_property_association.base_definition\general_property.name = 'surface_condition' ) ) ) ) = 1 ) ) ) =
20939                1 ) );
20940  END_ENTITY;
20941
20942  ENTITY volume
20943    SUBTYPE OF ( geometric_representation_item );
20944    WHERE
20945      wr1: ( SELF\geometric_representation_item.dim = 3 );
20946  END_ENTITY;
20947
20948  ENTITY volume_measure_with_unit
20949    SUBTYPE OF ( measure_with_unit );
20950    WHERE
20951      wr1: ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_UNIT' IN TYPEOF( SELF\measure_with_unit.unit_component ) );
20952  END_ENTITY;
20953
20954  ENTITY volume_unit
20955    SUBTYPE OF ( derived_unit );
20956    WHERE
20957      wr1: ( derive_dimensional_exponents( SELF ) = dimensional_exponents( 3, 0, 0, 0, 0, 0, 0 ) );
20958  END_ENTITY;
20959
20960  ENTITY week_of_year_and_day_date
20961    SUBTYPE OF ( date );
20962      week_component  : week_in_year_number;
20963      day_component   : OPTIONAL day_in_week_number;
20964  END_ENTITY;
20965
20966  ENTITY wire_shell
20967    SUBTYPE OF ( topological_representation_item );
20968      wire_shell_extent  : SET [1 : ?] OF loop;
20969    WHERE
20970      wr1: ( NOT mixed_loop_type_set( wire_shell_extent ) );
20971  END_ENTITY;
20972
20973  ENTITY wrong_element_name
20974    SUBTYPE OF ( externally_conditioned_data_quality_criterion );
20975    WHERE
20976      wr1: validate_ecdq_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM'] );
20977  END_ENTITY;
20978
20979  ENTITY wrongly_oriented_void
20980    SUBTYPE OF ( erroneous_manifold_solid_brep );
20981      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
20982    WHERE
20983      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
20984      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS'] );
20985      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
20986               + 'ORIENTED_CLOSED_SHELL' ] );
20987      wr4: validate_accuracy_types( SELF, [] );
20988  END_ENTITY;
20989
20990  ENTITY wrongly_placed_loop
20991    SUBTYPE OF ( erroneous_topology_and_geometry_relationship );
20992      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
20993    WHERE
20994      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
20995      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE'] );
20996      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BOUND'] );
20997      wr4: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE'] );
20998  END_ENTITY;
20999
21000  ENTITY wrongly_placed_void
21001    SUBTYPE OF ( erroneous_manifold_solid_brep );
21002      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_logical_test;
21003    WHERE
21004      wr1: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_VALUE' );
21005      wr2: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BREP_WITH_VOIDS'] );
21006      wr3: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21007               + 'ORIENTED_CLOSED_SHELL' ] );
21008      wr4: validate_accuracy_types( SELF, [] );
21009  END_ENTITY;
21010
21011  ENTITY xor_expression
21012    SUBTYPE OF ( binary_boolean_expression );
21013      SELF\binary_generic_expression.operands : LIST [2 : 2] OF boolean_expression;
21014  END_ENTITY;
21015
21016  ENTITY year_month
21017    SUBTYPE OF ( date );
21018      month_component  : month_in_year_number;
21019  END_ENTITY;
21020
21021  ENTITY zero_surface_normal
21022    SUBTYPE OF ( geometry_with_local_irregularity );
21023      SELF\shape_data_quality_criterion.assessment_specification : shape_data_quality_assessment_by_numerical_test;
21024    WHERE
21025      wr1: ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_UPPER_VALUE_LIMIT' ) IN TYPEOF( SELF\
21026               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) )
21027               AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN value_limit_type( SELF\
21028               shape_data_quality_criterion.assessment_specification\shape_data_quality_assessment_by_numerical_test.threshold ) ) );
21029      wr2: validate_measured_data_type( SELF, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' );
21030      wr3: validate_inspected_elements_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE'] );
21031      wr4: validate_locations_of_extreme_value_type( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE'] );
21032      wr5: validate_accuracy_types( SELF, [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE'] );
21033  END_ENTITY;
21034
21035  ENTITY zone_structural_makeup
21036    SUPERTYPE OF ( ONEOF ( smeared_material_definition AND thickness_laminate_table, smeared_material_definition AND
21037        percentage_laminate_table, thickness_laminate_table, percentage_laminate_table, smeared_material_definition ) )
21038    SUBTYPE OF ( laminate_table );
21039  END_ENTITY;
21040
21041  RULE alternative_solution_requires_solution_definition FOR ( product_definition_formation );
21042
21043    LOCAL
21044      solution_versions : SET OF product_definition_formation := [];
21045    END_LOCAL;
21046    solution_versions := QUERY ( pdf <* product_definition_formation | ( SIZEOF( QUERY ( prpc <* USEDIN( pdf.of_product,
21047        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | ( prpc.name =
21048        'alternative solution'  ) ) ) = 1 ) );
21049
21050  WHERE
21051    wr1: ( SIZEOF( QUERY ( pdf <* solution_versions | ( SIZEOF( QUERY ( pd <* USEDIN( pdf,
21052             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION.FORMATION' ) | ( pd.frame_of_reference.
21053             name = 'alternative definition' ) ) ) <> 1 ) ) ) = 0 );
21054
21055  END_RULE;
21056
21057  RULE application_protocol_definition_required FOR ( application_context );
21058
21059  WHERE
21060    wr1: ( SIZEOF( QUERY ( ac <* application_context | ( SIZEOF( QUERY ( apd <* USEDIN( ac,
21061             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLICATION_PROTOCOL_DEFINITION.APPLICATION'  ) | ( apd.
21062             application_interpreted_model_schema_name = 'ap242_managed_model_based_3d_engineering' ) ) ) > 0 ) ) ) > 0 );
21063
21064  END_RULE;
21065
21066  RULE breakdown_element_requires_product_definition FOR ( product_definition_formation );
21067
21068  WHERE
21069    wr1: ( SIZEOF( QUERY ( pdf <* product_definition_formation | ( ( SIZEOF( QUERY ( prpc <* USEDIN( pdf.of_product,
21070             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name =
21071             'functionality'  ) ) ) = 1 ) AND ( SIZEOF( QUERY ( pd <* USEDIN( pdf,
21072             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION'  ) | ( pd.frame_of_reference.name =
21073             'functional definition'  ) ) ) < 1 ) ) ) ) = 0 );
21074    wr2: ( SIZEOF( QUERY ( pdf <* product_definition_formation | ( ( SIZEOF( QUERY ( prpc <* USEDIN( pdf.of_product,
21075             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name =
21076             'conceptual design'  ) ) ) = 1 ) AND ( SIZEOF( QUERY ( pd <* USEDIN( pdf,
21077             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FORMATION'  ) | ( pd.frame_of_reference.name =
21078             'conceptual definition'  ) ) ) < 1 ) ) ) ) = 0 );
21079
21080  END_RULE;
21081
21082  RULE chamfer_offset_requires_faces FOR ( chamfer_offset, property_definition_representation );
21083
21084  WHERE
21085    wr1: ( SIZEOF( QUERY ( co <* chamfer_offset | ( NOT ( 1 = SIZEOF( QUERY ( pdr <* property_definition_representation | ( ( pdr
21086             \property_definition_representation.definition\property_definition.definition = co ) AND (
21087             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
21088             AND ( ( ( pdr\property_definition_representation.definition\property_definition.definition.description = 'first offset'  )
21089             AND ( pdr.used_representation.name = 'first face shape' ) ) OR ( ( pdr\property_definition_representation.definition\
21090             property_definition.definition.description = 'second offset' ) AND ( pdr.used_representation.name = 'second face shape'  ) ) ) ) ) ) ) ) ) )
21091             = 0 );
21092
21093  END_RULE;
21094
21095  RULE chamfer_requires_faces FOR ( chamfer, property_definition_representation );
21096
21097  WHERE
21098    wr1: ( SIZEOF( QUERY ( cf <* chamfer | ( NOT ( 1 = SIZEOF( QUERY ( pdr <* property_definition_representation | ( ( pdr\
21099             property_definition_representation.definition\property_definition.definition = cf ) AND (
21100             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
21101             AND ( pdr.used_representation.name = 'chamfer face' ) ) ) ) ) ) ) ) = 0 );
21102
21103  END_RULE;
21104
21105  RULE compatible_dimension FOR ( cartesian_point, direction, representation_context, geometric_representation_context );
21106
21107  WHERE
21108    wr1: ( SIZEOF( QUERY ( x <* cartesian_point | ( SIZEOF( QUERY ( y <* geometric_representation_context | ( item_in_context( x,
21109             y ) AND ( HIINDEX( x.coordinates ) <> y.coordinate_space_dimension ) ) ) ) > 0 ) ) ) = 0 );
21110    wr2: ( SIZEOF( QUERY ( x <* direction | ( SIZEOF( QUERY ( y <* geometric_representation_context | ( item_in_context( x, y )
21111             AND ( HIINDEX( x.direction_ratios ) <> y.coordinate_space_dimension ) ) ) ) > 0 ) ) ) = 0 );
21112
21113  END_RULE;
21114
21115  RULE component_class_for_assembly_select FOR ( composite_assembly_sequence_definition, next_assembly_usage_occurrence,
21116             product_related_product_category );
21117
21118    LOCAL
21119      i     : INTEGER := 0;
21120      j     : INTEGER := 0;
21121      k     : INTEGER := 0;
21122      nnauo : INTEGER := 0;
21123      dkuhr : LOGICAL := TRUE;
21124      rp    : product;
21125      nprpc : INTEGER := 0;
21126    END_LOCAL;
21127    REPEAT i := LOINDEX( composite_assembly_sequence_definition ) TO HIINDEX( composite_assembly_sequence_definition ) BY 1;
21128      nnauo := 0;
21129      REPEAT j := LOINDEX( next_assembly_usage_occurrence ) TO HIINDEX( next_assembly_usage_occurrence ) BY 1;
21130        IF composite_assembly_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition THEN
21131          rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
21132          nprpc := 0;
21133          REPEAT k := LOINDEX( product_related_product_category ) TO HIINDEX( product_related_product_category ) BY 1;
21134            IF ( rp IN product_related_product_category[k].products ) AND ( product_related_product_category[k].name IN [ 'ply',
21135                'ply laminate' , 'filament laminate', 'processed core', 'composite assembly'] ) THEN
21136              nprpc := nprpc + 1;
21137            END_IF;
21138          END_REPEAT;
21139          IF nprpc = 1 THEN
21140            nnauo := nnauo + 1;
21141          ELSE
21142            dkuhr := FALSE;
21143            ESCAPE;
21144          END_IF;
21145        END_IF;
21146      END_REPEAT;
21147      IF dkuhr = FALSE THEN
21148        ESCAPE;
21149      END_IF;
21150      IF nnauo = 0 THEN
21151        dkuhr := FALSE;
21152        ESCAPE;
21153      END_IF;
21154    END_REPEAT;
21155
21156  WHERE
21157    wr1: dkuhr;
21158
21159  END_RULE;
21160
21161  RULE consistent_uncertainty FOR ( global_uncertainty_assigned_context, qualified_representation_item,
21162             uncertainty_assigned_representation );
21163
21164  WHERE
21165    wr1: ( SIZEOF( QUERY ( guac <* global_uncertainty_assigned_context | ( SIZEOF( QUERY ( u1 <* guac.uncertainty | ( SIZEOF(
21166             QUERY ( u2 <* guac.uncertainty | ( u2.name = u1.name ) ) ) > 1 ) ) ) > 0 ) ) ) = 0 );
21167    wr2: ( SIZEOF( QUERY ( uar <* uncertainty_assigned_representation | ( SIZEOF( QUERY ( u1 <* uar.uncertainty | ( SIZEOF(
21168             QUERY ( u2 <* uar.uncertainty | ( u2.name = u1.name ) ) ) > 1 ) ) ) > 0 ) ) ) = 0 );
21169    wr3: ( SIZEOF( QUERY ( qri <* qualified_representation_item | ( SIZEOF( QUERY ( u1 <* qri.qualifiers | ( ( (
21170             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'UNCERTAINTY_QUALIFIER' ) IN TYPEOF( u1 ) ) AND ( SIZEOF(
21171             QUERY ( u2 <* qri.qualifiers | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'UNCERTAINTY_QUALIFIER' )
21172             IN TYPEOF( u2 ) ) AND ( u2\uncertainty_qualifier.measure_name = u1\uncertainty_qualifier.measure_name ) ) ) ) > 1 ) ) ) )
21173             > 0 ) ) ) = 0 );
21174
21175  END_RULE;
21176
21177  RULE constraint_definition_requires_constraint_category FOR ( product_definition );
21178
21179    LOCAL
21180      constraint_definitions : SET OF product_definition := [];
21181    END_LOCAL;
21182    constraint_definitions := QUERY ( pd <* product_definition | ( pd.frame_of_reference.name = 'design constraint definition' ) );
21183
21184  WHERE
21185    wr1: ( SIZEOF( QUERY ( pd <* constraint_definitions | ( SIZEOF( QUERY ( prpc <* USEDIN( pd.formation.of_product,
21186             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name =
21187             'requirement'  ) ) ) = 0 ) ) ) = 0 );
21188
21189  END_RULE;
21190
21191  RULE design_constraint_requires_product_definition FOR ( product_definition_formation );
21192
21193  WHERE
21194    wr1: ( SIZEOF( QUERY ( pdf <* product_definition_formation | ( ( SIZEOF( QUERY ( prpc <* USEDIN( pdf.of_product,
21195             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name =
21196             'requirement'  ) ) ) > 0 ) AND ( SIZEOF( QUERY ( pd <* USEDIN( pdf, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21197             + 'PRODUCT_DEFINITION.FORMATION'  ) | ( pd.frame_of_reference.name = 'design constraint definition' ) ) ) < 1 ) ) ) )
21198             = 0 );
21199
21200  END_RULE;
21201
21202  RULE dimensioning_data_requires_document FOR ( applied_document_reference, product_definition_context_association,
21203             role_association );
21204
21205    LOCAL
21206      pdca   : SET OF product_definition_context_association := QUERY ( pdca <* product_definition_context_association | ( ( pdca
21207                \product_definition_context_association.role\product_definition_context_role.name = 'additional context' ) AND (
21208                pdca\product_definition_context_association.frame_of_reference\application_context_element.name =
21209                'Geometric Dimensioning and Tolerancing Product Specification'  ) ) );
21210      pdadr  : SET OF product_definition := [];
21211      ra1    : SET OF role_association := [];
21212      adr    : SET OF applied_document_reference := QUERY ( adr <* applied_document_reference | ( ( adr\document_reference.
21213                assigned_document\document.kind\document_type.product_data_type = 'Standards Document' ) AND ( ( adr\
21214                document_reference.assigned_document\document.id = 'ASME Y14.41-2003' ) OR ( adr\document_reference.
21215                assigned_document\document.id = 'ASME Y14.5M-1994' ) OR ( adr\document_reference.assigned_document\document.id =
21216                'ISO 1101: 2004'  ) ) ) );
21217      ra     : SET OF role_association := QUERY ( ra <* role_association | ( ra\role_association.role\object_role.name =
21218                'dimensioning standard'  ) );
21219      pass   : BOOLEAN := TRUE;
21220      pdpdca : SET OF product_definition := [];
21221    END_LOCAL;
21222    REPEAT i := 1 TO HIINDEX( pdca ) BY 1;
21223      pdpdca := pdpdca + pdca[i]\product_definition_context_association.definition;
21224    END_REPEAT;
21225    REPEAT i := 1 TO HIINDEX( adr ) BY 1;
21226      ra1 := bag_to_set( USEDIN( adr[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROLE_ASSOCIATION.ITEM_WITH_ROLE' ) );
21227      IF ( ra1 * ra ) <> ra1 THEN
21228        pass := FALSE;
21229      END_IF;
21230      REPEAT j := 1 TO HIINDEX( adr[i]\applied_document_reference.items ) BY 1;
21231        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF( adr[i]\applied_document_reference.
21232            items[j] ) THEN
21233          pdadr := pdadr + adr[i]\applied_document_reference.items[j];
21234        END_IF;
21235      END_REPEAT;
21236    END_REPEAT;
21237
21238  WHERE
21239    wr1: pass;
21240    wr2: ( pdpdca = pdadr );
21241
21242  END_RULE;
21243
21244  RULE draughting_model_items_constraint FOR ( draughting_model );
21245
21246  WHERE
21247    wr1: ( SIZEOF( QUERY ( dm <* draughting_model | ( NOT ( SIZEOF( QUERY ( it1 <* dm\representation.items | ( (
21248             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_OCCURRENCE'  IN TYPEOF( it1 ) ) AND ( NOT ( (
21249             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'DRAUGHTING_ANNOTATION_OCCURRENCE' ) IN TYPEOF( it1 ) ) ) ) ) )
21250             = 0 ) ) ) ) = 0 );
21251    wr2: ( SIZEOF( QUERY ( dm <* draughting_model | ( NOT ( SIZEOF( QUERY ( it1 <* dm\representation.items | ( (
21252             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_CALLOUT'  IN TYPEOF( it1 ) ) AND ( NOT (
21253             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DRAUGHTING_ELEMENTS'  IN TYPEOF( it1 ) ) ) ) ) ) = 0 ) ) ) ) = 0 );
21254
21255  END_RULE;
21256
21257  RULE edge_round_requires_faces FOR ( edge_round, property_definition_representation );
21258
21259  WHERE
21260    wr1: ( 0 = SIZEOF( QUERY ( er <* edge_round | ( NOT ( 1 = SIZEOF( QUERY ( pdr <* property_definition_representation | ( ( pdr
21261             \property_definition_representation.definition\property_definition.definition = er ) AND (
21262             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
21263             AND ( pdr.used_representation.name = 'edge round face' ) ) ) ) ) ) ) ) );
21264    wr2: ( SIZEOF( QUERY ( er <* edge_round | ( NOT ( 1 = SIZEOF( QUERY ( pdr <* property_definition_representation | ( ( pdr\
21265             property_definition_representation.definition\property_definition.definition = er ) AND (
21266             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
21267             AND ( pdr.used_representation.name = 'first face shape' ) ) ) ) ) ) ) ) = 0 );
21268    wr3: ( SIZEOF( QUERY ( er <* edge_round | ( NOT ( 1 = SIZEOF( QUERY ( pdr <* property_definition_representation | ( ( pdr\
21269             property_definition_representation.definition\property_definition.definition = er ) AND (
21270             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) )
21271             AND ( pdr.used_representation.name = 'second face shape' ) ) ) ) ) ) ) ) = 0 );
21272
21273  END_RULE;
21274
21275  RULE external_version_assignments_are_valid FOR ( applied_external_identification_assignment );
21276
21277  WHERE
21278    wr1: ( SIZEOF( QUERY ( aia <* applied_external_identification_assignment | ( NOT external_version_assignment_is_valid( aia ) ) ) )
21279             = 0 );
21280
21281  END_RULE;
21282
21283  RULE machining_feature_definition_constraints FOR ( feature_definition );
21284
21285    LOCAL
21286      mfds : SET OF feature_definition := [];
21287    END_LOCAL;
21288    mfds := QUERY ( temp <* feature_definition | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MACHINING_FEATURE_DEFINITION'
21289        IN TYPEOF( temp ) ) );
21290
21291  WHERE
21292    wr1: ( SIZEOF( QUERY ( mfd <* mfds | ( NOT ( SIZEOF( QUERY ( pdr <* get_property_definition_representations( mfd ) | (
21293             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.
21294             used_representation ) ) ) ) <= 1 ) ) ) ) = 0 );
21295    wr2: ( SIZEOF( QUERY ( mfd <* mfds | ( NOT ( SIZEOF( QUERY ( pd <* USEDIN( mfd,
21296             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  ) | ( NOT ( SIZEOF(
21297             QUERY ( impl_rep <* QUERY ( pdr <* USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21298             + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21299             + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( pdr.used_representation ) ) ) | ( NOT ( SIZEOF( QUERY ( it <*
21300             impl_rep.used_representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF( it ) )
21301             AND ( it.name = 'orientation' ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 ) ) ) ) = 0 );
21302    wr3: ( SIZEOF( QUERY ( mfd <* mfds | ( NOT ( ( NOT ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUND_HOLE',
21303             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOSS' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21304             + 'OUTSIDE_PROFILE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REMOVAL_VOLUME',
21305             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLAT_FACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21306             + 'POCKET' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROTRUSION',
21307             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RIB_TOP' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21308             + 'ROUNDED_END' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLOT',
21309             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STEP' ] * TYPEOF( mfds ) ) = 1 ) ) OR ( SIZEOF( QUERY ( pdr <*
21310             get_property_definition_representations( mfd ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21311             + 'PLANAR_SHAPE_REPRESENTATION'  IN TYPEOF( pdr.used_representation ) ) AND ( pdr.used_representation.name =
21312             'maximum feature limit'  ) ) ) ) >= 0 ) ) ) ) ) = 0 );
21313
21314  END_RULE;
21315
21316  RULE machining_feature_life_cycle FOR ( instanced_feature );
21317
21318  WHERE
21319    wr1: ( SIZEOF( QUERY ( mf <* instanced_feature | ( NOT ( mf.of_shape.definition.frame_of_reference.life_cycle_stage =
21320             'manufacturing planning'  ) ) ) ) = 0 );
21321
21322  END_RULE;
21323
21324  RULE material_for_coating_layer FOR ( shape_aspect );
21325
21326    LOCAL
21327      coating_layers : SET OF shape_aspect := [];
21328    END_LOCAL;
21329    coating_layers := QUERY ( r <* shape_aspect | ( r.name = 'coating layer' ) );
21330
21331  WHERE
21332    wr1: ( SIZEOF( QUERY ( r <* coating_layers | ( SIZEOF( USEDIN( r, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21333             + 'MATERIAL_DESIGNATION.DEFINITIONS'  ) ) <> 1 ) ) ) = 0 );
21334
21335  END_RULE;
21336
21337  RULE plib_property_reference_requires_name_scope FOR ( externally_defined_general_property );
21338
21339    LOCAL
21340      known_sourced_properties : SET OF externally_defined_general_property;
21341    END_LOCAL;
21342    known_sourced_properties := QUERY ( edc <* externally_defined_general_property | (
21343        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE'  IN TYPEOF( edc.source ) ) );
21344
21345  WHERE
21346    wr1: ( SIZEOF( QUERY ( edgp <* known_sourced_properties | ( SIZEOF( QUERY ( edir <* USEDIN( edgp,
21347             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_ITEM_RELATIONSHIP.RELATING_ITEM'  ) | ( ( edir.
21348             name = 'name scope' ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_CLASS' IN TYPEOF(
21349             edir.related_item ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' IN TYPEOF( edir.
21350             related_item.source ) ) ) ) ) <> 1 ) ) ) = 0 );
21351
21352  END_RULE;
21353
21354  RULE plib_property_reference_requires_version FOR ( externally_defined_general_property );
21355
21356    LOCAL
21357      plib_properties : SET OF externally_defined_general_property := [];
21358    END_LOCAL;
21359    plib_properties := QUERY ( edgp <* externally_defined_general_property | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21360        + 'KNOWN_SOURCE'  IN TYPEOF( edgp.source ) ) AND ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.KNOWN_SOURCE' + '.'
21361        + 'NAME'  ) = 'ISO 13584 library' ) ) );
21362
21363  WHERE
21364    wr1: ( SIZEOF( QUERY ( edgp <* plib_properties | ( SIZEOF( QUERY ( edir <* USEDIN( edgp,
21365             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EXTERNAL_IDENTIFICATION_ASSIGNMENT.ITEMS'  ) | ( edir.role.
21366             name = 'version' ) ) ) <> 1 ) ) ) = 0 );
21367
21368  END_RULE;
21369
21370  RULE ply_reference FOR ( ply_laminate_sequence_definition, next_assembly_usage_occurrence, product_related_product_category );
21371
21372    LOCAL
21373      i     : INTEGER;
21374      j     : INTEGER;
21375      k     : INTEGER;
21376      nnauo : INTEGER;
21377      dkuhr : LOGICAL := TRUE;
21378      rp    : product;
21379      nprpc : INTEGER := 0;
21380    END_LOCAL;
21381    REPEAT i := LOINDEX( ply_laminate_sequence_definition ) TO HIINDEX( ply_laminate_sequence_definition ) BY 1;
21382      nnauo := 0;
21383      REPEAT j := LOINDEX( next_assembly_usage_occurrence ) TO HIINDEX( next_assembly_usage_occurrence ) BY 1;
21384        IF ply_laminate_sequence_definition[i] = next_assembly_usage_occurrence[j].relating_product_definition THEN
21385          rp := next_assembly_usage_occurrence[j].related_product_definition.formation.of_product;
21386          nprpc := 0;
21387          REPEAT k := LOINDEX( product_related_product_category ) TO HIINDEX( product_related_product_category ) BY 1;
21388            IF ( product_related_product_category[k].name = 'ply' ) AND ( rp IN product_related_product_category[k].products )
21389                THEN
21390              nprpc := nprpc + 1;
21391            END_IF;
21392          END_REPEAT;
21393          IF nprpc = 1 THEN
21394            nnauo := nnauo + 1;
21395          ELSE
21396            dkuhr := FALSE;
21397            ESCAPE;
21398          END_IF;
21399        END_IF;
21400      END_REPEAT;
21401      IF dkuhr = FALSE THEN
21402        ESCAPE;
21403      END_IF;
21404      IF nnauo = 0 THEN
21405        dkuhr := FALSE;
21406        ESCAPE;
21407      END_IF;
21408    END_REPEAT;
21409
21410  WHERE
21411    wr1: dkuhr;
21412
21413  END_RULE;
21414
21415  RULE ply_stock_material_select FOR ( product_related_product_category, make_from_usage_option );
21416
21417    LOCAL
21418      i     : INTEGER;
21419      j     : INTEGER;
21420      k     : INTEGER;
21421      dkuhr : LOGICAL;
21422      kp    : INTEGER;
21423      rp    : product;
21424      nprpc : INTEGER := 0;
21425      nmfuo : INTEGER;
21426    END_LOCAL;
21427    dkuhr := TRUE;
21428    REPEAT kp := LOINDEX( product_related_product_category ) TO HIINDEX( product_related_product_category ) BY 1;
21429      IF product_related_product_category[kp].name = 'ply' THEN
21430        REPEAT i := LOINDEX( product_related_product_category[kp].products ) TO HIINDEX( product_related_product_category[kp].
21431            products ) BY 1;
21432          nmfuo := 0;
21433          REPEAT j := LOINDEX( make_from_usage_option ) TO HIINDEX( make_from_usage_option ) BY 1;
21434            rp := make_from_usage_option[j].related_product_definition.formation.of_product;
21435            IF product_related_product_category[kp].products[i] = rp THEN
21436              REPEAT k := LOINDEX( product_related_product_category ) TO HIINDEX( product_related_product_category ) BY 1;
21437                IF ( rp IN product_related_product_category[k].products ) AND ( product_related_product_category[k].name IN [
21438                    'isotropic material' , 'filament assembly', 'discontinuous fiber assembly'] ) THEN
21439                  nprpc := nprpc + 1;
21440                END_IF;
21441              END_REPEAT;
21442              IF nprpc = 1 THEN
21443                nmfuo := nmfuo + 1;
21444              ELSE
21445                dkuhr := FALSE;
21446                ESCAPE;
21447              END_IF;
21448            END_IF;
21449          END_REPEAT;
21450          IF dkuhr = FALSE THEN
21451            ESCAPE;
21452          END_IF;
21453          IF nmfuo <> 1 THEN
21454            dkuhr := FALSE;
21455            ESCAPE;
21456          END_IF;
21457        END_REPEAT;
21458      END_IF;
21459    END_REPEAT;
21460
21461  WHERE
21462    wr1: dkuhr;
21463
21464  END_RULE;
21465
21466  RULE product_concept_feature_requires_category FOR ( product_concept_feature );
21467
21468  WHERE
21469    wr1: ( SIZEOF( QUERY ( pcf <* product_concept_feature | ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21470             'INCLUSION_PRODUCT_CONCEPT_FEATURE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21471             'CONDITIONAL_CONCEPT_FEATURE' ] * TYPEOF( pcf ) ) = 0 ) AND ( SIZEOF( QUERY ( aga <* USEDIN( pcf,
21472             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'APPLIED_GROUP_ASSIGNMENT.' + 'ITEMS' ) | ( ( aga\
21473             group_assignment.role\object_role.name = 'specification category member' ) AND ( (
21474             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_CONCEPT_FEATURE_CATEGORY' ) IN TYPEOF( aga.
21475             assigned_group ) ) ) ) ) <> 1 ) ) ) ) = 0 );
21476
21477  END_RULE;
21478
21479  RULE product_definition_replacement_requires_effectivity_assignment FOR ( product_definition_relationship );
21480
21481  WHERE
21482    wr1: ( SIZEOF( QUERY ( pdr <* product_definition_relationship | ( ( pdr.name = 'definition replacement' ) AND ( SIZEOF(
21483             USEDIN( pdr, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_EFFECTIVITY_ASSIGNMENT.ITEMS' ) ) = 0 ) ) ) ) =
21484             0 );
21485
21486  END_RULE;
21487
21488  RULE restrict_alternative_definition FOR ( product_definition );
21489
21490    LOCAL
21491      solution_definitions : SET OF product_definition := [];
21492    END_LOCAL;
21493    solution_definitions := QUERY ( pd <* product_definition | ( pd.frame_of_reference.name = 'alternative definition' ) );
21494
21495  WHERE
21496    wr1: ( SIZEOF( QUERY ( pd <* solution_definitions | ( SIZEOF( QUERY ( pdr <* USEDIN( pd,
21497             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' )
21498             | ( pdr.name = 'solution alternative definition' ) ) ) <> 1 ) ) ) = 0 );
21499    wr2: ( SIZEOF( QUERY ( pd <* solution_definitions | ( NOT ( pd.name IN [ 'technical', 'supplier', 'technical supplier', ''] ) ) ) )
21500             = 0 );
21501    wr3: ( SIZEOF( QUERY ( pd <* solution_definitions | ( ( pd.name IN [ 'supplier', 'technical supplier'] ) AND ( SIZEOF(
21502             QUERY ( aoa <* USEDIN( pd.formation, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21503             'APPLIED_ORGANIZATION_ASSIGNMENT.ITEMS'  ) | ( aoa.role.name = 'supplier' ) ) ) <> 1 ) ) ) ) = 0 );
21504
21505  END_RULE;
21506
21507  RULE restrict_assembly_category FOR ( product_definition );
21508
21509    LOCAL
21510      assembly_definitions : SET OF product_definition := [];
21511    END_LOCAL;
21512    assembly_definitions := QUERY ( pd <* product_definition | ( SIZEOF( QUERY ( pdca <* USEDIN( pd,
21513        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION'  ) | ( pdca.
21514        frame_of_reference.name = 'assembly definition' ) ) ) > 0 ) );
21515
21516  WHERE
21517    wr1: ( SIZEOF( QUERY ( pd <* assembly_definitions | ( NOT ( 'assembly' IN categories_of_product( pd.formation.of_product ) ) ) ) )
21518             = 0 );
21519
21520  END_RULE;
21521
21522  RULE restrict_centre_of_mass_representation FOR ( representation );
21523
21524  WHERE
21525    wr1: ( SIZEOF( QUERY ( r <* representation | ( ( r.name = 'centre of mass' ) AND ( ( SIZEOF( r.items ) <> 1 ) OR ( SIZEOF(
21526             QUERY ( i <* r.items | ( ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'POINT' ) IN TYPEOF( i ) ) AND ( i.
21527             name = 'centre point' ) ) ) ) <> 1 ) ) ) ) ) = 0 );
21528
21529  END_RULE;
21530
21531  RULE restrict_classification_assignments FOR ( applied_classification_assignment );
21532
21533  WHERE
21534    wr1: ( SIZEOF( QUERY ( aia <* applied_classification_assignment | ( NOT class_assignment_is_valid( aia ) ) ) ) = 0 );
21535
21536  END_RULE;
21537
21538  RULE restrict_collection_category FOR ( product_definition );
21539
21540    LOCAL
21541      collection_definitions : SET OF product_definition := [];
21542    END_LOCAL;
21543    collection_definitions := QUERY ( pd <* product_definition | ( SIZEOF( QUERY ( pdca <* USEDIN( pd,
21544        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION' ) | ( pdca.
21545        frame_of_reference.name = 'collection definition' ) ) ) > 0 ) );
21546
21547  WHERE
21548    wr1: ( SIZEOF( QUERY ( pd <* collection_definitions | ( NOT ( 'collection' IN categories_of_product( pd.formation.of_product ) ) ) ) )
21549             = 0 );
21550
21551  END_RULE;
21552
21553  RULE restrict_concept_feature_operator FOR ( concept_feature_operator );
21554
21555  WHERE
21556    wr1: ( SIZEOF( QUERY ( cfo <* concept_feature_operator | ( NOT ( cfo.name IN [ 'and', 'or', 'oneof', 'not', 'implication'] ) ) ) )
21557             = 0 );
21558    wr2: ( SIZEOF( QUERY ( cfo <* concept_feature_operator | ( ( cfo.name = 'implication' ) AND ( SIZEOF( QUERY ( cfrwc <*
21559             USEDIN( cfo, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.' +
21560             'CONDITIONAL_OPERATOR'  ) | ( SIZEOF( QUERY ( ccf <* USEDIN( cfrwc, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21561             + 'CONDITIONAL_CONCEPT_FEATURE.CONDITION' ) | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21562             'INCLUSION_PRODUCT_CONCEPT_FEATURE'  ) IN TYPEOF( ccf ) ) ) ) ) > 0 ) ) ) > 0 ) ) ) ) = 0 );
21563    wr3: ( SIZEOF( QUERY ( cfo <* concept_feature_operator | ( ( cfo.name = 'not' ) AND ( SIZEOF( QUERY ( cfrwc <* USEDIN( cfo,
21564             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CONCEPT_FEATURE_RELATIONSHIP_WITH_CONDITION.'
21565             + 'CONDITIONAL_OPERATOR'  ) | ( cfrwc.related_product_concept_feature :<>: cfrwc.relating_product_concept_feature ) ) )
21566             > 0 ) ) ) ) = 0 );
21567
21568  END_RULE;
21569
21570  RULE restrict_configuration_design_for_class_breakdown_association FOR ( configuration_design );
21571
21572  WHERE
21573    wr1: ( SIZEOF( QUERY ( cd <* configuration_design | ( ( cd.name = 'functionality' ) AND ( ( NOT (
21574             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( cd.design ) ) ) OR ( cd.design\
21575             product_definition.frame_of_reference.name <> 'functional definition' ) ) ) ) ) = 0 );
21576    wr2: ( SIZEOF( QUERY ( cd <* configuration_design | ( ( cd.name = 'realization' ) AND ( ( NOT (
21577             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( cd.design ) ) ) OR ( cd.design\
21578             product_definition.frame_of_reference.name <> 'conceptual definition' ) ) ) ) ) = 0 );
21579    wr3: ( SIZEOF( QUERY ( cd <* configuration_design | ( ( cd.name IN [ 'functionality', 'realization'] ) AND ( NOT (
21580             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CLASS'  IN TYPEOF( cd.configuration.item_concept ) ) ) ) ) )
21581             = 0 );
21582
21583  END_RULE;
21584
21585  RULE restrict_configuration_design_for_design_constraint FOR ( configuration_design );
21586
21587  WHERE
21588    wr1: ( SIZEOF( QUERY ( cd <* configuration_design | ( ( cd.name = 'design constraint usage' ) AND ( ( NOT (
21589             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( cd.design ) ) ) OR ( cd.design\
21590             product_definition.frame_of_reference.name <> 'design constraint definition' ) ) ) ) ) = 0 );
21591
21592  END_RULE;
21593
21594  RULE restrict_group_relationship_for_classification_hierarchy FOR ( group_relationship );
21595
21596  WHERE
21597    wr1: ( SIZEOF( QUERY ( gr <* group_relationship | ( ( gr\group_relationship.name = 'class hierarchy' ) AND ( ( NOT (
21598             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS'  IN TYPEOF( gr\group_relationship.related_group ) ) ) OR (
21599             NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS' IN TYPEOF( gr\group_relationship.relating_group ) ) ) ) ) ) )
21600             = 0 );
21601
21602  END_RULE;
21603
21604  RULE restrict_group_relationship_for_specification_category FOR ( group_relationship );
21605
21606  WHERE
21607    wr1: ( SIZEOF( QUERY ( gr <* group_relationship | ( ( gr.name = 'specification category hierarchy' ) AND ( ( NOT (
21608             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY'  IN TYPEOF( gr.related_group ) ) )
21609             OR ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_CONCEPT_FEATURE_CATEGORY' IN TYPEOF( gr.
21610             relating_group ) ) ) ) ) ) ) = 0 );
21611
21612  END_RULE;
21613
21614  RULE restrict_language_assignment_per_attribute FOR ( attribute_language_assignment );
21615
21616  WHERE
21617    wr1: ( SIZEOF( QUERY ( ala1 <* attribute_language_assignment | ( SIZEOF( QUERY ( it <* ala1.items | ( SIZEOF(
21618             QUERY ( ala2 <* USEDIN( it, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATTRIBUTE_LANGUAGE_ASSIGNMENT.ITEMS' )
21619             | ( ( ala1\attribute_classification_assignment.attribute_name = ala2\attribute_classification_assignment.
21620             attribute_name ) AND ( ala1\attribute_classification_assignment.assigned_class :=: ala2\
21621             attribute_classification_assignment.assigned_class ) ) ) ) > 1 ) ) ) > 0 ) ) ) = 0 );
21622
21623  END_RULE;
21624
21625  RULE restrict_part_occurrence FOR ( product_definition );
21626
21627    LOCAL
21628      part_occurrences : SET OF product_definition := QUERY ( pd <* product_definition | ( pd.frame_of_reference.name =
21629                          'part occurrence'  ) );
21630    END_LOCAL;
21631
21632  WHERE
21633    wr1: ( SIZEOF( QUERY ( pd <* part_occurrences | ( NOT ( pd.name IN [ 'single instance', 'selected instance',
21634             'quantified instance' , 'specified instance'] ) ) ) ) = 0 );
21635    wr2: ( SIZEOF( QUERY ( pd <* part_occurrences | ( ( SIZEOF( QUERY ( pdr <* USEDIN( pd,
21636             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' )
21637             | ( pdr.name = 'definition usage' ) ) ) <> 1 ) AND ( SIZEOF( QUERY ( cd <* USEDIN( pd,
21638             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CONFIGURATION_DESIGN.DESIGN' ) | ( ( cd.name =
21639             'occurrence usage definition'  ) AND ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21640             'PRODUCT_IDENTIFICATION'  ) IN TYPEOF( cd.configuration ) ) ) ) ) ) <> 1 ) ) ) ) = 0 );
21641    wr3: ( SIZEOF( QUERY ( pd <* part_occurrences | ( ( SIZEOF( QUERY ( cd <* USEDIN( pd,
21642             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATED_PRODUCT_DEFINITION' )
21643             | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRODUCT_DEFINITION_USAGE' ) IN TYPEOF( cd ) ) ) ) = 0 )
21644             AND ( SIZEOF( USEDIN( pd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21645             'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE'  ) ) = 0 ) ) ) ) = 0 );
21646    wr4: ( SIZEOF( QUERY ( pd <* part_occurrences | ( ( pd.name = 'selected instance' ) AND ( NOT
21647             valid_selected_instance_representation( pd ) ) ) ) ) = 0 );
21648    wr5: ( SIZEOF( QUERY ( pd <* part_occurrences | ( ( pd.name = 'quantified instance' ) AND ( SIZEOF( QUERY ( ppd <* USEDIN( pd,
21649             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PROPERTY_DEFINITION.DEFINITION' ) | ( ( ppd.name =
21650             'occurrence quantity'  ) AND ( SIZEOF( QUERY ( pdr <* USEDIN( ppd, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21651             + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION' ) | ( ( pdr.used_representation.name = 'quantity' ) AND ( SIZEOF(
21652             pdr.used_representation.items ) = 1 ) AND ( SIZEOF( QUERY ( i <* pdr.used_representation.items | ( ( (
21653             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'MEASURE_REPRESENTATION_ITEM' ) IN TYPEOF( i ) ) AND ( i.name
21654             = 'quantity measure' ) ) ) ) = 1 ) ) ) ) = 1 ) ) ) ) = 0 ) ) ) ) = 0 );
21655    wr6: ( SIZEOF( QUERY ( pd <* part_occurrences | ( ( pd.name = 'specified instance' ) AND ( SIZEOF( QUERY ( pdor <* USEDIN( pd,
21656             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_OCCURRENCE_RELATIONSHIP.OCCURRENCE' ) | (
21657             ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SPECIFIED_HIGHER_USAGE_OCCURRENCE' ) IN TYPEOF( pdor.
21658             occurrence_usage ) ) ) ) = 0 ) ) ) ) = 0 );
21659
21660  END_RULE;
21661
21662  RULE restrict_part_occurrence_category FOR ( product_definition );
21663
21664    LOCAL
21665      part_occurrences : SET OF product_definition := QUERY ( pd <* product_definition | ( pd.frame_of_reference.name =
21666                          'part occurrence'  ) );
21667    END_LOCAL;
21668
21669  WHERE
21670    wr1: ( SIZEOF( QUERY ( pd <* part_occurrences | ( SIZEOF( QUERY ( prpc <* USEDIN( pd.formation.of_product,
21671             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS'  ) | ( prpc.name IN [
21672             'part' , 'raw material', 'tool'] ) ) ) = 0 ) ) ) = 0 );
21673
21674  END_RULE;
21675
21676  RULE restrict_product_definitions_for_base_element FOR ( product_definition_relationship );
21677
21678  WHERE
21679    wr1: ( SIZEOF( QUERY ( pdr <* product_definition_relationship | ( ( pdr.name = 'solution alternative definition' ) AND ( (
21680             NOT ( pdr.relating_product_definition.frame_of_reference.name IN [ 'alternative definition', 'functional definition',
21681             'conceptual definition' ] ) ) OR ( pdr.related_product_definition.frame_of_reference.name <> 'alternative definition' ) ) ) ) )
21682             = 0 );
21683
21684  END_RULE;
21685
21686  RULE restrict_product_definitions_for_collection FOR ( product_definition_relationship );
21687
21688  WHERE
21689    wr1: ( SIZEOF( QUERY ( pdr <* product_definition_relationship | ( ( pdr.name = 'collection membership' ) AND ( ( pdr.
21690             relating_product_definition.frame_of_reference.name <> 'part definition' ) OR ( pdr.related_product_definition.
21691             frame_of_reference.name <> 'part occurrence' ) OR ( SIZEOF( QUERY ( pdca <* USEDIN( pdr.relating_product_definition,
21692             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.DEFINITION' ) | ( (
21693             pdca.role.name = 'part definition type' ) AND ( pdca.frame_of_reference.name = 'collection definition' ) ) ) ) = 0 ) ) ) ) )
21694             = 0 );
21695
21696  END_RULE;
21697
21698  RULE restrict_product_definitions_for_definition_usage FOR ( product_definition_relationship );
21699
21700  WHERE
21701    wr1: ( SIZEOF( QUERY ( pdr <* product_definition_relationship | ( ( pdr.name = 'definition usage' ) AND ( ( pdr.
21702             relating_product_definition.frame_of_reference.name <> 'part definition' ) OR ( pdr.related_product_definition.
21703             frame_of_reference.name <> 'part occurrence' ) ) ) ) ) = 0 );
21704
21705  END_RULE;
21706
21707  RULE restrict_product_definitions_for_design_constraint_association FOR ( product_definition_relationship );
21708
21709  WHERE
21710    wr1: ( SIZEOF( QUERY ( pdr <* product_definition_relationship | ( ( pdr.name = 'design constraint association' ) AND ( ( pdr.
21711             relating_product_definition.frame_of_reference.name <> 'design constraint definition' ) OR ( NOT ( pdr.
21712             related_product_definition.frame_of_reference.name IN [ 'alternative definition', 'functional definition',
21713             'conceptual definition' ] ) ) ) ) ) ) = 0 );
21714
21715  END_RULE;
21716
21717  RULE restrict_product_definitions_for_part_definition_relationship FOR ( product_definition_relationship );
21718
21719  WHERE
21720    wr1: ( SIZEOF( QUERY ( pdr <* product_definition_relationship | ( ( pdr.name IN [ 'geometrical relationship',
21721             'definition replacement' ] ) AND ( ( pdr.relating_product_definition.frame_of_reference.name <> 'part definition' )
21722             OR ( pdr.related_product_definition.frame_of_reference.name <> 'part definition' ) ) ) ) ) = 0 );
21723
21724  END_RULE;
21725
21726  RULE restrict_representation_for_surface_condition FOR ( property_definition_representation );
21727
21728  WHERE
21729    wr1: ( SIZEOF( QUERY ( pdr <* property_definition_representation | ( NOT surface_condition_correlation( pdr.definition, pdr.
21730             used_representation ) ) ) ) = 0 );
21731
21732  END_RULE;
21733
21734  RULE restrict_treatment_result FOR ( representation );
21735
21736    LOCAL
21737      treatment_results : SET OF representation := [];
21738    END_LOCAL;
21739    treatment_results := QUERY ( r <* representation | ( r.name = 'treatment result' ) );
21740
21741  WHERE
21742    wr1: ( ( SIZEOF( QUERY ( r <* treatment_results | ( SIZEOF( r.items ) > 2 ) ) ) = 0 ) AND ( SIZEOF( QUERY ( r <*
21743             treatment_results | ( SIZEOF( QUERY ( i <* r.items | ( NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
21744             'DESCRIPTIVE_REPRESENTATION_ITEM'  ) IN TYPEOF( i ) ) ) ) ) > 0 ) ) ) = 0 ) );
21745    wr2: ( SIZEOF( QUERY ( r <* treatment_results | ( SIZEOF( QUERY ( i <* r.items | ( i.name = 'result' ) ) ) = 0 ) ) ) = 0 );
21746    wr3: ( SIZEOF( QUERY ( r <* treatment_results | ( SIZEOF( QUERY ( i <* r.items | ( i.name = 'purpose' ) ) ) > 1 ) ) ) = 0 );
21747
21748  END_RULE;
21749
21750  RULE selected_instance_usage_requires_representation FOR ( assembly_component_usage );
21751
21752    LOCAL
21753      selected_instance_usages : SET OF assembly_component_usage := QUERY ( acr <* assembly_component_usage | ( acr.name =
21754                                  'selected instance usage'  ) );
21755    END_LOCAL;
21756
21757  WHERE
21758    wr1: ( SIZEOF( QUERY ( acr <* selected_instance_usages | ( NOT valid_selected_instance_representation( acr ) ) ) ) = 0 );
21759
21760  END_RULE;
21761
21762  RULE solution_definition_requires_solution_category FOR ( product_definition );
21763
21764    LOCAL
21765      solution_definitions : SET OF product_definition := [];
21766    END_LOCAL;
21767    solution_definitions := QUERY ( pd <* product_definition | ( pd.frame_of_reference.name = 'alternative definition' ) );
21768
21769  WHERE
21770    wr1: ( SIZEOF( QUERY ( pd <* solution_definitions | ( SIZEOF( QUERY ( prpc <* USEDIN( pd.formation.of_product,
21771             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_RELATED_PRODUCT_CATEGORY.PRODUCTS' ) | ( prpc.name =
21772             'alternative solution'  ) ) ) = 0 ) ) ) = 0 );
21773
21774  END_RULE;
21775
21776  RULE styled_curve FOR ( styled_item );
21777
21778  WHERE
21779    wr1: ( SIZEOF( QUERY ( si <* styled_item | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE' IN TYPEOF( si.item ) )
21780             AND ( SIZEOF( QUERY ( psa <* si.styles | ( SIZEOF( QUERY ( cs <* psa.styles | (
21781             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_STYLE'  IN TYPEOF( cs ) ) ) ) > 0 ) ) ) <> 1 ) ) ) ) = 0 );
21782
21783  END_RULE;
21784
21785  RULE subtype_exclusiveness_geometric_tolerance FOR ( geometric_tolerance );
21786
21787  WHERE
21788    wr1: ( SIZEOF( QUERY ( gt <* geometric_tolerance | ( NOT type_check_function( gt, [
21789             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANGULARITY_TOLERANCE' ,
21790             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_RUNOUT_TOLERANCE' ,
21791             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COAXIALITY_TOLERANCE' ,
21792             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCENTRICITY_TOLERANCE' ,
21793             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CYLINDRICITY_TOLERANCE' ,
21794             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FLATNESS_TOLERANCE' ,
21795             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE_PROFILE_TOLERANCE' ,
21796             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PARALLELISM_TOLERANCE' ,
21797             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PERPENDICULARITY_TOLERANCE' ,
21798             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITION_TOLERANCE' ,
21799             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ROUNDNESS_TOLERANCE' ,
21800             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRAIGHTNESS_TOLERANCE' ,
21801             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_PROFILE_TOLERANCE' ,
21802             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SYMMETRY_TOLERANCE' ,
21803             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOTAL_RUNOUT_TOLERANCE' ], 2 ) ) ) ) = 0 );
21804
21805  END_RULE;
21806
21807  RULE subtype_exclusiveness_representation_item FOR ( representation_item );
21808
21809  WHERE
21810    wr1: ( SIZEOF( QUERY ( cri <* representation_item | ( NOT type_check_function( cri, [
21811             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
21812             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM' ,
21813             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_REPRESENTATION_ITEM' ], 3 ) ) ) ) = 0 );
21814
21815  END_RULE;
21816
21817  RULE subtype_mandatory_shape_representation FOR ( shape_representation );
21818
21819  WHERE
21820    wr1: ( SIZEOF( QUERY ( sr <* shape_representation | ( NOT ( ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21821             + 'ADVANCED_BREP_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21822             + 'FACETED_BREP_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21823             + 'MANIFOLD_SURFACE_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21824             + 'MANIFOLD_SUBSURFACE_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21825             + 'EDGE_BASED_WIREFRAME_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21826             + 'SHELL_BASED_WIREFRAME_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21827             + 'GEOMETRICALLY_BOUNDED_SURFACE_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21828             + 'GEOMETRICALLY_BOUNDED_WIREFRAME_SHAPE_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21829             + 'BEVELED_SHEET_REPRESENTATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_SHEET_REPRESENTATION',
21830             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOUND_SHAPE_REPRESENTATION' ,
21831             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_2D_SHAPE_REPRESENTATION' ,
21832             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CSG_SHAPE_REPRESENTATION' ,
21833             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_SWEPT_SOLID_SHAPE_REPRESENTATION' ,
21834             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION_SHAPE_REPRESENTATION' ,
21835             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_BREP_SHAPE_REPRESENTATION' ,
21836             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SHAPE_REPRESENTATION' ,
21837             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GEOMETRICALLY_BOUNDED_2D_WIREFRAME_REPRESENTATION' ,
21838             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOCATION_SHAPE_REPRESENTATION' ,
21839             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NEUTRAL_SKETCH_REPRESENTATION' ,
21840             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NON_MANIFOLD_SURFACE_SHAPE_REPRESENTATION' ,
21841             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_SHAPE_REPRESENTATION' ,
21842             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_SHAPE_REPRESENTATION' ,
21843             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROCEDURAL_SHAPE_REPRESENTATION' ,
21844             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' ,
21845             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DIMENSION_REPRESENTATION' ,
21846             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION_WITH_PARAMETERS' ,
21847             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TESSELLATED_SHAPE_REPRESENTATION' ] * TYPEOF( sr ) ) = 1 ) OR (
21848             SIZEOF( QUERY ( it <* sr\representation.items | ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
21849             + 'AXIS2_PLACEMENT_3D'  IN TYPEOF( it ) ) ) ) ) = 0 ) OR ( SIZEOF( QUERY ( sdr <* QUERY ( pdr <* USEDIN( sr,
21850             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION_REPRESENTATION.'  + 'USED_REPRESENTATION' ) |
21851             ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_DEFINITION_REPRESENTATION' IN TYPEOF( pdr ) ) ) | ( NOT (
21852             SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT',
21853             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT_RELATIONSHIP' ] * TYPEOF( sdr.definition ) ) = 1 ) ) ) )
21854             = 0 ) ) ) ) ) = 0 );
21855
21856  END_RULE;
21857
21858  RULE text_font_usage FOR ( externally_defined_text_font, pre_defined_text_font );
21859
21860  WHERE
21861    wr1: ( SIZEOF( QUERY ( pdtf <* pre_defined_text_font | ( SIZEOF( USEDIN( pdtf,
21862             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL.FONT'  ) ) = 0 ) ) ) = 0 );
21863    wr2: ( SIZEOF( QUERY ( edtf <* externally_defined_text_font | ( SIZEOF( USEDIN( edtf,
21864             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TEXT_LITERAL.FONT'  ) ) = 0 ) ) ) = 0 );
21865
21866  END_RULE;
21867
21868  RULE tolerance_zone_form_name_constraint FOR ( tolerance_zone_form );
21869
21870    LOCAL
21871      names : SET OF STRING := [ 'within a circle', 'between two concentric circles', 'between two equidistant curves',
21872               'within a cylinder' , 'between two coaxial cylinders', 'between two equidistant surfaces', 'non uniform',
21873               'cylindrical or circular' , 'spherical', 'unknown'];
21874      pass  : BOOLEAN := TRUE;
21875    END_LOCAL;
21876    REPEAT i := 1 TO SIZEOF( tolerance_zone_form ) BY 1 WHILE pass;
21877      pass := tolerance_zone_form[i].name IN names;
21878    END_REPEAT;
21879
21880  WHERE
21881    wr1: pass;
21882
21883  END_RULE;
21884
21885  RULE transition_feature_life_cycle FOR ( transition_feature );
21886
21887  WHERE
21888    wr1: ( SIZEOF( QUERY ( tf <* transition_feature | ( NOT ( tf.of_shape.definition.frame_of_reference.life_cycle_stage =
21889             'manufacturing planning'  ) ) ) ) = 0 );
21890
21891  END_RULE;
21892
21893  RULE transition_feature_on_part_boundary FOR ( transition_feature );
21894
21895  WHERE
21896    wr1: ( SIZEOF( QUERY ( tf <* transition_feature | ( NOT tf.product_definitional ) ) ) = 0 );
21897
21898  END_RULE;
21899
21900  RULE unique_datum_system FOR ( datum_system );
21901
21902    LOCAL
21903      pass : BOOLEAN := TRUE;
21904    END_LOCAL;
21905    REPEAT i := 1 TO SIZEOF( datum_system ) BY 1;
21906      REPEAT j := 1 TO SIZEOF( datum_system ) BY 1;
21907        IF i <> j THEN
21908          IF datum_system[i]\datum_system.constituents = datum_system[j]\datum_system.constituents THEN
21909            pass := FALSE;
21910          END_IF;
21911        END_IF;
21912      END_REPEAT;
21913    END_REPEAT;
21914
21915  WHERE
21916    wr1: pass;
21917
21918  END_RULE;
21919
21920  RULE unique_gdt_element_id_constraint FOR ( product_definition_shape, dimensional_location, dimensional_size, shape_aspect,
21921             shape_aspect_relationship );
21922
21923    LOCAL
21924      bss  : BAG OF STRING := [];
21925      sar  : SET OF shape_aspect_relationship := QUERY ( sar <* shape_aspect_relationship | EXISTS( sar\shape_aspect_relationship
21926              .id ) );
21927      ds   : SET OF dimensional_size := QUERY ( ds <* dimensional_size | EXISTS( ds\dimensional_size.id ) );
21928      ssa  : SET OF shape_aspect := [];
21929      sa   : SET OF shape_aspect := QUERY ( sa <* shape_aspect | EXISTS( sa\shape_aspect.id ) );
21930      pass : BOOLEAN := TRUE;
21931    END_LOCAL;
21932    REPEAT ii := 1 TO SIZEOF( product_definition_shape ) BY 1 WHILE pass;
21933      bss := [];
21934      ssa := bag_to_set( USEDIN( product_definition_shape[ii], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_ASPECT.'
21935          + 'OF_SHAPE' ) );
21936      REPEAT i := 1 TO SIZEOF( ds ) BY 1;
21937        IF ds[i]\dimensional_size.applies_to IN ssa THEN
21938          bss := bss + ds[i]\dimensional_size.id;
21939        END_IF;
21940      END_REPEAT;
21941      REPEAT i := 1 TO SIZEOF( sa ) BY 1;
21942        IF sa[i] IN ssa THEN
21943          bss := bss + sa[i]\shape_aspect.id;
21944        END_IF;
21945      END_REPEAT;
21946      REPEAT i := 1 TO SIZEOF( sar ) BY 1;
21947        IF sar[i]\shape_aspect_relationship.relating_shape_aspect IN ssa THEN
21948          bss := bss + sar[i]\shape_aspect_relationship.id;
21949        END_IF;
21950      END_REPEAT;
21951      IF SIZEOF( bag_to_set( bss ) ) <> SIZEOF( bss ) THEN
21952        pass := FALSE;
21953      END_IF;
21954    END_REPEAT;
21955
21956  WHERE
21957    wr1: pass;
21958
21959  END_RULE;
21960
21961  RULE valid_product_and_manufacturing_information_view_contexts FOR ( product_definition_context );
21962
21963    LOCAL
21964      material_specification_view_contexts                 : SET OF product_definition_context := QUERY ( pdc <*
21965                                                              product_definition_context | ( pdc.frame_of_reference.application =
21966                                                              'material specification'  ) );
21967      need_initial_model_based_view_contexts               : SET OF product_definition_context :=
21968                                                              gdt_representation_view_contexts +
21969                                                              model_based_3d_annotation_presentation_view_contexts;
21970      additional_view_contexts                             : SET OF product_definition_context :=
21971                                                              gdt_representation_view_contexts + machining_feature_view_contexts +
21972                                                              material_specification_view_contexts +
21973                                                              model_based_3d_annotation_presentation_view_contexts +
21974                                                              process_state_view_contexts + surface_finish_view_contexts;
21975      process_state_view_contexts                          : SET OF product_definition_context := QUERY ( pdc <*
21976                                                              product_definition_context | ( pdc.frame_of_reference.application =
21977                                                              'process state'  ) );
21978      model_based_view_contexts                            : SET OF product_definition_context := QUERY ( pdc <*
21979                                                              product_definition_context | ( pdc.frame_of_reference.application =
21980                                                              'model based product geometry'  ) );
21981      design_view_contexts                                 : SET OF product_definition_context := QUERY ( pdc <*
21982                                                              product_definition_context | ( pdc.life_cycle_stage = 'design' ) );
21983      model_based_3d_annotation_presentation_view_contexts : SET OF product_definition_context := QUERY ( pdc <*
21984                                                              product_definition_context | ( pdc.frame_of_reference.application =
21985                                                              'model based 3D annotation presentation'  ) );
21986      surface_finish_view_contexts                         : SET OF product_definition_context := QUERY ( pdc <*
21987                                                              product_definition_context | ( pdc.frame_of_reference.application =
21988                                                              'surface finish'  ) );
21989      gdt_representation_view_contexts                     : SET OF product_definition_context := QUERY ( pdc <*
21990                                                              product_definition_context | ( pdc.frame_of_reference.application =
21991                                                              'geometrical dimensioning and tolerancing representation'  ) );
21992      machining_feature_view_contexts                      : SET OF product_definition_context := QUERY ( pdc <*
21993                                                              product_definition_context | ( pdc.frame_of_reference.application =
21994                                                              'machining feature'  ) );
21995    END_LOCAL;
21996
21997  WHERE
21998    wr1 : ( SIZEOF( gdt_representation_view_contexts * design_view_contexts ) = SIZEOF( gdt_representation_view_contexts ) );
21999    wr2 : ( SIZEOF( machining_feature_view_contexts * design_view_contexts ) = SIZEOF( machining_feature_view_contexts ) );
22000    wr3 : ( SIZEOF( material_specification_view_contexts * design_view_contexts ) = SIZEOF( material_specification_view_contexts ) );
22001    wr4 : ( SIZEOF( model_based_3d_annotation_presentation_view_contexts * design_view_contexts ) = SIZEOF(
22002              model_based_3d_annotation_presentation_view_contexts ) );
22003    wr5 : ( SIZEOF( model_based_view_contexts * design_view_contexts ) = SIZEOF( model_based_view_contexts ) );
22004    wr6 : ( SIZEOF( process_state_view_contexts * design_view_contexts ) = SIZEOF( process_state_view_contexts ) );
22005    wr7 : ( SIZEOF( surface_finish_view_contexts * design_view_contexts ) = SIZEOF( surface_finish_view_contexts ) );
22006    wr8 : ( SIZEOF( QUERY ( mbvc <* model_based_view_contexts | ( SIZEOF( USEDIN( mbvc,
22007              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE'  ) ) =
22008              0 ) ) ) = SIZEOF( model_based_view_contexts ) );
22009    wr9 : ( SIZEOF( QUERY ( avc <* additional_view_contexts | ( SIZEOF( USEDIN( avc,
22010              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION.FRAME_OF_REFERENCE'  ) ) = 0 ) ) ) = SIZEOF(
22011              additional_view_contexts ) );
22012    wr10: ( SIZEOF( QUERY ( nimbvc <* need_initial_model_based_view_contexts | ( NOT ( SIZEOF( QUERY ( pdca <* USEDIN( nimbvc,
22013              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_CONTEXT_ASSOCIATION.FRAME_OF_REFERENCE'  ) | (
22014              pdca\product_definition_context_association.definition\product_definition.frame_of_reference IN
22015              model_based_view_contexts ) ) ) = SIZEOF( need_initial_model_based_view_contexts ) ) ) ) ) = 0 );
22016    wr11: ( SIZEOF( QUERY ( gdt_pdc <* gdt_representation_view_contexts | ( SIZEOF( [ 'ISO 1101', 'ASME Y14.5'] *
22017              get_associated_mandatory_document_ids( gdt_pdc ) ) = 0 ) ) ) = 0 );
22018    wr12: ( SIZEOF( QUERY ( mb3d_pdc <* model_based_3d_annotation_presentation_view_contexts | ( SIZEOF( [ 'ISO 1101', 'ISO 16792',
22019              'ASME Y14.41' , 'ASME Y14.5'] * get_associated_mandatory_document_ids( mb3d_pdc ) ) = 0 ) ) ) = 0 );
22020
22021  END_RULE;
22022
22023  RULE validate_dependently_instantiable_entity_data_types FOR ( abstracted_expression_function, action_method_role,
22024              action_resource_type, application_defined_function, atom_based_literal, attribute_value_role, b_spline_basis,
22025              b_spline_function, basic_sparse_matrix, binary_literal, camera_model_d2, cartesian_complex_number_region,
22026              cartesian_transformation_operator, complex_number_literal, concept_feature_relationship,
22027              concept_feature_relationship_with_condition, constant_function, definite_integral_expression,
22028              definite_integral_function, document_usage_constraint, edge_blended_solid, effectivity_context_role,
22029              elementary_function, event_occurrence_role, explicit_procedural_representation_item_relationship,
22030              explicit_table_function, expression_denoted_function, extended_tuple_space, externally_listed_data, finite_function,
22031              founded_item, function_application, function_space, general_linear_function, homogeneous_linear_function,
22032              imported_curve_function, imported_point_function, imported_surface_function, imported_volume_function,
22033              indirectly_selected_elements, integer_tuple_literal, linearized_table_function, listed_data, maths_enum_literal,
22034              maths_function, maths_tuple_literal, modified_solid_with_placed_configuration, one_direction_repeat_factor,
22035              oriented_open_shell, oriented_path, parallel_composed_function, partial_derivative_expression,
22036              partial_derivative_function, polar_complex_number_region, procedural_representation,
22037              procedural_representation_sequence, product_definition_effectivity, quantifier_expression, rationalize_function,
22038              real_tuple_literal, reindexed_array_function, repackaging_function, restriction_function, runout_zone_orientation,
22039              selector_function, series_composed_function, solid_with_depression, solid_with_hole, solid_with_pocket,
22040              solid_with_protrusion, solid_with_shape_element_pattern, solid_with_slot, swept_area_solid, symbol_target,
22041              two_direction_repeat_factor, user_selected_elements, volume );
22042
22043    LOCAL
22044      set_of_input_types        : SET OF STRING := [];
22045      number_of_input_instances : INTEGER;
22046      all_instances             : SET OF GENERIC := [];
22047      previous_in_chain         : LIST OF GENERIC := [];
22048    END_LOCAL;
22049    all_instances := all_instances + abstracted_expression_function;
22050    all_instances := all_instances + action_method_role;
22051    all_instances := all_instances + action_resource_type;
22052    all_instances := all_instances + application_defined_function;
22053    all_instances := all_instances + atom_based_literal;
22054    all_instances := all_instances + attribute_value_role;
22055    all_instances := all_instances + b_spline_basis;
22056    all_instances := all_instances + b_spline_function;
22057    all_instances := all_instances + basic_sparse_matrix;
22058    all_instances := all_instances + binary_literal;
22059    all_instances := all_instances + camera_model_d2;
22060    all_instances := all_instances + cartesian_complex_number_region;
22061    all_instances := all_instances + cartesian_transformation_operator;
22062    all_instances := all_instances + complex_number_literal;
22063    all_instances := all_instances + concept_feature_relationship;
22064    all_instances := all_instances + concept_feature_relationship_with_condition;
22065    all_instances := all_instances + constant_function;
22066    all_instances := all_instances + definite_integral_expression;
22067    all_instances := all_instances + definite_integral_function;
22068    all_instances := all_instances + document_usage_constraint;
22069    all_instances := all_instances + edge_blended_solid;
22070    all_instances := all_instances + effectivity_context_role;
22071    all_instances := all_instances + elementary_function;
22072    all_instances := all_instances + event_occurrence_role;
22073    all_instances := all_instances + explicit_procedural_representation_item_relationship;
22074    all_instances := all_instances + explicit_table_function;
22075    all_instances := all_instances + expression_denoted_function;
22076    all_instances := all_instances + extended_tuple_space;
22077    all_instances := all_instances + externally_listed_data;
22078    all_instances := all_instances + finite_function;
22079    all_instances := all_instances + founded_item;
22080    all_instances := all_instances + function_application;
22081    all_instances := all_instances + function_space;
22082    all_instances := all_instances + general_linear_function;
22083    all_instances := all_instances + homogeneous_linear_function;
22084    all_instances := all_instances + imported_curve_function;
22085    all_instances := all_instances + imported_point_function;
22086    all_instances := all_instances + imported_surface_function;
22087    all_instances := all_instances + imported_volume_function;
22088    all_instances := all_instances + indirectly_selected_elements;
22089    all_instances := all_instances + integer_tuple_literal;
22090    all_instances := all_instances + linearized_table_function;
22091    all_instances := all_instances + listed_data;
22092    all_instances := all_instances + maths_enum_literal;
22093    all_instances := all_instances + maths_function;
22094    all_instances := all_instances + maths_tuple_literal;
22095    all_instances := all_instances + modified_solid_with_placed_configuration;
22096    all_instances := all_instances + one_direction_repeat_factor;
22097    all_instances := all_instances + oriented_open_shell;
22098    all_instances := all_instances + oriented_path;
22099    all_instances := all_instances + parallel_composed_function;
22100    all_instances := all_instances + partial_derivative_expression;
22101    all_instances := all_instances + partial_derivative_function;
22102    all_instances := all_instances + polar_complex_number_region;
22103    all_instances := all_instances + procedural_representation;
22104    all_instances := all_instances + procedural_representation_sequence;
22105    all_instances := all_instances + product_definition_effectivity;
22106    all_instances := all_instances + quantifier_expression;
22107    all_instances := all_instances + rationalize_function;
22108    all_instances := all_instances + real_tuple_literal;
22109    all_instances := all_instances + reindexed_array_function;
22110    all_instances := all_instances + repackaging_function;
22111    all_instances := all_instances + restriction_function;
22112    all_instances := all_instances + runout_zone_orientation;
22113    all_instances := all_instances + selector_function;
22114    all_instances := all_instances + series_composed_function;
22115    all_instances := all_instances + solid_with_depression;
22116    all_instances := all_instances + solid_with_hole;
22117    all_instances := all_instances + solid_with_pocket;
22118    all_instances := all_instances + solid_with_protrusion;
22119    all_instances := all_instances + solid_with_shape_element_pattern;
22120    all_instances := all_instances + solid_with_slot;
22121    all_instances := all_instances + swept_area_solid;
22122    all_instances := all_instances + symbol_target;
22123    all_instances := all_instances + two_direction_repeat_factor;
22124    all_instances := all_instances + user_selected_elements;
22125    all_instances := all_instances + volume;
22126    number_of_input_instances := SIZEOF( all_instances );
22127    REPEAT i := 1 TO number_of_input_instances BY 1;
22128      set_of_input_types := set_of_input_types + TYPEOF( all_instances[i] );
22129    END_REPEAT;
22130
22131  WHERE
22132    wr1: dependently_instantiated( all_instances, set_of_input_types, previous_in_chain );
22133
22134  END_RULE;
22135
22136  FUNCTION acyclic(
22137               arg1 : generic_expression;
22138               arg2 : SET OF generic_expression
22139           ) : BOOLEAN;
22140
22141    LOCAL
22142      result : BOOLEAN := TRUE;
22143    END_LOCAL;
22144    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_GENERIC_EXPRESSION' IN TYPEOF( arg1 ) THEN
22145      RETURN( TRUE );
22146    END_IF;
22147    IF arg1 IN arg2 THEN
22148      RETURN( FALSE );
22149    END_IF;
22150    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF( arg1 ) THEN
22151      RETURN( acyclic( arg1\unary_generic_expression.operand, arg2 + [arg1] ) );
22152    END_IF;
22153    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_GENERIC_EXPRESSION' IN TYPEOF( arg1 ) THEN
22154      RETURN( acyclic( arg1\binary_generic_expression.operands[1], arg2 + [arg1] ) AND acyclic( arg1\binary_generic_expression.
22155          operands[2], arg2 + [arg1] ) );
22156    END_IF;
22157    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF( arg1 ) THEN
22158      result := TRUE;
22159      REPEAT i := 1 TO SIZEOF( arg1\multiple_arity_generic_expression.operands ) BY 1;
22160        result := result AND acyclic( arg1\multiple_arity_generic_expression.operands[i], arg2 + [arg1] );
22161      END_REPEAT;
22162      RETURN( result );
22163    END_IF;
22164    RETURN( result );
22165
22166  END_FUNCTION;
22167
22168  FUNCTION acyclic_composite_text(
22169               start_composite : composite_text;
22170               child_text : SET [1 : ?] OF text_or_character
22171           ) : LOGICAL;
22172
22173    LOCAL
22174      i                     : INTEGER;
22175      local_children        : SET [0 : ?] OF text_or_character;
22176      local_annotation_text : SET [0 : ?] OF annotation_text;
22177      local_composite_text  : SET [0 : ?] OF composite_text;
22178    END_LOCAL;
22179    local_composite_text := QUERY ( child <* child_text | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' IN
22180        TYPEOF( child ) ) );
22181    IF SIZEOF( local_composite_text ) > 0 THEN
22182      REPEAT i := 1 TO HIINDEX( local_composite_text ) BY 1;
22183        IF start_composite :=: local_composite_text[i] THEN
22184          RETURN( FALSE );
22185        END_IF;
22186      END_REPEAT;
22187    END_IF;
22188    local_children := child_text;
22189    IF SIZEOF( local_composite_text ) > 0 THEN
22190      REPEAT i := 1 TO HIINDEX( local_composite_text ) BY 1;
22191        local_children := local_children + local_composite_text[i].collected_text;
22192      END_REPEAT;
22193    END_IF;
22194    local_annotation_text := QUERY ( child <* child_text | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT' IN
22195        TYPEOF( child ) ) );
22196    IF SIZEOF( local_annotation_text ) > 0 THEN
22197      REPEAT i := 1 TO HIINDEX( local_annotation_text ) BY 1;
22198        local_children := local_children + QUERY ( item <* local_annotation_text[i]\mapped_item.mapping_source.
22199            mapped_representation.items | ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ANNOTATION_TEXT',
22200            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_TEXT' ] * TYPEOF( item ) ) > 0 ) );
22201      END_REPEAT;
22202    END_IF;
22203    IF local_children :<>: child_text THEN
22204      RETURN( acyclic_composite_text( start_composite, local_children ) );
22205    ELSE
22206      RETURN( TRUE );
22207    END_IF;
22208
22209  END_FUNCTION;
22210
22211  FUNCTION acyclic_curve_replica(
22212               rep : curve_replica;
22213               parent : curve
22214           ) : BOOLEAN;
22215    IF NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( parent ) ) THEN
22216      RETURN( TRUE );
22217    END_IF;
22218    IF parent :=: rep THEN
22219      RETURN( FALSE );
22220    ELSE
22221      RETURN( acyclic_curve_replica( rep, parent\curve_replica.parent_curve ) );
22222    END_IF;
22223
22224  END_FUNCTION;
22225
22226  FUNCTION acyclic_mapped_representation(
22227               mi : mapped_item
22228           ) : BOOLEAN;
22229
22230    LOCAL
22231      mis : SET OF mapped_item;
22232      rms : SET OF representation_map;
22233      rs1 : SET OF representation;
22234      rs2 : SET OF representation;
22235    END_LOCAL;
22236    rs1 := using_representations( mi );
22237    rs2 := [];
22238    REPEAT WHILE SIZEOF( rs1 ) > 0;
22239      REPEAT i := 1 TO HIINDEX( rs1 ) BY 1;
22240        rms := bag_to_set( USEDIN( rs1[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.'
22241            + 'MAPPED_REPRESENTATION'  ) );
22242        IF SIZEOF( rms ) > 0 THEN
22243          REPEAT j := 1 TO HIINDEX( rms ) BY 1;
22244            mis := bag_to_set( USEDIN( rms[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE' ) );
22245            IF SIZEOF( mis ) > 0 THEN
22246              REPEAT j := 1 TO HIINDEX( mis ) BY 1;
22247                IF mis[i] :=: mi THEN
22248                  RETURN( FALSE );
22249                END_IF;
22250                rs2 := rs2 + using_representations( mis[i] );
22251              END_REPEAT;
22252            END_IF;
22253          END_REPEAT;
22254        END_IF;
22255      END_REPEAT;
22256      rs1 := rs2;
22257      rs2 := [];
22258    END_REPEAT;
22259    RETURN( TRUE );
22260
22261  END_FUNCTION;
22262
22263  FUNCTION acyclic_point_replica(
22264               rep : point_replica;
22265               parent : point
22266           ) : BOOLEAN;
22267    IF NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA' IN TYPEOF( parent ) ) THEN
22268      RETURN( TRUE );
22269    END_IF;
22270    IF parent :=: rep THEN
22271      RETURN( FALSE );
22272    ELSE
22273      RETURN( acyclic_point_replica( rep, parent\point_replica.parent_pt ) );
22274    END_IF;
22275
22276  END_FUNCTION;
22277
22278  FUNCTION acyclic_product_category_relationship(
22279               relation : product_category_relationship;
22280               children : SET OF product_category
22281           ) : BOOLEAN;
22282
22283    LOCAL
22284      x              : SET OF product_category_relationship;
22285      local_children : SET OF product_category;
22286    END_LOCAL;
22287    REPEAT i := 1 TO HIINDEX( children ) BY 1;
22288      IF relation.category :=: children[i] THEN
22289        RETURN( FALSE );
22290      END_IF;
22291    END_REPEAT;
22292    x := bag_to_set( USEDIN( relation.category, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
22293        'PRODUCT_CATEGORY_RELATIONSHIP.SUB_CATEGORY'  ) );
22294    local_children := children + relation.category;
22295    IF SIZEOF( x ) > 0 THEN
22296      REPEAT i := 1 TO HIINDEX( x ) BY 1;
22297        IF NOT acyclic_product_category_relationship( x[i], local_children ) THEN
22298          RETURN( FALSE );
22299        END_IF;
22300      END_REPEAT;
22301    END_IF;
22302    RETURN( TRUE );
22303
22304  END_FUNCTION;
22305
22306  FUNCTION acyclic_product_definition_relationship(
22307               relation : product_definition_relationship;
22308               relatives : SET [1 : ?] OF product_definition_or_reference;
22309               specific_relation : STRING
22310           ) : BOOLEAN;
22311
22312    LOCAL
22313      x : SET OF product_definition_relationship;
22314    END_LOCAL;
22315    IF relation.relating_product_definition IN relatives THEN
22316      RETURN( FALSE );
22317    END_IF;
22318    x := QUERY ( pd <* bag_to_set( USEDIN( relation.relating_product_definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
22319        + 'PRODUCT_DEFINITION_RELATIONSHIP.' + 'RELATED_PRODUCT_DEFINITION' ) ) | ( specific_relation IN TYPEOF( pd ) ) );
22320    REPEAT i := 1 TO HIINDEX( x ) BY 1;
22321      IF NOT acyclic_product_definition_relationship( x[i], relatives + relation.relating_product_definition, specific_relation )
22322          THEN
22323        RETURN( FALSE );
22324      END_IF;
22325    END_REPEAT;
22326    RETURN( TRUE );
22327
22328  END_FUNCTION;
22329
22330  FUNCTION acyclic_representation_relationship(
22331               relation : representation_relationship;
22332               relatives : SET [1 : ?] OF representation;
22333               specific_relation : STRING
22334           ) : BOOLEAN;
22335
22336    LOCAL
22337      x : SET OF representation_relationship;
22338    END_LOCAL;
22339    IF relation.rep_1 IN relatives THEN
22340      RETURN( FALSE );
22341    END_IF;
22342    x := QUERY ( r <* bag_to_set( USEDIN( relation.rep_1, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
22343        'REPRESENTATION_RELATIONSHIP.'  + 'REP_2' ) ) | ( specific_relation IN TYPEOF( r ) ) );
22344    REPEAT i := 1 TO HIINDEX( x ) BY 1;
22345      IF NOT acyclic_representation_relationship( x[i], relatives + relation.rep_1, specific_relation ) THEN
22346        RETURN( FALSE );
22347      END_IF;
22348    END_REPEAT;
22349    RETURN( TRUE );
22350
22351  END_FUNCTION;
22352
22353  FUNCTION acyclic_shape_aspect_relationship(
22354               relation : shape_aspect_relationship;
22355               relatives : SET [1 : ?] OF shape_aspect;
22356               specific_relation : STRING
22357           ) : BOOLEAN;
22358
22359    LOCAL
22360      x : SET OF shape_aspect_relationship;
22361    END_LOCAL;
22362    IF relation.relating_shape_aspect IN relatives THEN
22363      RETURN( FALSE );
22364    END_IF;
22365    x := QUERY ( sa <* bag_to_set( USEDIN( relation.relating_shape_aspect, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
22366        'SHAPE_ASPECT_RELATIONSHIP.'  + 'RELATED_SHAPE_ASPECT' ) ) | ( specific_relation IN TYPEOF( sa ) ) );
22367    REPEAT i := 1 TO HIINDEX( x ) BY 1;
22368      IF NOT acyclic_shape_aspect_relationship( x[i], relatives + relation.relating_shape_aspect, specific_relation ) THEN
22369        RETURN( FALSE );
22370      END_IF;
22371    END_REPEAT;
22372    RETURN( TRUE );
22373
22374  END_FUNCTION;
22375
22376  FUNCTION acyclic_solid_replica(
22377               rep : solid_replica;
22378               parent : solid_model
22379           ) : BOOLEAN;
22380    IF NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_REPLICA' IN TYPEOF( parent ) ) THEN
22381      RETURN( TRUE );
22382    END_IF;
22383    IF parent :=: rep THEN
22384      RETURN( FALSE );
22385    ELSE
22386      RETURN( acyclic_solid_replica( rep, parent\solid_replica.parent_solid ) );
22387    END_IF;
22388
22389  END_FUNCTION;
22390
22391  FUNCTION acyclic_surface_replica(
22392               rep : surface_replica;
22393               parent : surface
22394           ) : BOOLEAN;
22395    IF NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF( parent ) ) THEN
22396      RETURN( TRUE );
22397    END_IF;
22398    IF parent :=: rep THEN
22399      RETURN( FALSE );
22400    ELSE
22401      RETURN( acyclic_surface_replica( rep, parent\surface_replica.parent_surface ) );
22402    END_IF;
22403
22404  END_FUNCTION;
22405
22406  FUNCTION advanced_face_properties(
22407               testface : face
22408           ) : BOOLEAN;
22409    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ADVANCED_FACE' IN TYPEOF( testface ) THEN
22410      RETURN( TRUE );
22411    END_IF;
22412    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBFACE' IN TYPEOF( testface ) THEN
22413      RETURN( advanced_face_properties( testface\subface.parent_face ) );
22414    ELSE
22415      RETURN( FALSE );
22416    END_IF;
22417
22418  END_FUNCTION;
22419
22420  FUNCTION all_members_of_es(
22421               sv : SET OF maths_value;
22422               es : elementary_space_enumerators
22423           ) : LOGICAL;
22424
22425    CONSTANT
22426      base_types : SET OF STRING :=
22427                    [ 'NUMBER', 'COMPLEX_NUMBER_LITERAL', 'REAL', 'INTEGER', 'LOGICAL', 'BOOLEAN', 'STRING', 'BINARY',
22428                      'MATHS_SPACE' , 'MATHS_FUNCTION', 'LIST', 'ELEMENTARY_SPACE_ENUMERATORS', 'ORDERING_TYPE', 'LOWER_UPPER',
22429                      'SYMMETRY_TYPE' , 'ELEMENTARY_FUNCTION_ENUMERATORS', 'OPEN_CLOSED', 'SPACE_CONSTRAINT_TYPE',
22430                      'REPACKAGE_OPTIONS' , 'EXTENSION_OPTIONS'];
22431    END_CONSTANT;
22432
22433    LOCAL
22434      ge       : generic_expression;
22435      v        : maths_value;
22436      cum      : LOGICAL := TRUE;
22437      key_type : STRING := '';
22438      types    : SET OF STRING;
22439      vspc     : maths_space;
22440    END_LOCAL;
22441    IF ( NOT EXISTS( sv ) ) OR ( NOT EXISTS( es ) ) THEN
22442      RETURN( FALSE );
22443    END_IF;
22444    CASE es OF
22445      es_numbers        :         key_type := 'NUMBER';
22446      es_complex_numbers :         key_type := 'COMPLEX_NUMBER_LITERAL';
22447      es_reals          :         key_type := 'REAL';
22448      es_integers       :         key_type := 'INTEGER';
22449      es_logicals       :         key_type := 'LOGICAL';
22450      es_booleans       :         key_type := 'BOOLEAN';
22451      es_strings        :         key_type := 'STRING';
22452      es_binarys        :         key_type := 'BINARY';
22453      es_maths_spaces   :         key_type := 'MATHS_SPACE';
22454      es_maths_functions :         key_type := 'MATHS_FUNCTION';
22455      es_generics       :         RETURN( TRUE );
22456      END_CASE;
22457    REPEAT i := 1 TO SIZEOF( sv ) BY 1;
22458      IF NOT EXISTS( sv[i] ) THEN
22459        RETURN( FALSE );
22460      END_IF;
22461      v := simplify_maths_value( sv[i] );
22462      types := stripped_typeof( v );
22463      IF key_type IN types THEN
22464        SKIP;
22465      END_IF;
22466      IF ( es = es_numbers ) AND ( 'COMPLEX_NUMBER_LITERAL' IN types ) THEN
22467        SKIP;
22468      END_IF;
22469      IF SIZEOF( base_types * types ) > 0 THEN
22470        RETURN( FALSE );
22471      END_IF;
22472      ge := v;
22473      IF has_values_space( ge ) THEN
22474        vspc := values_space_of( ge );
22475        IF NOT subspace_of_es( vspc, es ) THEN
22476          IF NOT compatible_spaces( vspc, make_elementary_space( es ) ) THEN
22477            RETURN( FALSE );
22478          END_IF;
22479          cum := UNKNOWN;
22480        END_IF;
22481      ELSE
22482        cum := UNKNOWN;
22483      END_IF;
22484      IF cum = FALSE THEN
22485        RETURN( FALSE );
22486      END_IF;
22487    END_REPEAT;
22488    RETURN( cum );
22489
22490  END_FUNCTION;
22491
22492  FUNCTION any_space_satisfies(
22493               sc : space_constraint_type;
22494               spc : maths_space
22495           ) : BOOLEAN;
22496
22497    LOCAL
22498      spc_id : elementary_space_enumerators;
22499    END_LOCAL;
22500    IF ( sc = sc_equal ) OR ( NOT ( 'ELEMENTARY_SPACE' IN stripped_typeof( spc ) ) ) THEN
22501      RETURN( FALSE );
22502    END_IF;
22503    spc_id := spc\elementary_space.space_id;
22504    IF sc = sc_subspace THEN
22505      RETURN( bool( spc_id = es_generics ) );
22506    END_IF;
22507    IF sc = sc_member THEN
22508      RETURN( bool( ( spc_id = es_generics ) OR ( spc_id = es_maths_spaces ) ) );
22509    END_IF;
22510    RETURN( ? );
22511
22512  END_FUNCTION;
22513
22514  FUNCTION aspect_ratio(
22515               p : planar_box
22516           ) : positive_ratio_measure;
22517    IF ( p.size_in_x > 0 ) AND ( p.size_in_y > 0 ) THEN
22518      RETURN( p.size_in_x DIV p.size_in_y );
22519    ELSE
22520      RETURN( ? );
22521    END_IF;
22522
22523  END_FUNCTION;
22524
22525  FUNCTION assembly_leaf(
22526               item : product_definition
22527           ) : BOOLEAN;
22528
22529    LOCAL
22530      local_relation  : SET OF assembly_component_usage := [];
22531      local_relation2 : BAG OF assembly_component_usage := [];
22532    END_LOCAL;
22533    local_relation2 := local_relation2 + QUERY ( pdr <* USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
22534        + 'PRODUCT_DEFINITION_RELATIONSHIP.RELATING_PRODUCT_DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
22535        + 'ASSEMBLY_COMPONENT_USAGE'  IN TYPEOF( pdr ) ) );
22536    local_relation := bag_to_set( local_relation2 );
22537    IF SIZEOF( local_relation ) = 0 THEN
22538      RETURN( TRUE );
22539    ELSE
22540      RETURN( FALSE );
22541    END_IF;
22542
22543  END_FUNCTION;
22544
22545  FUNCTION assembly_root(
22546               item : product_definition
22547           ) : BOOLEAN;
22548    IF SIZEOF( QUERY ( pdr <* USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.' +
22549        'RELATED_PRODUCT_DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN
22550        TYPEOF( pdr ) ) ) ) = 0 THEN
22551      RETURN( TRUE );
22552    ELSE
22553      RETURN( FALSE );
22554    END_IF;
22555
22556  END_FUNCTION;
22557
22558  FUNCTION assoc_product_space(
22559               ts1, ts2 : tuple_space
22560           ) : tuple_space;
22561
22562    LOCAL
22563      et1     : extended_tuple_space := the_tuples;
22564      et2     : extended_tuple_space := the_tuples;
22565      factors : LIST OF maths_space := [];
22566      use_lp1 : BOOLEAN;
22567      use_lp2 : BOOLEAN;
22568      ets     : extended_tuple_space := the_tuples;
22569      use_up1 : BOOLEAN;
22570      use_up2 : BOOLEAN;
22571      up1     : uniform_product_space := make_uniform_product_space( the_reals, 1 );
22572      up2     : uniform_product_space := make_uniform_product_space( the_reals, 1 );
22573      lps     : listed_product_space := the_zero_tuple_space;
22574      tspace  : tuple_space;
22575      types2  : SET OF STRING := stripped_typeof( ts2 );
22576      types1  : SET OF STRING := stripped_typeof( ts1 );
22577      lp1     : listed_product_space := the_zero_tuple_space;
22578      lp2     : listed_product_space := the_zero_tuple_space;
22579    END_LOCAL;
22580    IF 'UNIFORM_PRODUCT_SPACE' IN types1 THEN
22581      up1 := ts1;
22582      use_up1 := TRUE;
22583      use_lp1 := FALSE;
22584    ELSE
22585      IF 'LISTED_PRODUCT_SPACE' IN types1 THEN
22586        lp1 := ts1;
22587        use_up1 := FALSE;
22588        use_lp1 := TRUE;
22589      ELSE
22590        IF NOT ( 'EXTENDED_TUPLE_SPACE' IN types1 ) THEN
22591          RETURN( ? );
22592        END_IF;
22593        et1 := ts1;
22594        use_up1 := FALSE;
22595        use_lp1 := FALSE;
22596      END_IF;
22597    END_IF;
22598    IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
22599      up2 := ts2;
22600      use_up2 := TRUE;
22601      use_lp2 := FALSE;
22602    ELSE
22603      IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
22604        lp2 := ts2;
22605        use_up2 := FALSE;
22606        use_lp2 := TRUE;
22607      ELSE
22608        IF NOT ( 'EXTENDED_TUPLE_SPACE' IN types2 ) THEN
22609          RETURN( ? );
22610        END_IF;
22611        et2 := ts2;
22612        use_up2 := FALSE;
22613        use_lp2 := FALSE;
22614      END_IF;
22615    END_IF;
22616    IF use_up1 THEN
22617      IF use_up2 THEN
22618        IF up1.base = up2.base THEN
22619          tspace := make_uniform_product_space( up1.base, up1.exponent + up2.exponent );
22620        ELSE
22621          factors := [up1.base : 0, up2.base : 0];
22622          tspace := make_listed_product_space( factors );
22623        END_IF;
22624      ELSE
22625        IF use_lp2 THEN
22626          factors := [up1.base : 0];
22627          factors := factors + lp2.factors;
22628          tspace := make_listed_product_space( factors );
22629        ELSE
22630          tspace := assoc_product_space( up1, et2.base );
22631          tspace := make_extended_tuple_space( tspace, et2.extender );
22632        END_IF;
22633      END_IF;
22634    ELSE
22635      IF use_lp1 THEN
22636        IF use_up2 THEN
22637          factors := [up2.base : 0];
22638          factors := lp1.factors + factors;
22639          tspace := make_listed_product_space( factors );
22640        ELSE
22641          IF use_lp2 THEN
22642            tspace := make_listed_product_space( lp1.factors + lp2.factors );
22643          ELSE
22644            tspace := assoc_product_space( lp1, et2.base );
22645            tspace := make_extended_tuple_space( tspace, et2.extender );
22646          END_IF;
22647        END_IF;
22648      ELSE
22649        IF use_up2 THEN
22650          IF et1.extender = up2.base THEN
22651            tspace := assoc_product_space( et1.base, up2 );
22652            tspace := make_extended_tuple_space( tspace, et1.extender );
22653          ELSE
22654            RETURN( ? );
22655          END_IF;
22656        ELSE
22657          IF use_lp2 THEN
22658            factors := lp2.factors;
22659            REPEAT i := 1 TO SIZEOF( factors ) BY 1;
22660              IF et1.extender <> factors[i] THEN
22661                RETURN( ? );
22662              END_IF;
22663            END_REPEAT;
22664            tspace := assoc_product_space( et1.base, lp2 );
22665            tspace := make_extended_tuple_space( tspace, et1.extender );
22666          ELSE
22667            IF et1.extender = et2.extender THEN
22668              tspace := assoc_product_space( et1, et2.base );
22669            ELSE
22670              RETURN( ? );
22671            END_IF;
22672          END_IF;
22673        END_IF;
22674      END_IF;
22675    END_IF;
22676    RETURN( tspace );
22677
22678  END_FUNCTION;
22679
22680  FUNCTION associated_surface(
22681               arg : pcurve_or_surface
22682           ) : surface;
22683
22684    LOCAL
22685      surf : surface;
22686    END_LOCAL;
22687    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( arg ) THEN
22688      surf := arg\pcurve.basis_surface;
22689    ELSE
22690      surf := arg;
22691    END_IF;
22692    RETURN( surf );
22693
22694  END_FUNCTION;
22695
22696  FUNCTION atan2(
22697               y, x : REAL
22698           ) : REAL;
22699
22700    LOCAL
22701      r : REAL;
22702    END_LOCAL;
22703    IF ( y = 0 ) AND ( x = 0 ) THEN
22704      RETURN( ? );
22705    END_IF;
22706    r := ATAN( y, x );
22707    IF x < 0 THEN
22708      IF y < 0 THEN
22709        r := r - PI;
22710      ELSE
22711        r := r + PI;
22712      END_IF;
22713    END_IF;
22714    RETURN( r );
22715
22716  END_FUNCTION;
22717
22718  FUNCTION bag_to_set(
22719               the_bag : BAG OF GENERIC:intype
22720           ) : SET OF GENERIC:intype;
22721
22722    LOCAL
22723      the_set : SET OF GENERIC:intype := [];
22724    END_LOCAL;
22725    IF SIZEOF( the_bag ) > 0 THEN
22726      REPEAT i := 1 TO HIINDEX( the_bag ) BY 1;
22727        the_set := the_set + the_bag[i];
22728      END_REPEAT;
22729    END_IF;
22730    RETURN( the_set );
22731
22732  END_FUNCTION;
22733
22734  FUNCTION base_axis(
22735               dim : INTEGER;
22736               axis1, axis2, axis3 : direction
22737           ) : LIST [2 : 3] OF direction;
22738
22739    LOCAL
22740      u      : LIST [2 : 3] OF direction;
22741      d1     : direction;
22742      d2     : direction;
22743      factor : REAL;
22744    END_LOCAL;
22745    IF dim = 3 THEN
22746      d1 := NVL( normalise( axis3 ), dummy_gri || direction( [0, 0, 1] ) );
22747      d2 := first_proj_axis( d1, axis1 );
22748      u := [d2, second_proj_axis( d1, d2, axis2 ), d1];
22749    ELSE
22750      IF EXISTS( axis1 ) THEN
22751        d1 := normalise( axis1 );
22752        u := [d1, orthogonal_complement( d1 )];
22753        IF EXISTS( axis2 ) THEN
22754          factor := dot_product( axis2, u[2] );
22755          IF factor < 0 THEN
22756            u[2].direction_ratios[1] := -u[2].direction_ratios[1];
22757            u[2].direction_ratios[2] := -u[2].direction_ratios[2];
22758          END_IF;
22759        END_IF;
22760      ELSE
22761        IF EXISTS( axis2 ) THEN
22762          d1 := normalise( axis2 );
22763          u := [orthogonal_complement( d1 ), d1];
22764          u[1].direction_ratios[1] := -u[1].direction_ratios[1];
22765          u[1].direction_ratios[2] := -u[1].direction_ratios[2];
22766        ELSE
22767          u := [dummy_gri || direction( [1, 0] ), dummy_gri || direction( [0, 1] )];
22768        END_IF;
22769      END_IF;
22770    END_IF;
22771    RETURN( u );
22772
22773  END_FUNCTION;
22774
22775  FUNCTION bool(
22776               lgcl : LOGICAL
22777           ) : BOOLEAN;
22778    IF NOT EXISTS( lgcl ) THEN
22779      RETURN( FALSE );
22780    END_IF;
22781    IF lgcl <> TRUE THEN
22782      RETURN( FALSE );
22783    END_IF;
22784    RETURN( TRUE );
22785
22786  END_FUNCTION;
22787
22788  FUNCTION boolean_choose(
22789               b : BOOLEAN;
22790               choice1, choice2 : GENERIC:item
22791           ) : GENERIC:item;
22792    IF b THEN
22793      RETURN( choice1 );
22794    ELSE
22795      RETURN( choice2 );
22796    END_IF;
22797
22798  END_FUNCTION;
22799
22800  FUNCTION build_2axes(
22801               ref_direction : direction
22802           ) : LIST [2 : 2] OF direction;
22803
22804    LOCAL
22805      d : direction := NVL( normalise( ref_direction ), dummy_gri || direction( [1, 0] ) );
22806    END_LOCAL;
22807    RETURN( [d, orthogonal_complement( d )] );
22808
22809  END_FUNCTION;
22810
22811  FUNCTION build_axes(
22812               axis, ref_direction : direction
22813           ) : LIST [3 : 3] OF direction;
22814
22815    LOCAL
22816      d1 : direction;
22817      d2 : direction;
22818    END_LOCAL;
22819    d1 := NVL( normalise( axis ), dummy_gri || direction( [0, 0, 1] ) );
22820    d2 := first_proj_axis( d1, ref_direction );
22821    RETURN( [d2, normalise( cross_product( d1, d2 ) )\vector.orientation, d1] );
22822
22823  END_FUNCTION;
22824
22825  FUNCTION categories_of_product(
22826               obj : product
22827           ) : SET OF STRING;
22828
22829    LOCAL
22830      categories           : SET OF STRING := [];
22831      category_assignments : BAG OF product_category;
22832    END_LOCAL;
22833    category_assignments := USEDIN( obj, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'PRODUCT_RELATED_PRODUCT_CATEGORY.'
22834        + 'PRODUCTS'  );
22835    REPEAT i := LOINDEX( category_assignments ) TO HIINDEX( category_assignments ) BY 1;
22836      categories := categories + category_assignments[i].name;
22837    END_REPEAT;
22838    RETURN( categories );
22839
22840  END_FUNCTION;
22841
22842  FUNCTION cc_design_person_and_organization_correlation(
22843               e : cc_design_person_and_organization_assignment
22844           ) : BOOLEAN;
22845
22846    LOCAL
22847      po_role : STRING;
22848    END_LOCAL;
22849    po_role := e\person_and_organization_assignment.role.name;
22850    CASE po_role OF
22851      'request_recipient'   :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( SIZEOF( [
22852            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CHANGE_REQUEST',
22853            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'START_REQUEST'] * TYPEOF( x ) ) = 1 ) ) ) THEN
22854          RETURN( FALSE );
22855        END_IF;
22856      'initiator'           :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( SIZEOF( [
22857            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CHANGE_REQUEST',
22858            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'START_REQUEST',
22859            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'START_WORK', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
22860            + 'CHANGE'] * TYPEOF( x ) ) = 1 ) ) ) THEN
22861          RETURN( FALSE );
22862        END_IF;
22863      'creator'             :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( SIZEOF( [
22864            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_FORMATION',
22865            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION'] * TYPEOF( x ) ) = 1 ) ) ) THEN
22866          RETURN( FALSE );
22867        END_IF;
22868      'part_supplier'       :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( (
22869            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_FORMATION' ) IN TYPEOF( x ) ) ) ) THEN
22870          RETURN( FALSE );
22871        END_IF;
22872      'design_supplier'     :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( (
22873            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'PRODUCT_DEFINITION_FORMATION' ) IN TYPEOF( x ) ) ) ) THEN
22874          RETURN( FALSE );
22875        END_IF;
22876      'design_owner'        :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | (
22877            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT'  IN TYPEOF( x ) ) ) ) THEN
22878          RETURN( FALSE );
22879        END_IF;
22880      'configuration_manager' :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( (
22881            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'CONFIGURATION_ITEM' ) IN TYPEOF( x ) ) ) ) THEN
22882          RETURN( FALSE );
22883        END_IF;
22884      'contractor'          :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | (
22885            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONTRACT'  IN TYPEOF( x ) ) ) ) THEN
22886          RETURN( FALSE );
22887        END_IF;
22888      'classification_officer' :         IF SIZEOF( e.items ) <> SIZEOF( QUERY ( x <* e.items | ( (
22889            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SECURITY_CLASSIFICATION' ) IN TYPEOF( x ) ) ) ) THEN
22890          RETURN( FALSE );
22891        END_IF;
22892      OTHERWISE             :         RETURN( TRUE );
22893      END_CASE;
22894    RETURN( TRUE );
22895
22896  END_FUNCTION;
22897
22898  FUNCTION check_continuous_edges(
22899               edges : LIST OF UNIQUE edge_curve
22900           ) : BOOLEAN;
22901
22902    LOCAL
22903      i           : INTEGER;
22904      next_vertex : vertex;
22905    END_LOCAL;
22906    IF SIZEOF( edges ) = 1 THEN
22907      RETURN( TRUE );
22908    END_IF;
22909    IF ( edges[2].edge_start :=: edges[1].edge_end ) XOR ( edges[2].edge_start :=: edges[1].edge_start ) THEN
22910      next_vertex := edges[2].edge_end;
22911    ELSE
22912      IF ( edges[2].edge_end :=: edges[1].edge_end ) XOR ( edges[2].edge_end :=: edges[1].edge_start ) THEN
22913        next_vertex := edges[2].edge_start;
22914      ELSE
22915        RETURN( FALSE );
22916      END_IF;
22917    END_IF;
22918    IF SIZEOF( edges ) = 2 THEN
22919      RETURN( TRUE );
22920    END_IF;
22921    REPEAT i := 3 TO HIINDEX( edges ) BY 1;
22922      IF edges[i].edge_start :=: next_vertex THEN
22923        next_vertex := edges[i].edge_end;
22924      ELSE
22925        IF edges[i].edge_end :=: next_vertex THEN
22926          next_vertex := edges[i].edge_start;
22927        ELSE
22928          RETURN( FALSE );
22929        END_IF;
22930      END_IF;
22931    END_REPEAT;
22932    RETURN( TRUE );
22933
22934  END_FUNCTION;
22935
22936  FUNCTION check_curve_planarity(
22937               checked_curve : curve
22938           ) : BOOLEAN;
22939
22940    LOCAL
22941      i      : INTEGER;
22942      j      : INTEGER;
22943      crv    : curve := checked_curve;
22944      result : BOOLEAN := FALSE;
22945    END_LOCAL;
22946    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE']
22947        * TYPEOF( crv ) ) > 0 THEN
22948      result := TRUE;
22949    ELSE
22950      IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF( crv ) ) AND check_curve_planarity( crv\
22951          trimmed_curve.basis_curve ) THEN
22952        result := TRUE;
22953      ELSE
22954        IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( crv ) ) AND (
22955            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE'  IN TYPEOF( crv\pcurve.basis_surface ) ) THEN
22956          result := TRUE;
22957        ELSE
22958          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( crv ) THEN
22959
22960            BEGIN
22961              REPEAT j := 1 TO HIINDEX( crv\surface_curve.basis_surface ) BY 1;
22962                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( crv\surface_curve.basis_surface[j] ) THEN
22963                  result := TRUE;
22964                END_IF;
22965              END_REPEAT;
22966            END;
22967          END_IF;
22968        END_IF;
22969      END_IF;
22970    END_IF;
22971    RETURN( result );
22972
22973  END_FUNCTION;
22974
22975  FUNCTION check_sparse_index_domain(
22976               idxdom : tuple_space;
22977               base : zero_or_one;
22978               shape : LIST [1 : ?] OF positive_integer;
22979               order : ordering_type
22980           ) : BOOLEAN;
22981
22982    LOCAL
22983      mthspc   : maths_space;
22984      i        : INTEGER;
22985      interval : finite_integer_interval;
22986    END_LOCAL;
22987    mthspc := factor1( idxdom );
22988    interval := mthspc;
22989    IF order = by_rows THEN
22990      i := 1;
22991    ELSE
22992      i := 2;
22993    END_IF;
22994    RETURN( bool( ( interval.min <= base ) AND ( interval.max >= ( base + shape[i] ) ) ) );
22995
22996  END_FUNCTION;
22997
22998  FUNCTION check_sparse_index_to_loc(
22999               index_range, loc_domain : tuple_space
23000           ) : BOOLEAN;
23001
23002    LOCAL
23003      temp         : maths_space;
23004      idx_rng_itvl : finite_integer_interval;
23005      loc_dmn_itvl : finite_integer_interval;
23006    END_LOCAL;
23007    temp := factor1( index_range );
23008    IF ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( temp ) THEN
23009      temp := factor1( temp );
23010    END_IF;
23011    IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) ) THEN
23012      RETURN( FALSE );
23013    END_IF;
23014    idx_rng_itvl := temp;
23015    temp := factor1( loc_domain );
23016    IF ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( temp ) THEN
23017      temp := factor1( temp );
23018    END_IF;
23019    IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) ) THEN
23020      RETURN( FALSE );
23021    END_IF;
23022    loc_dmn_itvl := temp;
23023    RETURN( bool( ( loc_dmn_itvl.min <= idx_rng_itvl.min ) AND ( idx_rng_itvl.max <= ( loc_dmn_itvl.max + 1 ) ) ) );
23024
23025  END_FUNCTION;
23026
23027  FUNCTION check_sparse_loc_range(
23028               locrng : tuple_space;
23029               base : zero_or_one;
23030               shape : LIST [1 : ?] OF positive_integer;
23031               order : ordering_type
23032           ) : BOOLEAN;
23033
23034    LOCAL
23035      mthspc   : maths_space;
23036      i        : INTEGER;
23037      interval : finite_integer_interval;
23038    END_LOCAL;
23039    IF space_dimension( locrng ) <> 1 THEN
23040      RETURN( FALSE );
23041    END_IF;
23042    mthspc := factor1( locrng );
23043    IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( mthspc ) ) THEN
23044      RETURN( FALSE );
23045    END_IF;
23046    interval := mthspc;
23047    IF order = by_rows THEN
23048      i := 2;
23049    ELSE
23050      i := 1;
23051    END_IF;
23052    RETURN( bool( ( interval.min >= base ) AND ( interval.max <= ( ( base + shape[i] ) - 1 ) ) ) );
23053
23054  END_FUNCTION;
23055
23056  FUNCTION check_text_alignment(
23057               ct : composite_text
23058           ) : BOOLEAN;
23059
23060    LOCAL
23061      a : SET OF text_alignment := [];
23062    END_LOCAL;
23063    REPEAT i := 1 TO HIINDEX( ct.collected_text ) BY 1;
23064      a := a + [ct.collected_text[i]\text_literal.alignment];
23065    END_REPEAT;
23066    RETURN( SIZEOF( a ) = 1 );
23067
23068  END_FUNCTION;
23069
23070  FUNCTION check_text_font(
23071               ct : composite_text
23072           ) : BOOLEAN;
23073
23074    LOCAL
23075      f : SET OF font_select := [];
23076    END_LOCAL;
23077    REPEAT i := 1 TO HIINDEX( ct.collected_text ) BY 1;
23078      f := f + [ct.collected_text[i]\text_literal.font];
23079    END_REPEAT;
23080    RETURN( SIZEOF( f ) <= 1 );
23081
23082  END_FUNCTION;
23083
23084  FUNCTION class_assignment_is_valid(
23085               aia : applied_classification_assignment
23086           ) : BOOLEAN;
23087
23088    LOCAL
23089      item : classification_item;
23090      role : classification_role;
23091    END_LOCAL;
23092    role := aia\classification_assignment.role;
23093    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASS_SYSTEM' IN TYPEOF( aia\classification_assignment.assigned_class )
23094        THEN
23095      IF role\classification_role.name <> 'class system membership' THEN
23096        RETURN( FALSE );
23097      END_IF;
23098      REPEAT i := LOINDEX( aia\applied_classification_assignment.items ) TO HIINDEX( aia\applied_classification_assignment.items )
23099          BY 1;
23100        item := aia\applied_classification_assignment.items[i];
23101        IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_CLASS'] * TYPEOF( item ) ) = 0 THEN
23102          RETURN( FALSE );
23103        END_IF;
23104      END_REPEAT;
23105    END_IF;
23106    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CHARACTERIZED_CLASS' IN TYPEOF( aia\classification_assignment.
23107        assigned_class ) THEN
23108      IF NOT ( role\classification_role.name IN [ 'definitional', 'non-definitional', ''] ) THEN
23109        RETURN( FALSE );
23110      END_IF;
23111      REPEAT i := LOINDEX( aia\applied_classification_assignment.items ) TO HIINDEX( aia\applied_classification_assignment.items )
23112          BY 1;
23113        item := aia\applied_classification_assignment.items[i];
23114        IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLASSIFIED_ITEM'] * TYPEOF( item ) ) = 0 THEN
23115          RETURN( FALSE );
23116        END_IF;
23117      END_REPEAT;
23118    END_IF;
23119    IF role\classification_role.name = 'definitional' THEN
23120      IF NOT ( SIZEOF( QUERY ( it <* aia\applied_classification_assignment.items | ( NOT ( SIZEOF( [
23121          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
23122          + 'PRODUCT_DEFINITION_FORMATION' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'] * TYPEOF( it ) )
23123          = 1 ) ) ) ) = 0 ) THEN
23124        RETURN( FALSE );
23125      END_IF;
23126    END_IF;
23127    RETURN( TRUE );
23128
23129  END_FUNCTION;
23130
23131  FUNCTION closed_shell_reversed(
23132               a_shell : closed_shell
23133           ) : oriented_closed_shell;
23134
23135    LOCAL
23136      the_reverse : oriented_closed_shell;
23137    END_LOCAL;
23138    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_CLOSED_SHELL' IN TYPEOF( a_shell ) THEN
23139      the_reverse := dummy_tri || connected_face_set( a_shell\connected_face_set.cfs_faces ) || closed_shell(  ) ||
23140          oriented_closed_shell( a_shell\oriented_closed_shell.closed_shell_element, NOT a_shell\oriented_closed_shell.orientation );
23141    ELSE
23142      the_reverse := dummy_tri || connected_face_set( a_shell\connected_face_set.cfs_faces ) || closed_shell(  ) ||
23143          oriented_closed_shell( a_shell, FALSE );
23144    END_IF;
23145    RETURN( the_reverse );
23146
23147  END_FUNCTION;
23148
23149  FUNCTION collect_joints(
23150               items : SET [1 : ?] OF pair_representation_relationship
23151           ) : SET OF kinematic_joint;
23152
23153    LOCAL
23154      result : SET OF kinematic_joint := [];
23155    END_LOCAL;
23156    REPEAT i := 1 TO HIINDEX( items ) BY 1;
23157      result := result + items[i].transformation_operator.joint;
23158    END_REPEAT;
23159    RETURN( result );
23160
23161  END_FUNCTION;
23162
23163  FUNCTION compare_basis_and_coef(
23164               basis : LIST [1 : ?] OF b_spline_basis;
23165               coef : maths_function
23166           ) : BOOLEAN;
23167
23168    LOCAL
23169      shape : LIST OF positive_integer;
23170    END_LOCAL;
23171    IF ( NOT EXISTS( basis ) ) OR ( NOT EXISTS( coef ) ) THEN
23172      RETURN( FALSE );
23173    END_IF;
23174    shape := shape_of_array( coef );
23175    IF NOT EXISTS( shape ) THEN
23176      RETURN( FALSE );
23177    END_IF;
23178    IF SIZEOF( shape ) < SIZEOF( basis ) THEN
23179      RETURN( FALSE );
23180    END_IF;
23181    REPEAT i := 1 TO SIZEOF( basis ) BY 1;
23182      IF ( basis[i].num_basis = shape[i] ) <> TRUE THEN
23183        RETURN( FALSE );
23184      END_IF;
23185    END_REPEAT;
23186    RETURN( TRUE );
23187
23188  END_FUNCTION;
23189
23190  FUNCTION compatible_complex_number_regions(
23191               sp1, sp2 : maths_space
23192           ) : BOOLEAN;
23193
23194    LOCAL
23195      prgn2       : polar_complex_number_region;
23196      prgn1       : polar_complex_number_region;
23197      typenames   : SET OF STRING := stripped_typeof( sp1 );
23198      prgn1c2     : polar_complex_number_region;
23199      sp2_is_crgn : BOOLEAN;
23200      sp1_is_crgn : BOOLEAN;
23201      prgn2c1     : polar_complex_number_region;
23202      crgn1       : cartesian_complex_number_region;
23203      crgn2       : cartesian_complex_number_region;
23204    END_LOCAL;
23205    IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames THEN
23206      sp1_is_crgn := TRUE;
23207      crgn1 := sp1;
23208    ELSE
23209      IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames THEN
23210        sp1_is_crgn := FALSE;
23211        prgn1 := sp1;
23212      ELSE
23213        RETURN( TRUE );
23214      END_IF;
23215    END_IF;
23216    typenames := stripped_typeof( sp2 );
23217    IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN typenames THEN
23218      sp2_is_crgn := TRUE;
23219      crgn2 := sp2;
23220    ELSE
23221      IF 'POLAR_COMPLEX_NUMBER_REGION' IN typenames THEN
23222        sp2_is_crgn := FALSE;
23223        prgn2 := sp2;
23224      ELSE
23225        RETURN( TRUE );
23226      END_IF;
23227    END_IF;
23228    IF sp1_is_crgn AND sp2_is_crgn THEN
23229      RETURN( compatible_intervals( crgn1.real_constraint, crgn2.real_constraint ) AND compatible_intervals( crgn1.
23230          imag_constraint, crgn2.imag_constraint ) );
23231    END_IF;
23232    IF ( NOT sp1_is_crgn ) AND ( NOT sp2_is_crgn ) AND ( prgn1.centre.real_part = prgn2.centre.real_part ) AND ( prgn1.centre.
23233        imag_part = prgn2.centre.imag_part ) THEN
23234      IF NOT compatible_intervals( prgn1.distance_constraint, prgn2.distance_constraint ) THEN
23235        RETURN( FALSE );
23236      END_IF;
23237      IF compatible_intervals( prgn1.direction_constraint, prgn2.direction_constraint ) THEN
23238        RETURN( TRUE );
23239      END_IF;
23240      IF ( prgn1.direction_constraint.max > PI ) AND ( prgn2.direction_constraint.max < PI ) THEN
23241        RETURN( compatible_intervals( prgn2.direction_constraint, make_finite_real_interval( -PI, open, prgn1.
23242            direction_constraint.max - ( 2 * PI ), prgn1.direction_constraint.max_closure ) ) );
23243      END_IF;
23244      IF ( prgn2.direction_constraint.max > PI ) AND ( prgn1.direction_constraint.max < PI ) THEN
23245        RETURN( compatible_intervals( prgn1.direction_constraint, make_finite_real_interval( -PI, open, prgn2.
23246            direction_constraint.max - ( 2 * PI ), prgn2.direction_constraint.max_closure ) ) );
23247      END_IF;
23248      RETURN( FALSE );
23249    END_IF;
23250    IF sp1_is_crgn AND ( NOT sp2_is_crgn ) THEN
23251      crgn2 := enclose_pregion_in_cregion( prgn2 );
23252      prgn1 := enclose_cregion_in_pregion( crgn1, prgn2.centre );
23253      RETURN( compatible_complex_number_regions( crgn1, crgn2 ) AND compatible_complex_number_regions( prgn1, prgn2 ) );
23254    END_IF;
23255    IF ( NOT sp1_is_crgn ) AND sp2_is_crgn THEN
23256      crgn1 := enclose_pregion_in_cregion( prgn1 );
23257      prgn2 := enclose_cregion_in_pregion( crgn2, prgn1.centre );
23258      RETURN( compatible_complex_number_regions( crgn1, crgn2 ) AND compatible_complex_number_regions( prgn1, prgn2 ) );
23259    END_IF;
23260    prgn1c2 := enclose_pregion_in_pregion( prgn1, prgn2.centre );
23261    prgn2c1 := enclose_pregion_in_pregion( prgn2, prgn1.centre );
23262    RETURN( compatible_complex_number_regions( prgn1, prgn2c1 ) AND compatible_complex_number_regions( prgn1c2, prgn2 ) );
23263
23264  END_FUNCTION;
23265
23266  FUNCTION compatible_es_values(
23267               esval1, esval2 : elementary_space_enumerators
23268           ) : BOOLEAN;
23269
23270    LOCAL
23271      esval1_is_numeric : LOGICAL;
23272      esval2_is_numeric : LOGICAL;
23273    END_LOCAL;
23274    IF ( esval1 = esval2 ) OR ( esval1 = es_generics ) OR ( esval2 = es_generics ) THEN
23275      RETURN( TRUE );
23276    END_IF;
23277    esval1_is_numeric := ( esval1 >= es_numbers ) AND ( esval1 <= es_integers );
23278    esval2_is_numeric := ( esval2 >= es_numbers ) AND ( esval2 <= es_integers );
23279    IF ( esval1_is_numeric AND ( esval2 = es_numbers ) ) OR ( esval2_is_numeric AND ( esval1 = es_numbers ) ) THEN
23280      RETURN( TRUE );
23281    END_IF;
23282    IF esval1_is_numeric XOR esval2_is_numeric THEN
23283      RETURN( FALSE );
23284    END_IF;
23285    IF ( ( esval1 = es_logicals ) AND ( esval2 = es_booleans ) ) OR ( ( esval1 = es_booleans ) AND ( esval2 = es_logicals ) )
23286        THEN
23287      RETURN( TRUE );
23288    END_IF;
23289    RETURN( FALSE );
23290
23291  END_FUNCTION;
23292
23293  FUNCTION compatible_intervals(
23294               sp1, sp2 : maths_space
23295           ) : BOOLEAN;
23296
23297    LOCAL
23298      amax : REAL;
23299      amin : REAL;
23300    END_LOCAL;
23301    IF min_exists( sp1 ) AND max_exists( sp2 ) THEN
23302      amin := real_min( sp1 );
23303      amax := real_max( sp2 );
23304      IF amin > amax THEN
23305        RETURN( FALSE );
23306      END_IF;
23307      IF amin = amax THEN
23308        RETURN( min_included( sp1 ) AND max_included( sp2 ) );
23309      END_IF;
23310    END_IF;
23311    IF min_exists( sp2 ) AND max_exists( sp1 ) THEN
23312      amin := real_min( sp2 );
23313      amax := real_max( sp1 );
23314      IF amin > amax THEN
23315        RETURN( FALSE );
23316      END_IF;
23317      IF amin = amax THEN
23318        RETURN( min_included( sp2 ) AND max_included( sp1 ) );
23319      END_IF;
23320    END_IF;
23321    RETURN( TRUE );
23322
23323  END_FUNCTION;
23324
23325  FUNCTION compatible_spaces(
23326               sp1, sp2 : maths_space
23327           ) : BOOLEAN;
23328
23329    LOCAL
23330      m      : INTEGER;
23331      n      : INTEGER;
23332      lgcl   : LOGICAL := UNKNOWN;
23333      types2 : SET OF STRING := stripped_typeof( sp2 );
23334      types1 : SET OF STRING := stripped_typeof( sp1 );
23335      s2     : maths_space;
23336      s1     : maths_space;
23337    END_LOCAL;
23338    IF 'FINITE_SPACE' IN types1 THEN
23339      REPEAT i := 1 TO SIZEOF( sp1\finite_space.members ) BY 1;
23340        lgcl := member_of( sp1\finite_space.members[i], sp2 );
23341        IF lgcl <> FALSE THEN
23342          RETURN( TRUE );
23343        END_IF;
23344      END_REPEAT;
23345      RETURN( FALSE );
23346    END_IF;
23347    IF 'FINITE_SPACE' IN types2 THEN
23348      REPEAT i := 1 TO SIZEOF( sp2\finite_space.members ) BY 1;
23349        lgcl := member_of( sp2\finite_space.members[i], sp1 );
23350        IF lgcl <> FALSE THEN
23351          RETURN( TRUE );
23352        END_IF;
23353      END_REPEAT;
23354      RETURN( FALSE );
23355    END_IF;
23356    IF 'ELEMENTARY_SPACE' IN types1 THEN
23357      IF sp1\elementary_space.space_id = es_generics THEN
23358        RETURN( TRUE );
23359      END_IF;
23360      IF 'ELEMENTARY_SPACE' IN types2 THEN
23361        RETURN( compatible_es_values( sp1\elementary_space.space_id, sp2\elementary_space.space_id ) );
23362      END_IF;
23363      IF ( 'FINITE_INTEGER_INTERVAL' IN types2 ) OR ( 'INTEGER_INTERVAL_FROM_MIN' IN types2 ) OR ( 'INTEGER_INTERVAL_TO_MAX' IN
23364          types2 ) THEN
23365        RETURN( compatible_es_values( sp1\elementary_space.space_id, es_integers ) );
23366      END_IF;
23367      IF ( 'FINITE_REAL_INTERVAL' IN types2 ) OR ( 'REAL_INTERVAL_FROM_MIN' IN types2 ) OR ( 'REAL_INTERVAL_TO_MAX' IN types2 )
23368          THEN
23369        RETURN( compatible_es_values( sp1\elementary_space.space_id, es_reals ) );
23370      END_IF;
23371      IF ( 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 ) OR ( 'POLAR_COMPLEX_NUMBER_REGION' IN types2 ) THEN
23372        RETURN( compatible_es_values( sp1\elementary_space.space_id, es_complex_numbers ) );
23373      END_IF;
23374      IF 'TUPLE_SPACE' IN types2 THEN
23375        RETURN( FALSE );
23376      END_IF;
23377      IF 'FUNCTION_SPACE' IN types2 THEN
23378        RETURN( bool( sp1\elementary_space.space_id = es_maths_functions ) );
23379      END_IF;
23380      RETURN( TRUE );
23381    END_IF;
23382    IF 'ELEMENTARY_SPACE' IN types2 THEN
23383      IF sp2\elementary_space.space_id = es_generics THEN
23384        RETURN( TRUE );
23385      END_IF;
23386      IF ( 'FINITE_INTEGER_INTERVAL' IN types1 ) OR ( 'INTEGER_INTERVAL_FROM_MIN' IN types1 ) OR ( 'INTEGER_INTERVAL_TO_MAX' IN
23387          types1 ) THEN
23388        RETURN( compatible_es_values( sp2\elementary_space.space_id, es_integers ) );
23389      END_IF;
23390      IF ( 'FINITE_REAL_INTERVAL' IN types1 ) OR ( 'REAL_INTERVAL_FROM_MIN' IN types1 ) OR ( 'REAL_INTERVAL_TO_MAX' IN types1 )
23391          THEN
23392        RETURN( compatible_es_values( sp2\elementary_space.space_id, es_reals ) );
23393      END_IF;
23394      IF ( 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types1 ) OR ( 'POLAR_COMPLEX_NUMBER_REGION' IN types1 ) THEN
23395        RETURN( compatible_es_values( sp2\elementary_space.space_id, es_complex_numbers ) );
23396      END_IF;
23397      IF 'TUPLE_SPACE' IN types1 THEN
23398        RETURN( FALSE );
23399      END_IF;
23400      IF 'FUNCTION_SPACE' IN types1 THEN
23401        RETURN( bool( sp2\elementary_space.space_id = es_maths_functions ) );
23402      END_IF;
23403      RETURN( TRUE );
23404    END_IF;
23405    IF subspace_of_es( sp1, es_integers ) THEN
23406      IF subspace_of_es( sp2, es_integers ) THEN
23407        RETURN( compatible_intervals( sp1, sp2 ) );
23408      END_IF;
23409      RETURN( FALSE );
23410    END_IF;
23411    IF subspace_of_es( sp2, es_integers ) THEN
23412      RETURN( FALSE );
23413    END_IF;
23414    IF subspace_of_es( sp1, es_reals ) THEN
23415      IF subspace_of_es( sp2, es_reals ) THEN
23416        RETURN( compatible_intervals( sp1, sp2 ) );
23417      END_IF;
23418      RETURN( FALSE );
23419    END_IF;
23420    IF subspace_of_es( sp2, es_reals ) THEN
23421      RETURN( FALSE );
23422    END_IF;
23423    IF subspace_of_es( sp1, es_complex_numbers ) THEN
23424      IF subspace_of_es( sp2, es_complex_numbers ) THEN
23425        RETURN( compatible_complex_number_regions( sp1, sp2 ) );
23426      END_IF;
23427      RETURN( FALSE );
23428    END_IF;
23429    IF subspace_of_es( sp2, es_complex_numbers ) THEN
23430      RETURN( FALSE );
23431    END_IF;
23432    IF 'UNIFORM_PRODUCT_SPACE' IN types1 THEN
23433      IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
23434        IF sp1\uniform_product_space.exponent <> sp2\uniform_product_space.exponent THEN
23435          RETURN( FALSE );
23436        END_IF;
23437        RETURN( compatible_spaces( sp1\uniform_product_space.base, sp2\uniform_product_space.base ) );
23438      END_IF;
23439      IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
23440        n := SIZEOF( sp2\listed_product_space.factors );
23441        IF sp1\uniform_product_space.exponent <> n THEN
23442          RETURN( FALSE );
23443        END_IF;
23444        REPEAT i := 1 TO n BY 1;
23445          IF NOT compatible_spaces( sp1\uniform_product_space.base, sp2\listed_product_space.factors[i] ) THEN
23446            RETURN( FALSE );
23447          END_IF;
23448        END_REPEAT;
23449        RETURN( TRUE );
23450      END_IF;
23451      IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
23452        m := sp1\uniform_product_space.exponent;
23453        n := space_dimension( sp2\extended_tuple_space.base );
23454        IF m < n THEN
23455          RETURN( FALSE );
23456        END_IF;
23457        IF m = n THEN
23458          RETURN( compatible_spaces( sp1, sp2\extended_tuple_space.base ) );
23459        END_IF;
23460        RETURN( compatible_spaces( sp1, assoc_product_space( sp2\extended_tuple_space.base, make_uniform_product_space( sp2\
23461            extended_tuple_space.extender, m - n ) ) ) );
23462      END_IF;
23463      IF 'FUNCTION_SPACE' IN types2 THEN
23464        RETURN( FALSE );
23465      END_IF;
23466      RETURN( TRUE );
23467    END_IF;
23468    IF 'LISTED_PRODUCT_SPACE' IN types1 THEN
23469      n := SIZEOF( sp1\listed_product_space.factors );
23470      IF 'UNIFORM_PRODUCT_SPACE' IN types2 THEN
23471        IF n <> sp2\uniform_product_space.exponent THEN
23472          RETURN( FALSE );
23473        END_IF;
23474        REPEAT i := 1 TO n BY 1;
23475          IF NOT compatible_spaces( sp2\uniform_product_space.base, sp1\listed_product_space.factors[i] ) THEN
23476            RETURN( FALSE );
23477          END_IF;
23478        END_REPEAT;
23479        RETURN( TRUE );
23480      END_IF;
23481      IF 'LISTED_PRODUCT_SPACE' IN types2 THEN
23482        IF n <> SIZEOF( sp2\listed_product_space.factors ) THEN
23483          RETURN( FALSE );
23484        END_IF;
23485        REPEAT i := 1 TO n BY 1;
23486          IF NOT compatible_spaces( sp1\listed_product_space.factors[i], sp2\listed_product_space.factors[i] ) THEN
23487            RETURN( FALSE );
23488          END_IF;
23489        END_REPEAT;
23490        RETURN( TRUE );
23491      END_IF;
23492      IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
23493        m := space_dimension( sp2\extended_tuple_space.base );
23494        IF n < m THEN
23495          RETURN( FALSE );
23496        END_IF;
23497        IF n = m THEN
23498          RETURN( compatible_spaces( sp1, sp2\extended_tuple_space.base ) );
23499        END_IF;
23500        RETURN( compatible_spaces( sp1, assoc_product_space( sp2\extended_tuple_space.base, make_uniform_product_space( sp2\
23501            extended_tuple_space.extender, n - m ) ) ) );
23502      END_IF;
23503      IF ( schema_prefix + 'FUNCTION_SPACE' ) IN types2 THEN
23504        RETURN( FALSE );
23505      END_IF;
23506      RETURN( TRUE );
23507    END_IF;
23508    IF 'EXTENDED_TUPLE_SPACE' IN types1 THEN
23509      IF ( 'UNIFORM_PRODUCT_SPACE' IN types2 ) OR ( 'LISTED_PRODUCT_SPACE' IN types2 ) THEN
23510        RETURN( compatible_spaces( sp2, sp1 ) );
23511      END_IF;
23512      IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
23513        IF NOT compatible_spaces( sp1\extended_tuple_space.extender, sp2\extended_tuple_space.extender ) THEN
23514          RETURN( FALSE );
23515        END_IF;
23516        n := space_dimension( sp1\extended_tuple_space.base );
23517        m := space_dimension( sp2\extended_tuple_space.base );
23518        IF n < m THEN
23519          RETURN( compatible_spaces( assoc_product_space( sp1\extended_tuple_space.base, make_uniform_product_space( sp1\
23520              extended_tuple_space.extender, m - n ) ), sp2\extended_tuple_space.base ) );
23521        END_IF;
23522        IF n = m THEN
23523          RETURN( compatible_spaces( sp1\extended_tuple_space.base, sp2\extended_tuple_space.base ) );
23524        END_IF;
23525        IF n > m THEN
23526          RETURN( compatible_spaces( sp1\extended_tuple_space.base, assoc_product_space( sp2\extended_tuple_space.base,
23527              make_uniform_product_space( sp2\extended_tuple_space.extender, n - m ) ) ) );
23528        END_IF;
23529      END_IF;
23530      IF 'FUNCTION_SPACE' IN types2 THEN
23531        RETURN( FALSE );
23532      END_IF;
23533      RETURN( TRUE );
23534    END_IF;
23535    IF 'FUNCTION_SPACE' IN types1 THEN
23536      IF 'FUNCTION_SPACE' IN types2 THEN
23537        s1 := sp1\function_space.domain_argument;
23538        s2 := sp2\function_space.domain_argument;
23539        CASE sp1\function_space.domain_constraint OF
23540          sc_equal   :
23541            BEGIN
23542              CASE sp2\function_space.domain_constraint OF
23543                sc_equal   :                   lgcl := subspace_of( s1, s2 ) AND subspace_of( s2, s1 );
23544                sc_subspace :                   lgcl := subspace_of( s1, s2 );
23545                sc_member  :                   lgcl := member_of( s1, s2 );
23546                END_CASE;
23547            END;
23548          sc_subspace :
23549            BEGIN
23550              CASE sp2\function_space.domain_constraint OF
23551                sc_equal   :                   lgcl := subspace_of( s2, s1 );
23552                sc_subspace :                   lgcl := compatible_spaces( s1, s2 );
23553                sc_member  :                   lgcl := UNKNOWN;
23554                END_CASE;
23555            END;
23556          sc_member  :
23557            BEGIN
23558              CASE sp2\function_space.domain_constraint OF
23559                sc_equal   :                   lgcl := member_of( s2, s1 );
23560                sc_subspace :                   lgcl := UNKNOWN;
23561                sc_member  :                   lgcl := compatible_spaces( s1, s2 );
23562                END_CASE;
23563            END;
23564          END_CASE;
23565        IF lgcl = FALSE THEN
23566          RETURN( FALSE );
23567        END_IF;
23568        s1 := sp1\function_space.range_argument;
23569        s2 := sp2\function_space.range_argument;
23570        CASE sp1\function_space.range_constraint OF
23571          sc_equal   :
23572            BEGIN
23573              CASE sp2\function_space.range_constraint OF
23574                sc_equal   :                   lgcl := subspace_of( s1, s2 ) AND subspace_of( s2, s1 );
23575                sc_subspace :                   lgcl := subspace_of( s1, s2 );
23576                sc_member  :                   lgcl := member_of( s1, s2 );
23577                END_CASE;
23578            END;
23579          sc_subspace :
23580            BEGIN
23581              CASE sp2\function_space.range_constraint OF
23582                sc_equal   :                   lgcl := subspace_of( s2, s1 );
23583                sc_subspace :                   lgcl := compatible_spaces( s1, s2 );
23584                sc_member  :                   lgcl := UNKNOWN;
23585                END_CASE;
23586            END;
23587          sc_member  :
23588            BEGIN
23589              CASE sp2\function_space.range_constraint OF
23590                sc_equal   :                   lgcl := member_of( s2, s1 );
23591                sc_subspace :                   lgcl := UNKNOWN;
23592                sc_member  :                   lgcl := compatible_spaces( s1, s2 );
23593                END_CASE;
23594            END;
23595          END_CASE;
23596        IF lgcl = FALSE THEN
23597          RETURN( FALSE );
23598        END_IF;
23599        RETURN( TRUE );
23600      END_IF;
23601      RETURN( TRUE );
23602    END_IF;
23603    RETURN( TRUE );
23604
23605  END_FUNCTION;
23606
23607  FUNCTION composable_sequence(
23608               operands : LIST [2 : ?] OF maths_function
23609           ) : BOOLEAN;
23610    REPEAT i := 1 TO SIZEOF( operands ) - 1 BY 1;
23611      IF NOT compatible_spaces( operands[i].range, operands[i + 1].domain ) THEN
23612        RETURN( FALSE );
23613      END_IF;
23614    END_REPEAT;
23615    RETURN( TRUE );
23616
23617  END_FUNCTION;
23618
23619  FUNCTION compute_total_depth(
23620               swsrh : solid_with_stepped_round_hole
23621           ) : positive_length_measure;
23622
23623    LOCAL
23624      i  : positive_integer;
23625      n  : positive_integer := swsrh.segments;
23626      td : positive_length_measure := swsrh.segment_depths[1];
23627    END_LOCAL;
23628    IF n = 1 THEN
23629      RETURN( td );
23630    ELSE
23631      REPEAT i := 2 TO n BY 1;
23632        td := td + swsrh.segment_depths[i];
23633      END_REPEAT;
23634    END_IF;
23635    RETURN( td );
23636
23637  END_FUNCTION;
23638
23639  FUNCTION conditional_reverse(
23640               p : BOOLEAN;
23641               an_item : reversible_topology
23642           ) : reversible_topology;
23643    IF p THEN
23644      RETURN( an_item );
23645    ELSE
23646      RETURN( topology_reversed( an_item ) );
23647    END_IF;
23648
23649  END_FUNCTION;
23650
23651  FUNCTION constraints_composite_curve_on_surface(
23652               c : composite_curve_on_surface
23653           ) : BOOLEAN;
23654
23655    LOCAL
23656      n_segments : INTEGER := SIZEOF( c.segments );
23657    END_LOCAL;
23658    REPEAT k := 1 TO n_segments BY 1;
23659      IF ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( c\composite_curve.segments[k].parent_curve ) ) )
23660          AND ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( c\composite_curve.segments[k].
23661          parent_curve ) ) ) AND ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF( c
23662          \composite_curve.segments[k].parent_curve ) ) ) THEN
23663        RETURN( FALSE );
23664      END_IF;
23665    END_REPEAT;
23666    RETURN( TRUE );
23667
23668  END_FUNCTION;
23669
23670  FUNCTION constraints_geometry_shell_based_surface_model(
23671               m : shell_based_surface_model
23672           ) : BOOLEAN;
23673
23674    LOCAL
23675      result : BOOLEAN := TRUE;
23676    END_LOCAL;
23677    REPEAT j := 1 TO SIZEOF( m.sbsm_boundary ) BY 1;
23678      IF ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF( m.sbsm_boundary[j] ) ) ) AND ( NOT (
23679          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL'  IN TYPEOF( m.sbsm_boundary[j] ) ) ) THEN
23680        result := FALSE;
23681        RETURN( result );
23682      END_IF;
23683    END_REPEAT;
23684    RETURN( result );
23685
23686  END_FUNCTION;
23687
23688  FUNCTION constraints_geometry_shell_based_wireframe_model(
23689               m : shell_based_wireframe_model
23690           ) : BOOLEAN;
23691
23692    LOCAL
23693      result : BOOLEAN := TRUE;
23694    END_LOCAL;
23695    REPEAT j := 1 TO SIZEOF( m.sbwm_boundary ) BY 1;
23696      IF ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.WIRE_SHELL' IN TYPEOF( m.sbwm_boundary[j] ) ) ) AND ( NOT (
23697          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VERTEX_SHELL'  IN TYPEOF( m.sbwm_boundary[j] ) ) ) THEN
23698        result := FALSE;
23699        RETURN( result );
23700      END_IF;
23701    END_REPEAT;
23702    RETURN( result );
23703
23704  END_FUNCTION;
23705
23706  FUNCTION constraints_param_b_spline(
23707               degree : INTEGER;
23708               up_knots : INTEGER;
23709               up_cp : INTEGER;
23710               knot_mult : LIST [0 : ?] OF INTEGER;
23711               knots : LIST [0 : ?] OF parameter_value
23712           ) : BOOLEAN;
23713
23714    LOCAL
23715      k      : INTEGER;
23716      sum    : INTEGER;
23717      result : BOOLEAN := TRUE;
23718    END_LOCAL;
23719    sum := knot_mult[1];
23720    REPEAT i := 2 TO up_knots BY 1;
23721      sum := sum + knot_mult[i];
23722    END_REPEAT;
23723    IF ( degree < 1 ) OR ( up_knots < 2 ) OR ( up_cp < degree ) OR ( sum <> ( degree + up_cp + 2 ) ) THEN
23724      result := FALSE;
23725      RETURN( result );
23726    END_IF;
23727    k := knot_mult[1];
23728    IF ( k < 1 ) OR ( k > ( degree + 1 ) ) THEN
23729      result := FALSE;
23730      RETURN( result );
23731    END_IF;
23732    REPEAT i := 2 TO up_knots BY 1;
23733      IF ( knot_mult[i] < 1 ) OR ( knots[i] <= knots[i - 1] ) THEN
23734        result := FALSE;
23735        RETURN( result );
23736      END_IF;
23737      k := knot_mult[i];
23738      IF ( i < up_knots ) AND ( k > degree ) THEN
23739        result := FALSE;
23740        RETURN( result );
23741      END_IF;
23742      IF ( i = up_knots ) AND ( k > ( degree + 1 ) ) THEN
23743        result := FALSE;
23744        RETURN( result );
23745      END_IF;
23746    END_REPEAT;
23747    RETURN( result );
23748
23749  END_FUNCTION;
23750
23751  FUNCTION constraints_rectangular_composite_surface(
23752               s : rectangular_composite_surface
23753           ) : BOOLEAN;
23754    REPEAT i := 1 TO s.n_u BY 1;
23755      REPEAT j := 1 TO s.n_v BY 1;
23756        IF NOT ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF( s.segments[i][j].parent_surface ) )
23757            OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE' IN TYPEOF( s.segments[i][j].
23758            parent_surface ) ) ) THEN
23759          RETURN( FALSE );
23760        END_IF;
23761      END_REPEAT;
23762    END_REPEAT;
23763    REPEAT i := 1 TO s.n_u - 1 BY 1;
23764      REPEAT j := 1 TO s.n_v BY 1;
23765        IF s.segments[i][j].u_transition = discontinuous THEN
23766          RETURN( FALSE );
23767        END_IF;
23768      END_REPEAT;
23769    END_REPEAT;
23770    REPEAT i := 1 TO s.n_u BY 1;
23771      REPEAT j := 1 TO s.n_v - 1 BY 1;
23772        IF s.segments[i][j].v_transition = discontinuous THEN
23773          RETURN( FALSE );
23774        END_IF;
23775      END_REPEAT;
23776    END_REPEAT;
23777    RETURN( TRUE );
23778
23779  END_FUNCTION;
23780
23781  FUNCTION control_characters_free(
23782               s : STRING
23783           ) : BOOLEAN;
23784
23785    LOCAL
23786      ch : STRING;
23787    END_LOCAL;
23788    REPEAT i := 1 TO LENGTH( s ) BY 1;
23789      ch := s[i];
23790      IF ( ch = '\x9' ) OR ( ch = '\xA' ) OR ( ch = '\xD' ) THEN
23791        RETURN( FALSE );
23792      END_IF;
23793    END_REPEAT;
23794    RETURN( TRUE );
23795
23796  END_FUNCTION;
23797
23798  FUNCTION convert_spatial_to_ypr_rotation(
23799               pair : kinematic_pair;
23800               rotation : spatial_rotation
23801           ) : ypr_rotation;
23802
23803    LOCAL
23804      ucf        : REAL;
23805      s_a        : REAL;
23806      c_r        : REAL;
23807      c_y        : REAL;
23808      dx         : REAL;
23809      dy         : REAL;
23810      dz         : REAL;
23811      c_a        : REAL;
23812      angle      : plane_angle_measure;
23813      s_r        : REAL;
23814      rotmat     : ARRAY [1 : 3] OF ARRAY [1 : 3] OF REAL;
23815      conv_angle : plane_angle_measure;
23816      axis       : direction;
23817      s_y        : REAL;
23818      ra         : plane_angle_measure;
23819      ya         : plane_angle_measure;
23820      cm1        : REAL;
23821      pa         : plane_angle_measure;
23822    END_LOCAL;
23823    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.YPR_ROTATION' IN TYPEOF( rotation ) THEN
23824      RETURN( rotation );
23825    END_IF;
23826    axis := normalise( rotation\rotation_about_direction.direction_of_axis );
23827    angle := rotation\rotation_about_direction.rotation_angle;
23828    IF angle = 0 THEN
23829      RETURN( [0, 0, 0] );
23830    END_IF;
23831    dx := axis.direction_ratios[1];
23832    dy := axis.direction_ratios[2];
23833    dz := axis.direction_ratios[3];
23834    conv_angle := plane_angle_for_pair_in_radian( pair, angle );
23835    IF NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF( conv_angle ) ) THEN
23836      RETURN( ? );
23837    END_IF;
23838    ucf := angle DIV conv_angle;
23839    s_a := SIN( conv_angle );
23840    c_a := COS( conv_angle );
23841    IF ( dy = 0 ) AND ( ( dx * dz ) = 0 ) THEN
23842      REPEAT WHILE conv_angle <= ( -PI );
23843        conv_angle := conv_angle + ( 2 * PI );
23844      END_REPEAT;
23845      REPEAT WHILE conv_angle > PI;
23846        conv_angle := conv_angle - ( 2 * PI );
23847      END_REPEAT;
23848      ya := ucf * conv_angle;
23849      IF conv_angle <> PI THEN
23850        ra := -ya;
23851      ELSE
23852        ra := ya;
23853      END_IF;
23854      IF dx <> 0 THEN
23855        IF dx > 0 THEN
23856          RETURN( [0, 0, ya] );
23857        ELSE
23858          RETURN( [0, 0, ra] );
23859        END_IF;
23860      ELSE
23861        IF dz > 0 THEN
23862          RETURN( [ya, 0, 0] );
23863        ELSE
23864          RETURN( [ra, 0, 0] );
23865        END_IF;
23866      END_IF;
23867    END_IF;
23868    IF ( dy <> 0 ) AND ( dx = 0 ) AND ( dz = 0 ) THEN
23869      IF c_a >= 0 THEN
23870        ya := 0;
23871        ra := 0;
23872      ELSE
23873        ya := ucf * PI;
23874        ra := ya;
23875      END_IF;
23876      pa := ucf * ATAN( s_a, ABS( c_a ) );
23877      IF dy < 0 THEN
23878        pa := -pa;
23879      END_IF;
23880      RETURN( [ya, pa, ra] );
23881    END_IF;
23882    cm1 := 1 - c_a;
23883    rotmat := [[( dx * dx * cm1 ) + c_a, ( dx * dy * cm1 ) - ( dz * s_a ), ( dx * dz * cm1 ) + ( dy * s_a )], [( dx * dy * cm1 )
23884        + ( dz * s_a ), ( dy * dy * cm1 ) + c_a, ( dy * dz * cm1 ) - ( dx * s_a )], [( dx * dz * cm1 ) - ( dy * s_a ), ( dy * dz *
23885        cm1 ) + ( dx * s_a ), ( dz * dz * cm1 ) + c_a]];
23886    IF ABS( rotmat[1][3] ) = 1 THEN
23887
23888      BEGIN
23889        IF rotmat[1][3] = 1 THEN
23890          pa := 0.5 * PI;
23891        ELSE
23892          pa := ( -0.5 ) * PI;
23893        END_IF;
23894        ra := 0;
23895        ya := ATAN( rotmat[2][1], rotmat[2][2] );
23896        IF rotmat[2][2] < 0 THEN
23897          IF ya <= 0 THEN
23898            ya := ya + PI;
23899          ELSE
23900            ya := ya - PI;
23901          END_IF;
23902        END_IF;
23903      END;
23904    ELSE
23905
23906      BEGIN
23907        ya := ATAN( -rotmat[1][2], rotmat[1][1] );
23908        IF rotmat[1][1] < 0 THEN
23909          IF ya <= 0 THEN
23910            ya := ya + PI;
23911          ELSE
23912            ya := ya - PI;
23913          END_IF;
23914        END_IF;
23915        ra := ATAN( -rotmat[2][3], rotmat[3][3] );
23916        IF rotmat[3][3] < 0 THEN
23917          IF ra <= 0 THEN
23918            ra := ra + PI;
23919          ELSE
23920            ra := ra - PI;
23921          END_IF;
23922        END_IF;
23923        s_y := SIN( ya );
23924        c_y := COS( ya );
23925        s_r := SIN( ra );
23926        c_r := COS( ra );
23927        IF ( ABS( s_y ) > ABS( c_y ) ) AND ( ABS( s_y ) > ABS( s_r ) ) AND ( ABS( s_y ) > ABS( c_r ) ) THEN
23928          cm1 := ( -rotmat[1][2] ) DIV s_y;
23929        ELSE
23930          IF ( ABS( c_y ) > ABS( s_r ) ) AND ( ABS( c_y ) > ABS( c_r ) ) THEN
23931            cm1 := rotmat[1][1] DIV c_y;
23932          ELSE
23933            IF ABS( s_r ) > ABS( c_r ) THEN
23934              cm1 := ( -rotmat[2][3] ) DIV s_r;
23935            ELSE
23936              cm1 := rotmat[3][3] DIV c_r;
23937            END_IF;
23938          END_IF;
23939        END_IF;
23940        pa := ATAN( rotmat[1][3], cm1 );
23941      END;
23942    END_IF;
23943    ya := ya * ucf;
23944    pa := pa * ucf;
23945    ra := ra * ucf;
23946    RETURN( [ya, pa, ra] );
23947
23948  END_FUNCTION;
23949
23950  FUNCTION convert_to_literal(
23951               val : maths_atom
23952           ) : generic_literal;
23953
23954    LOCAL
23955      types : SET OF STRING := TYPEOF( val );
23956    END_LOCAL;
23957    IF 'INTEGER' IN types THEN
23958      RETURN( make_int_literal( val ) );
23959    END_IF;
23960    IF 'REAL' IN types THEN
23961      RETURN( make_real_literal( val ) );
23962    END_IF;
23963    IF 'BOOLEAN' IN types THEN
23964      RETURN( make_boolean_literal( val ) );
23965    END_IF;
23966    IF 'STRING' IN types THEN
23967      RETURN( make_string_literal( val ) );
23968    END_IF;
23969    IF 'LOGICAL' IN types THEN
23970      RETURN( make_logical_literal( val ) );
23971    END_IF;
23972    IF 'BINARY' IN types THEN
23973      RETURN( make_binary_literal( val ) );
23974    END_IF;
23975    IF ( schema_prefix + 'MATHS_ENUM_ATOM' ) IN types THEN
23976      RETURN( make_maths_enum_literal( val ) );
23977    END_IF;
23978    RETURN( ? );
23979
23980  END_FUNCTION;
23981
23982  FUNCTION convert_to_maths_function(
23983               func : maths_function_select
23984           ) : maths_function;
23985
23986    LOCAL
23987      efenum : elementary_function_enumerators;
23988      mthfun : maths_function;
23989    END_LOCAL;
23990    IF ( schema_prefix + 'MATHS_FUNCTION' ) IN TYPEOF( func ) THEN
23991      mthfun := func;
23992    ELSE
23993      efenum := func;
23994      mthfun := make_elementary_function( efenum );
23995    END_IF;
23996    RETURN( mthfun );
23997
23998  END_FUNCTION;
23999
24000  FUNCTION convert_to_maths_value(
24001               val : GENERIC:g
24002           ) : maths_value;
24003
24004    LOCAL
24005      bval  : maths_binary;
24006      tfval : maths_boolean;
24007      lval  : maths_logical;
24008      mval  : maths_value;
24009      nval  : maths_number;
24010      rval  : maths_real;
24011      ival  : maths_integer;
24012      tval  : maths_tuple := the_empty_maths_tuple;
24013      types : SET OF STRING := TYPEOF( val );
24014      sval  : maths_string;
24015    END_LOCAL;
24016    IF ( schema_prefix + 'MATHS_VALUE' ) IN types THEN
24017      RETURN( val );
24018    END_IF;
24019    IF 'INTEGER' IN types THEN
24020      ival := val;
24021      RETURN( ival );
24022    END_IF;
24023    IF 'REAL' IN types THEN
24024      rval := val;
24025      RETURN( rval );
24026    END_IF;
24027    IF 'NUMBER' IN types THEN
24028      nval := val;
24029      RETURN( nval );
24030    END_IF;
24031    IF 'BOOLEAN' IN types THEN
24032      tfval := val;
24033      RETURN( tfval );
24034    END_IF;
24035    IF 'LOGICAL' IN types THEN
24036      lval := val;
24037      RETURN( lval );
24038    END_IF;
24039    IF 'STRING' IN types THEN
24040      sval := val;
24041      RETURN( sval );
24042    END_IF;
24043    IF 'BINARY' IN types THEN
24044      bval := val;
24045      RETURN( bval );
24046    END_IF;
24047    IF 'LIST' IN types THEN
24048      REPEAT i := 1 TO SIZEOF( val ) BY 1;
24049        mval := convert_to_maths_value( val[i] );
24050        IF NOT EXISTS( mval ) THEN
24051          RETURN( ? );
24052        END_IF;
24053        INSERT( tval, mval, i - 1 );
24054      END_REPEAT;
24055      RETURN( tval );
24056    END_IF;
24057    RETURN( ? );
24058
24059  END_FUNCTION;
24060
24061  FUNCTION convert_to_operand(
24062               val : maths_value
24063           ) : generic_expression;
24064
24065    LOCAL
24066      types : SET OF STRING := stripped_typeof( val );
24067    END_LOCAL;
24068    IF 'GENERIC_EXPRESSION' IN types THEN
24069      RETURN( val );
24070    END_IF;
24071    IF 'MATHS_ATOM' IN types THEN
24072      RETURN( convert_to_literal( val ) );
24073    END_IF;
24074    IF 'ATOM_BASED_VALUE' IN types THEN
24075      RETURN( make_atom_based_literal( val ) );
24076    END_IF;
24077    IF 'MATHS_TUPLE' IN types THEN
24078      RETURN( make_maths_tuple_literal( val ) );
24079    END_IF;
24080    RETURN( ? );
24081
24082  END_FUNCTION;
24083
24084  FUNCTION convert_to_operands(
24085               values : AGGREGATE OF maths_value
24086           ) : LIST OF generic_expression;
24087
24088    LOCAL
24089      loc      : INTEGER := 0;
24090      operands : LIST OF generic_expression := [];
24091    END_LOCAL;
24092    IF NOT EXISTS( values ) THEN
24093      RETURN( ? );
24094    END_IF;
24095    REPEAT i := LOINDEX( values ) TO HIINDEX( values ) BY 1;
24096      INSERT( operands, convert_to_operand( values[i] ), loc );
24097      loc := loc + 1;
24098    END_REPEAT;
24099    RETURN( operands );
24100
24101  END_FUNCTION;
24102
24103  FUNCTION convert_to_operands_prcmfn(
24104               srcdom : maths_space_or_function;
24105               prepfun : LIST OF maths_function;
24106               finfun : maths_function_select
24107           ) : LIST [2 : ?] OF generic_expression;
24108
24109    LOCAL
24110      operands : LIST OF generic_expression := [];
24111    END_LOCAL;
24112    INSERT( operands, srcdom, 0 );
24113    REPEAT i := 1 TO SIZEOF( prepfun ) BY 1;
24114      INSERT( operands, prepfun[i], i );
24115    END_REPEAT;
24116    INSERT( operands, convert_to_maths_function( finfun ), SIZEOF( prepfun ) + 1 );
24117    RETURN( operands );
24118
24119  END_FUNCTION;
24120
24121  FUNCTION cross_product(
24122               arg1, arg2 : direction
24123           ) : vector;
24124
24125    LOCAL
24126      v2     : LIST [3 : 3] OF REAL;
24127      v1     : LIST [3 : 3] OF REAL;
24128      mag    : REAL;
24129      res    : direction;
24130      result : vector;
24131    END_LOCAL;
24132    IF ( NOT EXISTS( arg1 ) ) OR ( arg1.dim = 2 ) OR ( NOT EXISTS( arg2 ) ) OR ( arg2.dim = 2 ) THEN
24133      RETURN( ? );
24134    ELSE
24135
24136      BEGIN
24137        v1 := normalise( arg1 ).direction_ratios;
24138        v2 := normalise( arg2 ).direction_ratios;
24139        res := dummy_gri || direction( [( v1[2] * v2[3] ) - ( v1[3] * v2[2] ), ( v1[3] * v2[1] ) - ( v1[1] * v2[3] ), ( v1[1] *
24140            v2[2] ) - ( v1[2] * v2[1] )] );
24141        mag := 0;
24142        REPEAT i := 1 TO 3 BY 1;
24143          mag := mag + ( res.direction_ratios[i] * res.direction_ratios[i] );
24144        END_REPEAT;
24145        IF mag > 0 THEN
24146          result := dummy_gri || vector( res, SQRT( mag ) );
24147        ELSE
24148          result := dummy_gri || vector( arg1, 0 );
24149        END_IF;
24150        RETURN( result );
24151      END;
24152    END_IF;
24153
24154  END_FUNCTION;
24155
24156  FUNCTION curve_weights_positive(
24157               b : rational_b_spline_curve
24158           ) : BOOLEAN;
24159
24160    LOCAL
24161      result : BOOLEAN := TRUE;
24162    END_LOCAL;
24163    REPEAT i := 0 TO b.upper_index_on_control_points BY 1;
24164      IF b.weights[i] <= 0 THEN
24165        result := FALSE;
24166        RETURN( result );
24167      END_IF;
24168    END_REPEAT;
24169    RETURN( result );
24170
24171  END_FUNCTION;
24172
24173  FUNCTION default_tolerance_table_cell_wr2(
24174               agg : compound_item_definition
24175           ) : BOOLEAN;
24176
24177    BEGIN
24178      IF SIZEOF( agg ) <= 5 THEN
24179        RETURN( TRUE );
24180      ELSE
24181        RETURN( FALSE );
24182      END_IF;
24183    END;
24184
24185  END_FUNCTION;
24186
24187  FUNCTION default_tolerance_table_cell_wr3(
24188               agg : compound_item_definition
24189           ) : BOOLEAN;
24190
24191    BEGIN
24192      IF ( SIZEOF( QUERY ( i <* agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
24193          TYPEOF( i ) ) AND ( i\representation_item.name = 'significant number of digits' ) ) ) ) = 1 ) OR ( ( SIZEOF(
24194          QUERY ( i <* agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF( i ) )
24195          AND ( i\representation_item.name = 'lower limit' ) ) ) ) = 1 ) AND ( SIZEOF( QUERY ( i <* agg | ( (
24196          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) AND ( i\
24197          representation_item.name = 'upper limit' ) ) ) ) = 1 ) ) THEN
24198        RETURN( TRUE );
24199      ELSE
24200        RETURN( FALSE );
24201      END_IF;
24202    END;
24203
24204  END_FUNCTION;
24205
24206  FUNCTION default_tolerance_table_cell_wr4(
24207               agg : compound_item_definition
24208           ) : BOOLEAN;
24209
24210    BEGIN
24211      IF ( SIZEOF( QUERY ( i <* agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
24212          TYPEOF( i ) ) AND ( i\representation_item.name = 'plus minus tolerance value' ) ) ) ) = 1 ) OR ( ( SIZEOF( QUERY ( i <*
24213          agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN TYPEOF( i ) ) AND ( i\
24214          representation_item.name = 'lower tolerance value' ) ) ) ) = 1 ) AND ( SIZEOF( QUERY ( i <* agg | ( (
24215          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) AND ( i\
24216          representation_item.name = 'upper tolerance value' ) ) ) ) = 1 ) ) THEN
24217        RETURN( TRUE );
24218      ELSE
24219        RETURN( FALSE );
24220      END_IF;
24221    END;
24222
24223  END_FUNCTION;
24224
24225  FUNCTION default_tolerance_table_cell_wr5(
24226               agg : compound_item_definition
24227           ) : BOOLEAN;
24228
24229    BEGIN
24230      IF ( SIZEOF( QUERY ( i <* agg | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM' IN
24231          TYPEOF( i ) ) ) ) <= 1 ) AND ( SIZEOF( QUERY ( i <* agg | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
24232          + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) ) ) = SIZEOF( QUERY ( i <* agg | ( (
24233          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) AND ( i\
24234          representation_item.name = 'cell description' ) ) ) ) ) THEN
24235        RETURN( TRUE );
24236      ELSE
24237        RETURN( FALSE );
24238      END_IF;
24239    END;
24240
24241  END_FUNCTION;
24242
24243  FUNCTION definite_integral_check(
24244               domain : tuple_space;
24245               vrblint : input_selector;
24246               lowerinf : BOOLEAN;
24247               upperinf : BOOLEAN
24248           ) : BOOLEAN;
24249
24250    LOCAL
24251      fspc : maths_space;
24252      domn : tuple_space := domain;
24253      k    : positive_integer;
24254      dim  : nonnegative_integer;
24255    END_LOCAL;
24256    IF ( space_dimension( domain ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( factor1( domain ) ) ) THEN
24257      domn := factor1( domain );
24258    END_IF;
24259    dim := space_dimension( domn );
24260    k := vrblint;
24261    IF k > dim THEN
24262      RETURN( FALSE );
24263    END_IF;
24264    fspc := factor_space( domn, k );
24265    IF NOT ( ( schema_prefix + 'REAL_INTERVAL' ) IN TYPEOF( fspc ) ) THEN
24266      RETURN( FALSE );
24267    END_IF;
24268    IF lowerinf AND min_exists( fspc ) THEN
24269      RETURN( FALSE );
24270    END_IF;
24271    IF upperinf AND max_exists( fspc ) THEN
24272      RETURN( FALSE );
24273    END_IF;
24274    RETURN( TRUE );
24275
24276  END_FUNCTION;
24277
24278  FUNCTION definite_integral_expr_check(
24279               operands : LIST [2 : ?] OF generic_expression;
24280               lowerinf : BOOLEAN;
24281               upperinf : BOOLEAN
24282           ) : BOOLEAN;
24283
24284    LOCAL
24285      k    : positive_integer;
24286      nops : INTEGER := 2;
24287      bspc : maths_space;
24288      vspc : maths_space;
24289      dim  : nonnegative_integer;
24290    END_LOCAL;
24291    IF NOT lowerinf THEN
24292      nops := nops + 1;
24293    END_IF;
24294    IF NOT upperinf THEN
24295      nops := nops + 1;
24296    END_IF;
24297    IF SIZEOF( operands ) <> nops THEN
24298      RETURN( FALSE );
24299    END_IF;
24300    IF NOT ( 'GENERIC_VARIABLE' IN stripped_typeof( operands[2] ) ) THEN
24301      RETURN( FALSE );
24302    END_IF;
24303    IF NOT has_values_space( operands[2] ) THEN
24304      RETURN( FALSE );
24305    END_IF;
24306    vspc := values_space_of( operands[2] );
24307    IF NOT ( 'REAL_INTERVAL' IN stripped_typeof( vspc ) ) THEN
24308      RETURN( FALSE );
24309    END_IF;
24310    IF lowerinf THEN
24311      IF min_exists( vspc ) THEN
24312        RETURN( FALSE );
24313      END_IF;
24314      k := 3;
24315    ELSE
24316      IF NOT has_values_space( operands[3] ) THEN
24317        RETURN( FALSE );
24318      END_IF;
24319      bspc := values_space_of( operands[3] );
24320      IF NOT compatible_spaces( bspc, vspc ) THEN
24321        RETURN( FALSE );
24322      END_IF;
24323      k := 4;
24324    END_IF;
24325    IF upperinf THEN
24326      IF max_exists( vspc ) THEN
24327        RETURN( FALSE );
24328      END_IF;
24329    ELSE
24330      IF NOT has_values_space( operands[k] ) THEN
24331        RETURN( FALSE );
24332      END_IF;
24333      bspc := values_space_of( operands[k] );
24334      IF NOT compatible_spaces( bspc, vspc ) THEN
24335        RETURN( FALSE );
24336      END_IF;
24337    END_IF;
24338    RETURN( TRUE );
24339
24340  END_FUNCTION;
24341
24342  FUNCTION dependently_instantiated(
24343               set_of_input_instances : SET OF GENERIC:igen;
24344               set_of_input_types : SET OF STRING;
24345               previous_in_chain : LIST OF GENERIC:cgen
24346           ) : BOOLEAN;
24347
24348    LOCAL
24349      bag_of_referring_instances    : BAG OF GENERIC:igen := [];
24350      dependently_instantiated_flag : BOOLEAN;
24351      number_of_input_instances     : INTEGER;
24352      set_of_types                  : SET OF STRING := [];
24353      previous_in_chain_plus        : LIST OF GENERIC:cgen := [];
24354      number_of_referring_instances : INTEGER;
24355      result                        : BOOLEAN := TRUE;
24356    END_LOCAL;
24357    IF EXISTS( set_of_input_instances ) THEN
24358      number_of_input_instances := SIZEOF( set_of_input_instances );
24359      set_of_input_types := set_of_input_types + 'GENERIC';
24360      REPEAT i := 1 TO number_of_input_instances BY 1;
24361        bag_of_referring_instances := USEDIN( set_of_input_instances[i], '' );
24362        IF EXISTS( bag_of_referring_instances ) THEN
24363          number_of_referring_instances := SIZEOF( bag_of_referring_instances );
24364          dependently_instantiated_flag := FALSE;
24365          REPEAT j := 1 TO number_of_referring_instances BY 1;
24366            set_of_types := TYPEOF( bag_of_referring_instances[j] );
24367            IF set_of_types <= set_of_input_types THEN
24368              IF NOT ( bag_of_referring_instances[j] IN previous_in_chain ) THEN
24369                previous_in_chain_plus := previous_in_chain + set_of_input_instances[i];
24370                IF dependently_instantiated( [bag_of_referring_instances[j]], set_of_input_types, previous_in_chain_plus ) THEN
24371                  dependently_instantiated_flag := TRUE;
24372                  ESCAPE;
24373                ELSE
24374                  SKIP;
24375                END_IF;
24376              END_IF;
24377            ELSE
24378              dependently_instantiated_flag := TRUE;
24379              ESCAPE;
24380            END_IF;
24381          END_REPEAT;
24382          IF NOT dependently_instantiated_flag THEN
24383            RETURN( FALSE );
24384          END_IF;
24385        ELSE
24386          RETURN( FALSE );
24387        END_IF;
24388      END_REPEAT;
24389    ELSE
24390      RETURN( FALSE );
24391    END_IF;
24392    RETURN( TRUE );
24393
24394  END_FUNCTION;
24395
24396  FUNCTION derive_angle(
24397               placement_1, placement_2 : axis2_placement_3d
24398           ) : plane_angle_measure;
24399
24400    LOCAL
24401      v2     : direction;
24402      v1     : direction;
24403      mag_v2 : REAL;
24404      mag_v1 : REAL;
24405      theta  : plane_angle_measure;
24406    END_LOCAL;
24407    v1 := placement_1.p[1];
24408    v2 := placement_2.p[1];
24409    mag_v1 := SQRT( ( v1.direction_ratios[1] * v1.direction_ratios[1] ) + ( v1.direction_ratios[2] * v1.direction_ratios[2] ) );
24410    mag_v2 := SQRT( ( v2.direction_ratios[1] * v2.direction_ratios[1] ) + ( v2.direction_ratios[2] * v2.direction_ratios[2] ) );
24411    IF ( mag_v1 = 0 ) OR ( mag_v2 = 0 ) THEN
24412      theta := 0;
24413      RETURN( theta );
24414    END_IF;
24415    theta := ACOS( ( ( v1.direction_ratios[1] * v2.direction_ratios[1] ) + ( v1.direction_ratios[2] * v2.direction_ratios[2] ) )
24416        DIV ( mag_v1 * mag_v2 ) );
24417    RETURN( theta );
24418
24419  END_FUNCTION;
24420
24421  FUNCTION derive_definite_integral_domain(
24422               igrl : definite_integral_function
24423           ) : tuple_space;
24424
24425    FUNCTION process_product_space(
24426                 spc : product_space;
24427                 idx, prefix : INTEGER;
24428                 vdomn : maths_space
24429             ) : product_space;
24430
24431      LOCAL
24432        factors : LIST OF maths_space;
24433        uspc    : uniform_product_space;
24434        expnt   : INTEGER;
24435      END_LOCAL;
24436      IF ( schema_prefix + 'UNIFORM_PRODUCT_SPACE' ) IN TYPEOF( spc ) THEN
24437        uspc := spc;
24438        expnt := uspc.exponent + prefix;
24439        IF idx <= uspc.exponent THEN
24440          expnt := expnt - 1;
24441        END_IF;
24442        IF expnt = 0 THEN
24443          RETURN( make_listed_product_space( [] ) );
24444        ELSE
24445          RETURN( make_uniform_product_space( uspc.base, expnt ) );
24446        END_IF;
24447      ELSE
24448        factors := spc\listed_product_space.factors;
24449        IF idx <= SIZEOF( factors ) THEN
24450          REMOVE( factors, idx );
24451        END_IF;
24452        IF prefix > 0 THEN
24453          INSERT( factors, vdomn, 0 );
24454          IF prefix > 1 THEN
24455            INSERT( factors, vdomn, 0 );
24456          END_IF;
24457        END_IF;
24458        RETURN( make_listed_product_space( factors ) );
24459      END_IF;
24460
24461    END_FUNCTION;
24462
24463    LOCAL
24464      espc   : extended_tuple_space;
24465      idx    : INTEGER := igrl.variable_of_integration;
24466      prefix : INTEGER := 0;
24467      tupled : BOOLEAN := bool( ( space_dimension( idomn ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN types ) );
24468      types  : SET OF STRING := TYPEOF( idomn );
24469      vdomn  : maths_space;
24470      idomn  : tuple_space := igrl.integrand.domain;
24471    END_LOCAL;
24472    IF tupled THEN
24473      idomn := factor1( idomn );
24474      types := TYPEOF( idomn );
24475    END_IF;
24476    IF igrl.lower_limit_neg_infinity THEN
24477      prefix := prefix + 1;
24478    END_IF;
24479    IF igrl.upper_limit_pos_infinity THEN
24480      prefix := prefix + 1;
24481    END_IF;
24482    vdomn := factor_space( idomn, idx );
24483    IF ( schema_prefix + 'EXTENDED_TUPLE_SPACE' ) IN types THEN
24484      espc := idomn;
24485      idomn := make_extended_tuple_space( process_product_space( espc.base, idx, prefix, vdomn ), espc.extender );
24486    ELSE
24487      idomn := process_product_space( idomn, idx, prefix, vdomn );
24488    END_IF;
24489    IF tupled THEN
24490      RETURN( one_tuples_of( idomn ) );
24491    ELSE
24492      RETURN( idomn );
24493    END_IF;
24494
24495  END_FUNCTION;
24496
24497  FUNCTION derive_dimensional_exponents(
24498               x : unit
24499           ) : dimensional_exponents;
24500
24501    LOCAL
24502      result : dimensional_exponents := dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 );
24503    END_LOCAL;
24504    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DERIVED_UNIT' IN TYPEOF( x ) THEN
24505      REPEAT i := LOINDEX( x\derived_unit.elements ) TO HIINDEX( x\derived_unit.elements ) BY 1;
24506        result.length_exponent := result.length_exponent + ( x\derived_unit.elements[i]\derived_unit_element.exponent * x\
24507            derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.length_exponent );
24508        result.mass_exponent := result.mass_exponent + ( x\derived_unit.elements[i]\derived_unit_element.exponent * x\
24509            derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.mass_exponent );
24510        result.time_exponent := result.time_exponent + ( x\derived_unit.elements[i]\derived_unit_element.exponent * x\
24511            derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.time_exponent );
24512        result.electric_current_exponent := result.electric_current_exponent + ( x\derived_unit.elements[i]\derived_unit_element.
24513            exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.electric_current_exponent );
24514        result.thermodynamic_temperature_exponent := result.thermodynamic_temperature_exponent + ( x\derived_unit.elements[i]\
24515            derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.
24516            thermodynamic_temperature_exponent );
24517        result.amount_of_substance_exponent := result.amount_of_substance_exponent + ( x\derived_unit.elements[i]\
24518            derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.
24519            amount_of_substance_exponent );
24520        result.luminous_intensity_exponent := result.luminous_intensity_exponent + ( x\derived_unit.elements[i]\
24521            derived_unit_element.exponent * x\derived_unit.elements[i]\derived_unit_element.unit\named_unit.dimensions.
24522            luminous_intensity_exponent );
24523      END_REPEAT;
24524    ELSE
24525      result := x\named_unit.dimensions;
24526    END_IF;
24527    RETURN( result );
24528
24529  END_FUNCTION;
24530
24531  FUNCTION derive_elementary_function_domain(
24532               ef_val : elementary_function_enumerators
24533           ) : tuple_space;
24534    IF NOT EXISTS( ef_val ) THEN
24535      RETURN( ? );
24536    END_IF;
24537    CASE ef_val OF
24538      ef_and            :         RETURN( make_extended_tuple_space( the_zero_tuple_space, the_logicals ) );
24539      ef_or             :         RETURN( make_extended_tuple_space( the_zero_tuple_space, the_logicals ) );
24540      ef_not            :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24541      ef_xor            :         RETURN( make_uniform_product_space( the_logicals, 2 ) );
24542      ef_negate_i       :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24543      ef_add_i          :         RETURN( the_integer_tuples );
24544      ef_subtract_i     :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24545      ef_multiply_i     :         RETURN( the_integer_tuples );
24546      ef_divide_i       :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24547      ef_mod_i          :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24548      ef_exponentiate_i :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24549      ef_eq_i           :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24550      ef_ne_i           :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24551      ef_gt_i           :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24552      ef_lt_i           :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24553      ef_ge_i           :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24554      ef_le_i           :         RETURN( make_uniform_product_space( the_integers, 2 ) );
24555      ef_abs_i          :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24556      ef_if_i           :         RETURN( make_listed_product_space( [the_logicals, the_integers, the_integers] ) );
24557      ef_negate_r       :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24558      ef_reciprocal_r   :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24559      ef_add_r          :         RETURN( the_real_tuples );
24560      ef_subtract_r     :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24561      ef_multiply_r     :         RETURN( the_real_tuples );
24562      ef_divide_r       :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24563      ef_mod_r          :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24564      ef_exponentiate_r :         RETURN( make_listed_product_space( [the_nonnegative_reals, the_reals] ) );
24565      ef_exponentiate_ri :         RETURN( make_listed_product_space( [the_reals, the_integers] ) );
24566      ef_eq_r           :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24567      ef_ne_r           :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24568      ef_gt_r           :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24569      ef_lt_r           :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24570      ef_ge_r           :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24571      ef_le_r           :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24572      ef_abs_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24573      ef_acos_r         :         RETURN( make_uniform_product_space( the_neg1_one_interval, 1 ) );
24574      ef_asin_r         :         RETURN( make_uniform_product_space( the_neg1_one_interval, 1 ) );
24575      ef_atan2_r        :         RETURN( make_uniform_product_space( the_reals, 2 ) );
24576      ef_cos_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24577      ef_exp_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24578      ef_ln_r           :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24579      ef_log2_r         :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24580      ef_log10_r        :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24581      ef_sin_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24582      ef_sqrt_r         :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24583      ef_tan_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24584      ef_if_r           :         RETURN( make_listed_product_space( [the_logicals, the_reals, the_reals] ) );
24585      ef_negate_c       :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24586      ef_reciprocal_c   :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24587      ef_add_c          :         RETURN( the_complex_tuples );
24588      ef_subtract_c     :         RETURN( make_uniform_product_space( the_complex_numbers, 2 ) );
24589      ef_multiply_c     :         RETURN( the_complex_tuples );
24590      ef_divide_c       :         RETURN( make_uniform_product_space( the_complex_numbers, 2 ) );
24591      ef_exponentiate_c :         RETURN( make_uniform_product_space( the_complex_numbers, 2 ) );
24592      ef_exponentiate_ci :         RETURN( make_listed_product_space( [the_complex_numbers, the_integers] ) );
24593      ef_eq_c           :         RETURN( make_uniform_product_space( the_complex_numbers, 2 ) );
24594      ef_ne_c           :         RETURN( make_uniform_product_space( the_complex_numbers, 2 ) );
24595      ef_conjugate_c    :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24596      ef_abs_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24597      ef_arg_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24598      ef_cos_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24599      ef_exp_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24600      ef_ln_c           :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24601      ef_sin_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24602      ef_sqrt_c         :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24603      ef_tan_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24604      ef_if_c           :         RETURN( make_listed_product_space( [the_logicals, the_complex_numbers, the_complex_numbers] ) );
24605      ef_subscript_s    :         RETURN( make_listed_product_space( [the_strings, the_integers] ) );
24606      ef_eq_s           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24607      ef_ne_s           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24608      ef_gt_s           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24609      ef_lt_s           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24610      ef_ge_s           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24611      ef_le_s           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24612      ef_subsequence_s  :         RETURN( make_listed_product_space( [the_strings, the_integers, the_integers] ) );
24613      ef_concat_s       :         RETURN( make_extended_tuple_space( the_zero_tuple_space, the_strings ) );
24614      ef_size_s         :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24615      ef_format         :         RETURN( make_listed_product_space( [the_numbers, the_strings] ) );
24616      ef_value          :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24617      ef_like           :         RETURN( make_uniform_product_space( the_strings, 2 ) );
24618      ef_if_s           :         RETURN( make_listed_product_space( [the_logicals, the_strings, the_strings] ) );
24619      ef_subscript_b    :         RETURN( make_listed_product_space( [the_binarys, the_integers] ) );
24620      ef_eq_b           :         RETURN( make_uniform_product_space( the_binarys, 2 ) );
24621      ef_ne_b           :         RETURN( make_uniform_product_space( the_binarys, 2 ) );
24622      ef_gt_b           :         RETURN( make_uniform_product_space( the_binarys, 2 ) );
24623      ef_lt_b           :         RETURN( make_uniform_product_space( the_binarys, 2 ) );
24624      ef_ge_b           :         RETURN( make_uniform_product_space( the_binarys, 2 ) );
24625      ef_le_b           :         RETURN( make_uniform_product_space( the_binarys, 2 ) );
24626      ef_subsequence_b  :         RETURN( make_listed_product_space( [the_binarys, the_integers, the_integers] ) );
24627      ef_concat_b       :         RETURN( make_extended_tuple_space( the_zero_tuple_space, the_binarys ) );
24628      ef_size_b         :         RETURN( make_uniform_product_space( the_binarys, 1 ) );
24629      ef_if_b           :         RETURN( make_listed_product_space( [the_logicals, the_binarys, the_binarys] ) );
24630      ef_subscript_t    :         RETURN( make_listed_product_space( [the_tuples, the_integers] ) );
24631      ef_eq_t           :         RETURN( make_uniform_product_space( the_tuples, 2 ) );
24632      ef_ne_t           :         RETURN( make_uniform_product_space( the_tuples, 2 ) );
24633      ef_concat_t       :         RETURN( make_extended_tuple_space( the_zero_tuple_space, the_tuples ) );
24634      ef_size_t         :         RETURN( make_uniform_product_space( the_tuples, 1 ) );
24635      ef_entuple        :         RETURN( the_tuples );
24636      ef_detuple        :         RETURN( make_uniform_product_space( the_generics, 1 ) );
24637      ef_insert         :         RETURN( make_listed_product_space( [the_tuples, the_generics, the_integers] ) );
24638      ef_remove         :         RETURN( make_listed_product_space( [the_tuples, the_integers] ) );
24639      ef_if_t           :         RETURN( make_listed_product_space( [the_logicals, the_tuples, the_tuples] ) );
24640      ef_sum_it         :         RETURN( make_uniform_product_space( the_integer_tuples, 1 ) );
24641      ef_product_it     :         RETURN( make_uniform_product_space( the_integer_tuples, 1 ) );
24642      ef_add_it         :         RETURN( make_extended_tuple_space( the_integer_tuples, the_integer_tuples ) );
24643      ef_subtract_it    :         RETURN( make_uniform_product_space( the_integer_tuples, 2 ) );
24644      ef_scalar_mult_it :         RETURN( make_listed_product_space( [the_integers, the_integer_tuples] ) );
24645      ef_dot_prod_it    :         RETURN( make_uniform_product_space( the_integer_tuples, 2 ) );
24646      ef_sum_rt         :         RETURN( make_uniform_product_space( the_real_tuples, 1 ) );
24647      ef_product_rt     :         RETURN( make_uniform_product_space( the_real_tuples, 1 ) );
24648      ef_add_rt         :         RETURN( make_extended_tuple_space( the_real_tuples, the_real_tuples ) );
24649      ef_subtract_rt    :         RETURN( make_uniform_product_space( the_real_tuples, 2 ) );
24650      ef_scalar_mult_rt :         RETURN( make_listed_product_space( [the_reals, the_real_tuples] ) );
24651      ef_dot_prod_rt    :         RETURN( make_uniform_product_space( the_real_tuples, 2 ) );
24652      ef_norm_rt        :         RETURN( make_uniform_product_space( the_real_tuples, 1 ) );
24653      ef_sum_ct         :         RETURN( make_uniform_product_space( the_complex_tuples, 1 ) );
24654      ef_product_ct     :         RETURN( make_uniform_product_space( the_complex_tuples, 1 ) );
24655      ef_add_ct         :         RETURN( make_extended_tuple_space( the_complex_tuples, the_complex_tuples ) );
24656      ef_subtract_ct    :         RETURN( make_uniform_product_space( the_complex_tuples, 2 ) );
24657      ef_scalar_mult_ct :         RETURN( make_listed_product_space( [the_complex_numbers, the_complex_tuples] ) );
24658      ef_dot_prod_ct    :         RETURN( make_uniform_product_space( the_complex_tuples, 2 ) );
24659      ef_norm_ct        :         RETURN( make_uniform_product_space( the_complex_tuples, 1 ) );
24660      ef_if             :         RETURN( make_listed_product_space( [the_logicals, the_generics, the_generics] ) );
24661      ef_ensemble       :         RETURN( the_tuples );
24662      ef_member_of      :         RETURN( make_listed_product_space( [the_generics, the_maths_spaces] ) );
24663      OTHERWISE         :         RETURN( ? );
24664      END_CASE;
24665
24666  END_FUNCTION;
24667
24668  FUNCTION derive_elementary_function_range(
24669               ef_val : elementary_function_enumerators
24670           ) : tuple_space;
24671    IF NOT EXISTS( ef_val ) THEN
24672      RETURN( ? );
24673    END_IF;
24674    CASE ef_val OF
24675      ef_and            :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24676      ef_or             :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24677      ef_not            :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24678      ef_xor            :         RETURN( make_uniform_product_space( the_logicals, 2 ) );
24679      ef_negate_i       :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24680      ef_add_i          :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24681      ef_subtract_i     :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24682      ef_multiply_i     :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24683      ef_divide_i       :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24684      ef_mod_i          :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24685      ef_exponentiate_i :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24686      ef_eq_i           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24687      ef_ne_i           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24688      ef_gt_i           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24689      ef_lt_i           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24690      ef_ge_i           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24691      ef_le_i           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24692      ef_abs_i          :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24693      ef_if_i           :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24694      ef_negate_r       :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24695      ef_reciprocal_r   :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24696      ef_add_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24697      ef_subtract_r     :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24698      ef_multiply_r     :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24699      ef_divide_r       :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24700      ef_mod_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24701      ef_exponentiate_r :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24702      ef_exponentiate_ri :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24703      ef_eq_r           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24704      ef_ne_r           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24705      ef_gt_r           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24706      ef_lt_r           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24707      ef_ge_r           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24708      ef_le_r           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24709      ef_abs_r          :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24710      ef_acos_r         :         RETURN( make_uniform_product_space( the_zero_pi_interval, 1 ) );
24711      ef_asin_r         :         RETURN( make_uniform_product_space( the_neghalfpi_halfpi_interval, 1 ) );
24712      ef_atan2_r        :         RETURN( make_uniform_product_space( the_negpi_pi_interval, 1 ) );
24713      ef_cos_r          :         RETURN( make_uniform_product_space( the_neg1_one_interval, 1 ) );
24714      ef_exp_r          :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24715      ef_ln_r           :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24716      ef_log2_r         :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24717      ef_log10_r        :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24718      ef_sin_r          :         RETURN( make_uniform_product_space( the_neg1_one_interval, 1 ) );
24719      ef_sqrt_r         :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24720      ef_tan_r          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24721      ef_if_r           :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24722      ef_negate_c       :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24723      ef_reciprocal_c   :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24724      ef_add_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24725      ef_subtract_c     :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24726      ef_multiply_c     :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24727      ef_divide_c       :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24728      ef_exponentiate_c :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24729      ef_exponentiate_ci :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24730      ef_eq_c           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24731      ef_ne_c           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24732      ef_conjugate_c    :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24733      ef_abs_c          :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24734      ef_arg_c          :         RETURN( make_uniform_product_space( the_negpi_pi_interval, 1 ) );
24735      ef_cos_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24736      ef_exp_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24737      ef_ln_c           :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24738      ef_sin_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24739      ef_sqrt_c         :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24740      ef_tan_c          :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24741      ef_if_c           :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24742      ef_subscript_s    :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24743      ef_eq_s           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24744      ef_ne_s           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24745      ef_gt_s           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24746      ef_lt_s           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24747      ef_ge_s           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24748      ef_le_s           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24749      ef_subsequence_s  :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24750      ef_concat_s       :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24751      ef_size_s         :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24752      ef_format         :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24753      ef_value          :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24754      ef_like           :         RETURN( make_uniform_product_space( the_booleans, 1 ) );
24755      ef_if_s           :         RETURN( make_uniform_product_space( the_strings, 1 ) );
24756      ef_subscript_b    :         RETURN( make_uniform_product_space( the_binarys, 1 ) );
24757      ef_eq_b           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24758      ef_ne_b           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24759      ef_gt_b           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24760      ef_lt_b           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24761      ef_ge_b           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24762      ef_le_b           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24763      ef_subsequence_b  :         RETURN( make_uniform_product_space( the_binarys, 1 ) );
24764      ef_concat_b       :         RETURN( make_uniform_product_space( the_binarys, 1 ) );
24765      ef_size_b         :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24766      ef_if_b           :         RETURN( make_uniform_product_space( the_binarys, 1 ) );
24767      ef_subscript_t    :         RETURN( make_uniform_product_space( the_generics, 1 ) );
24768      ef_eq_t           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24769      ef_ne_t           :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24770      ef_concat_t       :         RETURN( make_uniform_product_space( the_tuples, 1 ) );
24771      ef_size_t         :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24772      ef_entuple        :         RETURN( make_uniform_product_space( the_tuples, 1 ) );
24773      ef_detuple        :         RETURN( the_tuples );
24774      ef_insert         :         RETURN( make_uniform_product_space( the_tuples, 1 ) );
24775      ef_remove         :         RETURN( make_uniform_product_space( the_tuples, 1 ) );
24776      ef_if_t           :         RETURN( make_uniform_product_space( the_tuples, 1 ) );
24777      ef_sum_it         :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24778      ef_product_it     :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24779      ef_add_it         :         RETURN( make_uniform_product_space( the_integer_tuples, 1 ) );
24780      ef_subtract_it    :         RETURN( make_uniform_product_space( the_integer_tuples, 1 ) );
24781      ef_scalar_mult_it :         RETURN( make_uniform_product_space( the_integer_tuples, 1 ) );
24782      ef_dot_prod_it    :         RETURN( make_uniform_product_space( the_integers, 1 ) );
24783      ef_sum_rt         :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24784      ef_product_rt     :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24785      ef_add_rt         :         RETURN( make_uniform_product_space( the_real_tuples, 1 ) );
24786      ef_subtract_rt    :         RETURN( make_uniform_product_space( the_real_tuples, 1 ) );
24787      ef_scalar_mult_rt :         RETURN( make_uniform_product_space( the_real_tuples, 1 ) );
24788      ef_dot_prod_rt    :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24789      ef_norm_rt        :         RETURN( make_uniform_product_space( the_reals, 1 ) );
24790      ef_sum_ct         :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24791      ef_product_ct     :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24792      ef_add_ct         :         RETURN( make_uniform_product_space( the_complex_tuples, 1 ) );
24793      ef_subtract_ct    :         RETURN( make_uniform_product_space( the_complex_tuples, 1 ) );
24794      ef_scalar_mult_ct :         RETURN( make_uniform_product_space( the_complex_tuples, 1 ) );
24795      ef_dot_prod_ct    :         RETURN( make_uniform_product_space( the_complex_numbers, 1 ) );
24796      ef_norm_ct        :         RETURN( make_uniform_product_space( the_nonnegative_reals, 1 ) );
24797      ef_if             :         RETURN( make_uniform_product_space( the_generics, 1 ) );
24798      ef_ensemble       :         RETURN( make_uniform_product_space( the_maths_spaces, 1 ) );
24799      ef_member_of      :         RETURN( make_uniform_product_space( the_logicals, 1 ) );
24800      OTHERWISE         :         RETURN( ? );
24801      END_CASE;
24802
24803  END_FUNCTION;
24804
24805  FUNCTION derive_finite_function_domain(
24806               pairs : SET [1 : ?] OF LIST [2 : 2] OF maths_value
24807           ) : tuple_space;
24808
24809    LOCAL
24810      result : SET OF maths_value := [];
24811    END_LOCAL;
24812    result := result + list_selected_components( pairs, 1 );
24813    RETURN( one_tuples_of( make_finite_space( result ) ) );
24814
24815  END_FUNCTION;
24816
24817  FUNCTION derive_finite_function_range(
24818               pairs : SET [1 : ?] OF LIST [2 : 2] OF maths_value
24819           ) : tuple_space;
24820
24821    LOCAL
24822      result : SET OF maths_value := [];
24823    END_LOCAL;
24824    result := result + list_selected_components( pairs, 2 );
24825    RETURN( one_tuples_of( make_finite_space( result ) ) );
24826
24827  END_FUNCTION;
24828
24829  FUNCTION derive_function_domain(
24830               func : maths_function
24831           ) : tuple_space;
24832
24833    LOCAL
24834      is_uniform : BOOLEAN := TRUE;
24835      factors    : LIST OF finite_integer_interval := [];
24836      shape      : LIST OF positive_integer;
24837      typenames  : SET OF STRING := stripped_typeof( func );
24838      sidxs      : LIST OF INTEGER := [0];
24839      tspace     : tuple_space := make_listed_product_space( [] );
24840      itvl       : finite_integer_interval;
24841    END_LOCAL;
24842    IF 'FINITE_FUNCTION' IN typenames THEN
24843      RETURN( derive_finite_function_domain( func\finite_function.pairs ) );
24844    END_IF;
24845    IF 'CONSTANT_FUNCTION' IN typenames THEN
24846      RETURN( domain_from( func\constant_function.source_of_domain ) );
24847    END_IF;
24848    IF 'SELECTOR_FUNCTION' IN typenames THEN
24849      RETURN( domain_from( func\selector_function.source_of_domain ) );
24850    END_IF;
24851    IF 'ELEMENTARY_FUNCTION' IN typenames THEN
24852      RETURN( derive_elementary_function_domain( func\elementary_function.func_id ) );
24853    END_IF;
24854    IF 'RESTRICTION_FUNCTION' IN typenames THEN
24855      RETURN( one_tuples_of( func\restriction_function.operand ) );
24856    END_IF;
24857    IF 'REPACKAGING_FUNCTION' IN typenames THEN
24858      IF func\repackaging_function.input_repack = ro_nochange THEN
24859        RETURN( func\repackaging_function.operand.domain );
24860      END_IF;
24861      IF func\repackaging_function.input_repack = ro_wrap_as_tuple THEN
24862        RETURN( factor1( func\repackaging_function.operand.domain ) );
24863      END_IF;
24864      IF func\repackaging_function.input_repack = ro_unwrap_tuple THEN
24865        RETURN( one_tuples_of( func\repackaging_function.operand.domain ) );
24866      END_IF;
24867      RETURN( ? );
24868    END_IF;
24869    IF 'REINDEXED_ARRAY_FUNCTION' IN typenames THEN
24870      shape := shape_of_array( func\unary_generic_expression.operand );
24871      sidxs := func\reindexed_array_function.starting_indices;
24872      REPEAT i := 1 TO SIZEOF( shape ) BY 1;
24873        itvl := make_finite_integer_interval( sidxs[i], ( sidxs[i] + shape[i] ) - 1 );
24874        INSERT( factors, itvl, i - 1 );
24875        IF shape[i] <> shape[1] THEN
24876          is_uniform := FALSE;
24877        END_IF;
24878      END_REPEAT;
24879      IF is_uniform THEN
24880        RETURN( make_uniform_product_space( factors[1], SIZEOF( shape ) ) );
24881      END_IF;
24882      RETURN( make_listed_product_space( factors ) );
24883    END_IF;
24884    IF 'SERIES_COMPOSED_FUNCTION' IN typenames THEN
24885      RETURN( func\series_composed_function.operands[1].domain );
24886    END_IF;
24887    IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
24888      RETURN( domain_from( func\parallel_composed_function.source_of_domain ) );
24889    END_IF;
24890    IF 'EXPLICIT_TABLE_FUNCTION' IN typenames THEN
24891      shape := func\explicit_table_function.shape;
24892      sidxs[1] := func\explicit_table_function.index_base;
24893      REPEAT i := 1 TO SIZEOF( shape ) BY 1;
24894        itvl := make_finite_integer_interval( sidxs[1], ( sidxs[1] + shape[i] ) - 1 );
24895        INSERT( factors, itvl, i - 1 );
24896        IF shape[i] <> shape[1] THEN
24897          is_uniform := FALSE;
24898        END_IF;
24899      END_REPEAT;
24900      IF is_uniform THEN
24901        RETURN( make_uniform_product_space( factors[1], SIZEOF( shape ) ) );
24902      END_IF;
24903      RETURN( make_listed_product_space( factors ) );
24904    END_IF;
24905    IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames THEN
24906      RETURN( one_tuples_of( make_uniform_product_space( factor1( func\homogeneous_linear_function.mat.range ), func\
24907          homogeneous_linear_function.mat\explicit_table_function.shape[func\homogeneous_linear_function.sum_index] ) ) );
24908    END_IF;
24909    IF 'GENERAL_LINEAR_FUNCTION' IN typenames THEN
24910      RETURN( one_tuples_of( make_uniform_product_space( factor1( func\general_linear_function.mat.range ), func\
24911          general_linear_function.mat\explicit_table_function.shape[func\general_linear_function.sum_index] - 1 ) ) );
24912    END_IF;
24913    IF 'B_SPLINE_BASIS' IN typenames THEN
24914      RETURN( one_tuples_of( make_finite_real_interval( func\b_spline_basis.repeated_knots[func\b_spline_basis.order], closed,
24915          func\b_spline_basis.repeated_knots[func\b_spline_basis.num_basis + 1], closed ) ) );
24916    END_IF;
24917    IF 'B_SPLINE_FUNCTION' IN typenames THEN
24918      REPEAT i := 1 TO SIZEOF( func\b_spline_function.basis ) BY 1;
24919        tspace := assoc_product_space( tspace, func\b_spline_function.basis[i].domain );
24920      END_REPEAT;
24921      RETURN( one_tuples_of( tspace ) );
24922    END_IF;
24923    IF 'RATIONALIZE_FUNCTION' IN typenames THEN
24924      RETURN( func\rationalize_function.fun.domain );
24925    END_IF;
24926    IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames THEN
24927      RETURN( func\partial_derivative_function.derivand.domain );
24928    END_IF;
24929    IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames THEN
24930      RETURN( derive_definite_integral_domain( func ) );
24931    END_IF;
24932    IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames THEN
24933      REPEAT i := 1 TO SIZEOF( func\abstracted_expression_function.variables ) BY 1;
24934        tspace := assoc_product_space( tspace, one_tuples_of( values_space_of( func\abstracted_expression_function.variables[i] ) ) );
24935      END_REPEAT;
24936      RETURN( tspace );
24937    END_IF;
24938    IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames THEN
24939      RETURN( values_space_of( func\expression_denoted_function.expr )\function_space.domain_argument );
24940    END_IF;
24941    IF 'IMPORTED_POINT_FUNCTION' IN typenames THEN
24942      RETURN( one_tuples_of( make_listed_product_space( [] ) ) );
24943    END_IF;
24944    IF 'IMPORTED_CURVE_FUNCTION' IN typenames THEN
24945      RETURN( func\imported_curve_function.parametric_domain );
24946    END_IF;
24947    IF 'IMPORTED_SURFACE_FUNCTION' IN typenames THEN
24948      RETURN( func\imported_surface_function.parametric_domain );
24949    END_IF;
24950    IF 'IMPORTED_VOLUME_FUNCTION' IN typenames THEN
24951      RETURN( func\imported_volume_function.parametric_domain );
24952    END_IF;
24953    IF 'APPLICATION_DEFINED_FUNCTION' IN typenames THEN
24954      RETURN( func\application_defined_function.explicit_domain );
24955    END_IF;
24956    RETURN( ? );
24957
24958  END_FUNCTION;
24959
24960  FUNCTION derive_function_range(
24961               func : maths_function
24962           ) : tuple_space;
24963
24964    LOCAL
24965      temp      : INTEGER := 0;
24966      typenames : SET OF STRING := stripped_typeof( func );
24967      m         : nonnegative_integer := 0;
24968      n         : nonnegative_integer := 0;
24969      tspace    : tuple_space := make_listed_product_space( [] );
24970    END_LOCAL;
24971    IF 'FINITE_FUNCTION' IN typenames THEN
24972      RETURN( derive_finite_function_range( func\finite_function.pairs ) );
24973    END_IF;
24974    IF 'CONSTANT_FUNCTION' IN typenames THEN
24975      RETURN( one_tuples_of( make_finite_space( [func\constant_function.sole_output] ) ) );
24976    END_IF;
24977    IF 'SELECTOR_FUNCTION' IN typenames THEN
24978      tspace := func.domain;
24979      IF ( space_dimension( tspace ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( tspace ) ) THEN
24980        tspace := factor1( tspace );
24981      END_IF;
24982      RETURN( one_tuples_of( factor_space( tspace, func\selector_function.selector ) ) );
24983    END_IF;
24984    IF 'ELEMENTARY_FUNCTION' IN typenames THEN
24985      RETURN( derive_elementary_function_range( func\elementary_function.func_id ) );
24986    END_IF;
24987    IF 'RESTRICTION_FUNCTION' IN typenames THEN
24988      RETURN( one_tuples_of( func\restriction_function.operand ) );
24989    END_IF;
24990    IF 'REPACKAGING_FUNCTION' IN typenames THEN
24991      tspace := func\repackaging_function.operand.range;
24992      IF func\repackaging_function.output_repack = ro_wrap_as_tuple THEN
24993        tspace := one_tuples_of( tspace );
24994      END_IF;
24995      IF func\repackaging_function.output_repack = ro_unwrap_tuple THEN
24996        tspace := factor1( tspace );
24997      END_IF;
24998      IF func\repackaging_function.selected_output > 0 THEN
24999        tspace := one_tuples_of( factor_space( tspace, func\repackaging_function.selected_output ) );
25000      END_IF;
25001      RETURN( tspace );
25002    END_IF;
25003    IF 'REINDEXED_ARRAY_FUNCTION' IN typenames THEN
25004      RETURN( func\unary_generic_expression.operand\maths_function.range );
25005    END_IF;
25006    IF 'SERIES_COMPOSED_FUNCTION' IN typenames THEN
25007      RETURN( func\series_composed_function.operands[SIZEOF( func\series_composed_function.operands )].range );
25008    END_IF;
25009    IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
25010      RETURN( func\parallel_composed_function.final_function.range );
25011    END_IF;
25012    IF 'EXPLICIT_TABLE_FUNCTION' IN typenames THEN
25013      IF 'LISTED_REAL_DATA' IN typenames THEN
25014        RETURN( one_tuples_of( the_reals ) );
25015      END_IF;
25016      IF 'LISTED_INTEGER_DATA' IN typenames THEN
25017        RETURN( one_tuples_of( the_integers ) );
25018      END_IF;
25019      IF 'LISTED_LOGICAL_DATA' IN typenames THEN
25020        RETURN( one_tuples_of( the_logicals ) );
25021      END_IF;
25022      IF 'LISTED_STRING_DATA' IN typenames THEN
25023        RETURN( one_tuples_of( the_strings ) );
25024      END_IF;
25025      IF 'LISTED_COMPLEX_NUMBER_DATA' IN typenames THEN
25026        RETURN( one_tuples_of( the_complex_numbers ) );
25027      END_IF;
25028      IF 'LISTED_DATA' IN typenames THEN
25029        RETURN( one_tuples_of( func\listed_data.value_range ) );
25030      END_IF;
25031      IF 'EXTERNALLY_LISTED_DATA' IN typenames THEN
25032        RETURN( one_tuples_of( func\externally_listed_data.value_range ) );
25033      END_IF;
25034      IF 'LINEARIZED_TABLE_FUNCTION' IN typenames THEN
25035        RETURN( func\linearized_table_function.source.range );
25036      END_IF;
25037      IF 'BASIC_SPARSE_MATRIX' IN typenames THEN
25038        RETURN( func\basic_sparse_matrix.val.range );
25039      END_IF;
25040      RETURN( ? );
25041    END_IF;
25042    IF 'HOMOGENEOUS_LINEAR_FUNCTION' IN typenames THEN
25043      RETURN( one_tuples_of( make_uniform_product_space( factor1( func\homogeneous_linear_function.mat.range ), func\
25044          homogeneous_linear_function.mat\explicit_table_function.shape[3 - func\homogeneous_linear_function.sum_index] ) ) );
25045    END_IF;
25046    IF 'GENERAL_LINEAR_FUNCTION' IN typenames THEN
25047      RETURN( one_tuples_of( make_uniform_product_space( factor1( func\general_linear_function.mat.range ), func\
25048          general_linear_function.mat\explicit_table_function.shape[3 - func\general_linear_function.sum_index] ) ) );
25049    END_IF;
25050    IF 'B_SPLINE_BASIS' IN typenames THEN
25051      RETURN( one_tuples_of( make_uniform_product_space( the_reals, func\b_spline_basis.num_basis ) ) );
25052    END_IF;
25053    IF 'B_SPLINE_FUNCTION' IN typenames THEN
25054      tspace := factor1( func\b_spline_function.coef.domain );
25055      m := SIZEOF( func\b_spline_function.basis );
25056      n := space_dimension( tspace );
25057      IF m = n THEN
25058        RETURN( one_tuples_of( the_reals ) );
25059      END_IF;
25060      IF m = ( n - 1 ) THEN
25061        RETURN( one_tuples_of( make_uniform_product_space( the_reals, factor_space( tspace, n )\finite_integer_interval.size ) ) );
25062      END_IF;
25063      tspace := extract_factors( tspace, m + 1, n );
25064      RETURN( one_tuples_of( make_function_space( sc_equal, tspace, sc_subspace, number_superspace_of( func\b_spline_function.
25065          coef.range ) ) ) );
25066    END_IF;
25067    IF 'RATIONALIZE_FUNCTION' IN typenames THEN
25068      tspace := factor1( func\rationalize_function.fun.range );
25069      n := space_dimension( tspace );
25070      RETURN( one_tuples_of( make_uniform_product_space( number_superspace_of( factor1( tspace ) ), n - 1 ) ) );
25071    END_IF;
25072    IF 'PARTIAL_DERIVATIVE_FUNCTION' IN typenames THEN
25073      RETURN( drop_numeric_constraints( func\partial_derivative_function.derivand.range ) );
25074    END_IF;
25075    IF 'DEFINITE_INTEGRAL_FUNCTION' IN typenames THEN
25076      RETURN( drop_numeric_constraints( func\definite_integral_function.integrand.range ) );
25077    END_IF;
25078    IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN typenames THEN
25079      RETURN( one_tuples_of( values_space_of( func\abstracted_expression_function.expr ) ) );
25080    END_IF;
25081    IF 'EXPRESSION_DENOTED_FUNCTION' IN typenames THEN
25082      RETURN( values_space_of( func\expression_denoted_function.expr )\function_space.range_argument );
25083    END_IF;
25084    IF 'IMPORTED_POINT_FUNCTION' IN typenames THEN
25085      temp := dimension_of( func\imported_point_function.geometry );
25086      RETURN( one_tuples_of( make_uniform_product_space( the_reals, temp ) ) );
25087    END_IF;
25088    IF 'IMPORTED_CURVE_FUNCTION' IN typenames THEN
25089      temp := dimension_of( func\imported_curve_function.geometry );
25090      RETURN( one_tuples_of( make_uniform_product_space( the_reals, temp ) ) );
25091    END_IF;
25092    IF 'IMPORTED_SURFACE_FUNCTION' IN typenames THEN
25093      temp := dimension_of( func\imported_surface_function.geometry );
25094      RETURN( one_tuples_of( make_uniform_product_space( the_reals, temp ) ) );
25095    END_IF;
25096    IF 'IMPORTED_VOLUME_FUNCTION' IN typenames THEN
25097      temp := dimension_of( func\imported_volume_function.geometry );
25098      RETURN( one_tuples_of( make_uniform_product_space( the_reals, temp ) ) );
25099    END_IF;
25100    IF 'APPLICATION_DEFINED_FUNCTION' IN typenames THEN
25101      RETURN( func\application_defined_function.explicit_range );
25102    END_IF;
25103    RETURN( ? );
25104
25105  END_FUNCTION;
25106
25107  FUNCTION dimension_of(
25108               item : geometric_representation_item
25109           ) : dimension_count;
25110
25111    LOCAL
25112      x   : SET OF representation;
25113      y   : representation_context;
25114      dim : dimension_count;
25115    END_LOCAL;
25116    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( item ) THEN
25117      dim := SIZEOF( item\cartesian_point.coordinates );
25118      RETURN( dim );
25119    END_IF;
25120    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIRECTION' IN TYPEOF( item ) THEN
25121      dim := SIZEOF( item\direction.direction_ratios );
25122      RETURN( dim );
25123    END_IF;
25124    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF( item ) THEN
25125      dim := SIZEOF( item\vector.orientation\direction.direction_ratios );
25126      RETURN( dim );
25127    END_IF;
25128    x := using_representations( item );
25129    IF SIZEOF( x ) > 0 THEN
25130      y := x[1].context_of_items;
25131      dim := y\geometric_representation_context.coordinate_space_dimension;
25132      RETURN( dim );
25133    ELSE
25134      RETURN( ? );
25135    END_IF;
25136
25137  END_FUNCTION;
25138
25139  FUNCTION dimensions_for_si_unit(
25140               n : si_unit_name
25141           ) : dimensional_exponents;
25142    CASE n OF
25143      metre         :         RETURN( dimensional_exponents( 1, 0, 0, 0, 0, 0, 0 ) );
25144      gram          :         RETURN( dimensional_exponents( 0, 1, 0, 0, 0, 0, 0 ) );
25145      second        :         RETURN( dimensional_exponents( 0, 0, 1, 0, 0, 0, 0 ) );
25146      ampere        :         RETURN( dimensional_exponents( 0, 0, 0, 1, 0, 0, 0 ) );
25147      kelvin        :         RETURN( dimensional_exponents( 0, 0, 0, 0, 1, 0, 0 ) );
25148      mole          :         RETURN( dimensional_exponents( 0, 0, 0, 0, 0, 1, 0 ) );
25149      candela       :         RETURN( dimensional_exponents( 0, 0, 0, 0, 0, 0, 1 ) );
25150      radian        :         RETURN( dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 ) );
25151      steradian     :         RETURN( dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 ) );
25152      hertz         :         RETURN( dimensional_exponents( 0, 0, -1, 0, 0, 0, 0 ) );
25153      newton        :         RETURN( dimensional_exponents( 1, 1, -2, 0, 0, 0, 0 ) );
25154      pascal        :         RETURN( dimensional_exponents( -1, 1, -2, 0, 0, 0, 0 ) );
25155      joule         :         RETURN( dimensional_exponents( 2, 1, -2, 0, 0, 0, 0 ) );
25156      watt          :         RETURN( dimensional_exponents( 2, 1, -3, 0, 0, 0, 0 ) );
25157      coulomb       :         RETURN( dimensional_exponents( 0, 0, 1, 1, 0, 0, 0 ) );
25158      volt          :         RETURN( dimensional_exponents( 2, 1, -3, -1, 0, 0, 0 ) );
25159      farad         :         RETURN( dimensional_exponents( -2, -1, 4, 2, 0, 0, 0 ) );
25160      ohm           :         RETURN( dimensional_exponents( 2, 1, -3, -2, 0, 0, 0 ) );
25161      siemens       :         RETURN( dimensional_exponents( -2, -1, 3, 2, 0, 0, 0 ) );
25162      weber         :         RETURN( dimensional_exponents( 2, 1, -2, -1, 0, 0, 0 ) );
25163      tesla         :         RETURN( dimensional_exponents( 0, 1, -2, -1, 0, 0, 0 ) );
25164      henry         :         RETURN( dimensional_exponents( 2, 1, -2, -2, 0, 0, 0 ) );
25165      degree_celsius :         RETURN( dimensional_exponents( 0, 0, 0, 0, 1, 0, 0 ) );
25166      lumen         :         RETURN( dimensional_exponents( 0, 0, 0, 0, 0, 0, 1 ) );
25167      lux           :         RETURN( dimensional_exponents( -2, 0, 0, 0, 0, 0, 1 ) );
25168      becquerel     :         RETURN( dimensional_exponents( 0, 0, -1, 0, 0, 0, 0 ) );
25169      gray          :         RETURN( dimensional_exponents( 2, 0, -2, 0, 0, 0, 0 ) );
25170      sievert       :         RETURN( dimensional_exponents( 2, 0, -2, 0, 0, 0, 0 ) );
25171      OTHERWISE     :         RETURN( ? );
25172      END_CASE;
25173
25174  END_FUNCTION;
25175
25176  FUNCTION domain_from(
25177               ref : maths_space_or_function
25178           ) : tuple_space;
25179
25180    LOCAL
25181      typenames : SET OF STRING := stripped_typeof( ref );
25182      func      : maths_function;
25183    END_LOCAL;
25184    IF NOT EXISTS( ref ) THEN
25185      RETURN( ? );
25186    END_IF;
25187    IF 'TUPLE_SPACE' IN typenames THEN
25188      RETURN( ref );
25189    END_IF;
25190    IF 'MATHS_SPACE' IN typenames THEN
25191      RETURN( one_tuples_of( ref ) );
25192    END_IF;
25193    func := ref;
25194    IF 'CONSTANT_FUNCTION' IN typenames THEN
25195      RETURN( domain_from( func\constant_function.source_of_domain ) );
25196    END_IF;
25197    IF 'SELECTOR_FUNCTION' IN typenames THEN
25198      RETURN( domain_from( func\selector_function.source_of_domain ) );
25199    END_IF;
25200    IF 'PARALLEL_COMPOSED_FUNCTION' IN typenames THEN
25201      RETURN( domain_from( func\parallel_composed_function.source_of_domain ) );
25202    END_IF;
25203    RETURN( func.domain );
25204
25205  END_FUNCTION;
25206
25207  FUNCTION dot_product(
25208               arg1, arg2 : direction
25209           ) : REAL;
25210
25211    LOCAL
25212      ndim   : INTEGER;
25213      scalar : REAL;
25214      vec1   : direction;
25215      vec2   : direction;
25216    END_LOCAL;
25217    IF ( NOT EXISTS( arg1 ) ) OR ( NOT EXISTS( arg2 ) ) THEN
25218      scalar := ?;
25219    ELSE
25220      IF arg1.dim <> arg2.dim THEN
25221        scalar := ?;
25222      ELSE
25223
25224        BEGIN
25225          vec1 := normalise( arg1 );
25226          vec2 := normalise( arg2 );
25227          ndim := arg1.dim;
25228          scalar := 0;
25229          REPEAT i := 1 TO ndim BY 1;
25230            scalar := scalar + ( vec1.direction_ratios[i] * vec2.direction_ratios[i] );
25231          END_REPEAT;
25232        END;
25233      END_IF;
25234    END_IF;
25235    RETURN( scalar );
25236
25237  END_FUNCTION;
25238
25239  FUNCTION drop_numeric_constraints(
25240               spc : maths_space
25241           ) : maths_space;
25242
25243    LOCAL
25244      factors   : LIST OF maths_space := [];
25245      typenames : SET OF STRING := stripped_typeof( spc );
25246      xspc      : extended_tuple_space;
25247      tspc      : listed_product_space;
25248    END_LOCAL;
25249    IF 'UNIFORM_PRODUCT_SPACE' IN typenames THEN
25250      RETURN( make_uniform_product_space( drop_numeric_constraints( spc\uniform_product_space.base ), spc\uniform_product_space.
25251          exponent ) );
25252    END_IF;
25253    IF 'LISTED_PRODUCT_SPACE' IN typenames THEN
25254      tspc := spc;
25255      REPEAT i := 1 TO SIZEOF( tspc.factors ) BY 1;
25256        INSERT( factors, drop_numeric_constraints( tspc.factors[i] ), i - 1 );
25257      END_REPEAT;
25258      RETURN( make_listed_product_space( factors ) );
25259    END_IF;
25260    IF 'EXTENDED_TUPLE_SPACE' IN typenames THEN
25261      xspc := spc;
25262      RETURN( make_extended_tuple_space( drop_numeric_constraints( xspc.base ), drop_numeric_constraints( xspc.extender ) ) );
25263    END_IF;
25264    IF subspace_of_es( spc, es_numbers ) THEN
25265      RETURN( number_superspace_of( spc ) );
25266    END_IF;
25267    RETURN( spc );
25268
25269  END_FUNCTION;
25270
25271  FUNCTION edge_reversed(
25272               an_edge : edge
25273           ) : oriented_edge;
25274
25275    LOCAL
25276      the_reverse : oriented_edge;
25277    END_LOCAL;
25278    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_EDGE' IN TYPEOF( an_edge ) THEN
25279      the_reverse := dummy_tri || edge( an_edge.edge_end, an_edge.edge_start ) || oriented_edge( an_edge\oriented_edge.
25280          edge_element, NOT an_edge\oriented_edge.orientation );
25281    ELSE
25282      the_reverse := dummy_tri || edge( an_edge.edge_end, an_edge.edge_start ) || oriented_edge( an_edge, FALSE );
25283    END_IF;
25284    RETURN( the_reverse );
25285
25286  END_FUNCTION;
25287
25288  FUNCTION enclose_cregion_in_pregion(
25289               crgn : cartesian_complex_number_region;
25290               centre : complex_number_literal
25291           ) : polar_complex_number_region;
25292
25293    FUNCTION angle(
25294                 a : REAL
25295             ) : REAL;
25296      REPEAT WHILE a > PI;
25297        a := a - ( 2 * PI );
25298      END_REPEAT;
25299      REPEAT WHILE a <= ( -PI );
25300        a := a + ( 2 * PI );
25301      END_REPEAT;
25302      RETURN( a );
25303
25304    END_FUNCTION;
25305
25306    FUNCTION strictly_in(
25307                 z : REAL;
25308                 zitv : real_interval
25309             ) : LOGICAL;
25310      RETURN( ( ( NOT min_exists( zitv ) ) OR ( z > real_min( zitv ) ) ) AND ( ( NOT max_exists( zitv ) ) OR ( z < real_max( zitv ) ) ) );
25311
25312    END_FUNCTION;
25313
25314    PROCEDURE angle_minmax(
25315                  ab, a : REAL;
25316                  a_in : BOOLEAN;
25317                  amin, amax : REAL;
25318                  amin_in, amax_in : BOOLEAN      );
25319      a := angle( a - ab );
25320      IF amin = a THEN
25321        amin_in := amin_in OR a_in;
25322      END_IF;
25323      IF amin > a THEN
25324        amin := a;
25325        amin_in := a_in;
25326      END_IF;
25327      IF amax = a THEN
25328        amax_in := amax_in OR a_in;
25329      END_IF;
25330      IF amax < a THEN
25331        amax := a;
25332        amax_in := a_in;
25333      END_IF;
25334
25335    END_PROCEDURE;
25336
25337    PROCEDURE range_max(
25338                  r : REAL;
25339                  incl : BOOLEAN;
25340                  rmax : REAL;
25341                  rmax_in : BOOLEAN      );
25342      IF rmax = r THEN
25343        rmax_in := rmax_in OR incl;
25344      END_IF;
25345      IF rmax < r THEN
25346        rmax := r;
25347        rmax_in := incl;
25348      END_IF;
25349
25350    END_PROCEDURE;
25351
25352    PROCEDURE range_min(
25353                  r : REAL;
25354                  incl : BOOLEAN;
25355                  rmin : REAL;
25356                  rmin_in : BOOLEAN      );
25357      IF rmin = r THEN
25358        rmin_in := rmin_in OR incl;
25359      END_IF;
25360      IF ( rmin < 0 ) OR ( rmin > r ) THEN
25361        rmin := r;
25362        rmin_in := incl;
25363      END_IF;
25364
25365    END_PROCEDURE;
25366
25367    LOCAL
25368      ritv        : real_interval;
25369      is_xmin     : BOOLEAN;
25370      ab          : REAL := 0;
25371      rmax        : REAL := -1;
25372      ymin        : REAL := 0;
25373      a           : REAL := 0;
25374      r           : REAL := 0;
25375      aitv        : finite_real_interval;
25376      rmin_in     : BOOLEAN := FALSE;
25377      xmax        : REAL := 0;
25378      is_xmax     : BOOLEAN;
25379      xmax_in     : BOOLEAN := FALSE;
25380      maxclo      : open_closed := open;
25381      amax        : REAL := -4;
25382      yitv        : real_interval;
25383      ymax        : REAL := 0;
25384      xmin_in     : BOOLEAN := FALSE;
25385      yc          : REAL := 0;
25386      ymax_in     : BOOLEAN := FALSE;
25387      is_ymin     : BOOLEAN;
25388      is_ymax     : BOOLEAN;
25389      rmax_exists : BOOLEAN := TRUE;
25390      rmax_in     : BOOLEAN := FALSE;
25391      incl        : BOOLEAN;
25392      ymin_in     : BOOLEAN := FALSE;
25393      outside     : BOOLEAN := TRUE;
25394      xmin        : REAL := 0;
25395      minclo      : open_closed := open;
25396      amin        : REAL := 4;
25397      xitv        : real_interval;
25398      amin_in     : BOOLEAN := FALSE;
25399      amax_in     : BOOLEAN := FALSE;
25400      rmin        : REAL := -1;
25401      xc          : REAL := 0;
25402    END_LOCAL;
25403    IF ( NOT EXISTS( crgn ) ) OR ( NOT EXISTS( centre ) ) THEN
25404      RETURN( ? );
25405    END_IF;
25406    xitv := crgn.real_constraint;
25407    yitv := crgn.imag_constraint;
25408    xc := centre.real_part;
25409    yc := centre.imag_part;
25410    is_xmin := min_exists( xitv );
25411    is_xmax := max_exists( xitv );
25412    is_ymin := min_exists( yitv );
25413    is_ymax := max_exists( yitv );
25414    IF is_xmin THEN
25415      xmin := real_min( xitv );
25416      xmin_in := min_included( xitv );
25417    END_IF;
25418    IF is_xmax THEN
25419      xmax := real_max( xitv );
25420      xmax_in := max_included( xitv );
25421    END_IF;
25422    IF is_ymin THEN
25423      ymin := real_min( yitv );
25424      ymin_in := min_included( yitv );
25425    END_IF;
25426    IF is_ymax THEN
25427      ymax := real_max( yitv );
25428      ymax_in := max_included( yitv );
25429    END_IF;
25430    rmax_exists := is_xmin AND is_xmax AND is_ymin AND is_ymax;
25431    IF is_xmin AND ( xc <= xmin ) THEN
25432      ab := 0;
25433    ELSE
25434      IF is_ymin AND ( yc <= ymin ) THEN
25435        ab := 0.5 * PI;
25436      ELSE
25437        IF is_ymax AND ( yc >= ymax ) THEN
25438          ab := ( -0.5 ) * PI;
25439        ELSE
25440          IF is_xmax AND ( xc >= xmax ) THEN
25441            ab := PI;
25442          ELSE
25443            outside := FALSE;
25444          END_IF;
25445        END_IF;
25446      END_IF;
25447    END_IF;
25448    IF ( NOT outside ) AND ( NOT rmax_exists ) THEN
25449      RETURN( ? );
25450    END_IF;
25451    IF is_xmin AND ( xc <= xmin ) AND strictly_in( yc, yitv ) THEN
25452      rmin := xmin - xc;
25453      rmin_in := xmin_in;
25454    ELSE
25455      IF is_ymin AND ( yc <= ymin ) AND strictly_in( xc, xitv ) THEN
25456        rmin := ymin - yc;
25457        rmin_in := ymin_in;
25458      ELSE
25459        IF is_ymax AND ( yc >= ymax ) AND strictly_in( xc, xitv ) THEN
25460          rmin := yc - ymax;
25461          rmin_in := ymax_in;
25462        ELSE
25463          IF is_xmax AND ( xc >= xmax ) AND strictly_in( yc, yitv ) THEN
25464            rmin := xc - xmax;
25465            rmin_in := xmax_in;
25466          END_IF;
25467        END_IF;
25468      END_IF;
25469    END_IF;
25470    IF is_xmin THEN
25471      IF is_ymin THEN
25472        r := SQRT( ( ( xmin - xc ) ** 2 ) + ( ( ymin - yc ) ** 2 ) );
25473        incl := xmin_in AND ymin_in;
25474        IF rmax_exists THEN
25475          range_max( r, incl, rmax, rmax_in );
25476        END_IF;
25477        IF outside THEN
25478          IF r > 0 THEN
25479            range_min( r, incl, rmin, rmin_in );
25480            a := angle( atan2( ymin - yc, xmin - xc ) - ab );
25481            IF xc = xmin THEN
25482              incl := xmin_in;
25483            END_IF;
25484            IF yc = ymin THEN
25485              incl := ymin_in;
25486            END_IF;
25487            angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
25488          ELSE
25489            rmin := 0;
25490            rmin_in := xmin_in AND ymin_in;
25491            amin := angle( 0 - ab );
25492            amin_in := ymin_in;
25493            amax := angle( ( 0.5 * PI ) - ab );
25494            amax_in := xmin_in;
25495          END_IF;
25496        END_IF;
25497      ELSE
25498        IF xc <= xmin THEN
25499          angle_minmax( ab, ( -0.5 ) * PI, ( xc = xmin ) AND xmin_in, amin, amax, amin_in, amax_in );
25500        END_IF;
25501      END_IF;
25502      IF ( NOT is_ymax ) AND ( xc <= xmin ) THEN
25503        angle_minmax( ab, 0.5 * PI, ( xc = xmin ) AND xmin_in, amin, amax, amin_in, amax_in );
25504      END_IF;
25505    END_IF;
25506    IF is_ymin THEN
25507      IF is_xmax THEN
25508        r := SQRT( ( ( xmax - xc ) ** 2 ) + ( ( ymin - yc ) ** 2 ) );
25509        incl := xmax_in AND ymin_in;
25510        IF rmax_exists THEN
25511          range_max( r, incl, rmax, rmax_in );
25512        END_IF;
25513        IF outside THEN
25514          IF r > 0 THEN
25515            range_min( r, incl, rmin, rmin_in );
25516            a := angle( atan2( ymin - yc, xmax - xc ) - ab );
25517            IF xc = xmax THEN
25518              incl := xmax_in;
25519            END_IF;
25520            IF yc = ymin THEN
25521              incl := ymin_in;
25522            END_IF;
25523            angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
25524          ELSE
25525            rmin := 0;
25526            rmin_in := xmax_in AND ymin_in;
25527            amin := angle( ( 0.5 * PI ) - ab );
25528            amin_in := ymin_in;
25529            amax := angle( PI - ab );
25530            amax_in := xmax_in;
25531          END_IF;
25532        END_IF;
25533      ELSE
25534        IF yc <= ymin THEN
25535          angle_minmax( ab, 0, ( yc = ymin ) AND ymin_in, amin, amax, amin_in, amax_in );
25536        END_IF;
25537      END_IF;
25538      IF ( NOT is_xmin ) AND ( yc <= ymin ) THEN
25539        angle_minmax( ab, PI, ( yc = ymin ) AND ymin_in, amin, amax, amin_in, amax_in );
25540      END_IF;
25541    END_IF;
25542    IF is_xmax THEN
25543      IF is_ymax THEN
25544        r := SQRT( ( ( xmax - xc ) ** 2 ) + ( ( ymax - yc ) ** 2 ) );
25545        incl := xmax_in AND ymax_in;
25546        IF rmax_exists THEN
25547          range_max( r, incl, rmax, rmax_in );
25548        END_IF;
25549        IF outside THEN
25550          IF r > 0 THEN
25551            range_min( r, incl, rmin, rmin_in );
25552            a := angle( atan2( ymax - yc, xmax - xc ) - ab );
25553            IF xc = xmax THEN
25554              incl := xmax_in;
25555            END_IF;
25556            IF yc = ymax THEN
25557              incl := ymax_in;
25558            END_IF;
25559            angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
25560          ELSE
25561            rmin := 0;
25562            rmin_in := xmax_in AND ymax_in;
25563            amin := angle( ( -PI ) - ab );
25564            amin_in := ymax_in;
25565            amax := angle( ( ( -0.5 ) * PI ) - ab );
25566            amax_in := xmax_in;
25567          END_IF;
25568        END_IF;
25569      ELSE
25570        IF xc >= xmax THEN
25571          angle_minmax( ab, 0.5 * PI, ( xc = xmax ) AND xmax_in, amin, amax, amin_in, amax_in );
25572        END_IF;
25573      END_IF;
25574      IF ( NOT is_ymin ) AND ( xc >= xmax ) THEN
25575        angle_minmax( ab, ( -0.5 ) * PI, ( xc = xmax ) AND xmax_in, amin, amax, amin_in, amax_in );
25576      END_IF;
25577    END_IF;
25578    IF is_ymax THEN
25579      IF is_xmin THEN
25580        r := SQRT( ( ( xmin - xc ) ** 2 ) + ( ( ymax - yc ) ** 2 ) );
25581        incl := xmin_in AND ymax_in;
25582        IF rmax_exists THEN
25583          range_max( r, incl, rmax, rmax_in );
25584        END_IF;
25585        IF outside THEN
25586          IF r > 0 THEN
25587            range_min( r, incl, rmin, rmin_in );
25588            a := angle( atan2( ymax - yc, xmin - xc ) - ab );
25589            IF xc = xmin THEN
25590              incl := xmin_in;
25591            END_IF;
25592            IF yc = ymax THEN
25593              incl := ymax_in;
25594            END_IF;
25595            angle_minmax( ab, a, incl, amin, amax, amin_in, amax_in );
25596          ELSE
25597            rmin := 0;
25598            rmin_in := xmin_in AND ymax_in;
25599            amin := angle( ( 0.5 * PI ) - ab );
25600            amin_in := ymax_in;
25601            amax := angle( PI - ab );
25602            amax_in := xmin_in;
25603          END_IF;
25604        END_IF;
25605      ELSE
25606        IF yc >= ymax THEN
25607          angle_minmax( ab, PI, ( yc = ymax ) AND ymax_in, amin, amax, amin_in, amax_in );
25608        END_IF;
25609      END_IF;
25610      IF ( NOT is_xmax ) AND ( yc >= ymax ) THEN
25611        angle_minmax( ab, 0, ( yc = ymax ) AND ymax_in, amin, amax, amin_in, amax_in );
25612      END_IF;
25613    END_IF;
25614    IF outside THEN
25615      amin := angle( amin + ab );
25616      IF amin = PI THEN
25617        amin := -PI;
25618      END_IF;
25619      amax := angle( amax + ab );
25620      IF amax <= amin THEN
25621        amax := amax + ( 2 * PI );
25622      END_IF;
25623    ELSE
25624      amin := -PI;
25625      amin_in := FALSE;
25626      amax := PI;
25627      amax_in := FALSE;
25628    END_IF;
25629    IF amin_in THEN
25630      minclo := closed;
25631    END_IF;
25632    IF amax_in THEN
25633      maxclo := closed;
25634    END_IF;
25635    aitv := make_finite_real_interval( amin, minclo, amax, maxclo );
25636    minclo := open;
25637    IF rmin_in THEN
25638      minclo := closed;
25639    END_IF;
25640    IF rmax_exists THEN
25641      maxclo := open;
25642      IF rmax_in THEN
25643        maxclo := closed;
25644      END_IF;
25645      ritv := make_finite_real_interval( rmin, minclo, rmax, maxclo );
25646    ELSE
25647      ritv := make_real_interval_from_min( rmin, minclo );
25648    END_IF;
25649    RETURN( make_polar_complex_number_region( centre, ritv, aitv ) );
25650
25651  END_FUNCTION;
25652
25653  FUNCTION enclose_pregion_in_cregion(
25654               prgn : polar_complex_number_region
25655           ) : cartesian_complex_number_region;
25656
25657    PROCEDURE nearest_good_direction(
25658                  acart : REAL;
25659                  aitv : finite_real_interval;
25660                  a : REAL;
25661                  a_in : BOOLEAN      );
25662      a := acart;
25663      a_in := TRUE;
25664      IF a < aitv.min THEN
25665        IF ( a + ( 2 * PI ) ) < aitv.max THEN
25666          RETURN;
25667        END_IF;
25668        IF ( a + ( 2 * PI ) ) = aitv.max THEN
25669          a_in := max_included( aitv );
25670          RETURN;
25671        END_IF;
25672      ELSE
25673        IF a = aitv.min THEN
25674          a_in := min_included( aitv );
25675          RETURN;
25676        ELSE
25677          IF a < aitv.max THEN
25678            RETURN;
25679          ELSE
25680            IF a = aitv.max THEN
25681              a_in := max_included( aitv );
25682              RETURN;
25683            END_IF;
25684          END_IF;
25685        END_IF;
25686      END_IF;
25687      IF COS( acart - aitv.max ) >= COS( acart - aitv.min ) THEN
25688        a := aitv.max;
25689        a_in := max_included( aitv );
25690      ELSE
25691        a := aitv.min;
25692        a_in := min_included( aitv );
25693      END_IF;
25694
25695    END_PROCEDURE;
25696
25697    LOCAL
25698      ritv        : real_interval;
25699      ymin        : REAL := 0;
25700      a           : REAL := 0;
25701      ymax_exists : BOOLEAN;
25702      r           : REAL := 0;
25703      aitv        : finite_real_interval;
25704      xmax        : REAL := 0;
25705      xmax_in     : BOOLEAN := FALSE;
25706      a_in        : BOOLEAN := FALSE;
25707      yitv        : real_interval;
25708      ymax        : REAL := 0;
25709      xmax_exists : BOOLEAN;
25710      xmin_in     : BOOLEAN := FALSE;
25711      ymin_exists : BOOLEAN;
25712      yc          : REAL := 0;
25713      ymax_in     : BOOLEAN := FALSE;
25714      min_clo     : open_closed := open;
25715      xmin_exists : BOOLEAN;
25716      ymin_in     : BOOLEAN := FALSE;
25717      xmin        : REAL := 0;
25718      max_clo     : open_closed := open;
25719      xitv        : real_interval;
25720      xc          : REAL := 0;
25721    END_LOCAL;
25722    IF NOT EXISTS( prgn ) THEN
25723      RETURN( ? );
25724    END_IF;
25725    xc := prgn.centre.real_part;
25726    yc := prgn.centre.imag_part;
25727    ritv := prgn.distance_constraint;
25728    aitv := prgn.direction_constraint;
25729    nearest_good_direction( PI, aitv, a, a_in );
25730    IF COS( a ) >= 0 THEN
25731      xmin_exists := TRUE;
25732      xmin := xc + ( real_min( ritv ) * COS( a ) );
25733      xmin_in := a_in AND ( min_included( ritv ) OR ( COS( a ) = 0 ) );
25734    ELSE
25735      IF max_exists( ritv ) THEN
25736        xmin_exists := TRUE;
25737        xmin := xc + ( real_max( ritv ) * COS( a ) );
25738        xmin_in := a_in AND max_included( ritv );
25739      ELSE
25740        xmin_exists := FALSE;
25741      END_IF;
25742    END_IF;
25743    nearest_good_direction( 0, aitv, a, a_in );
25744    IF COS( a ) <= 0 THEN
25745      xmax_exists := TRUE;
25746      xmax := xc + ( real_min( ritv ) * COS( a ) );
25747      xmax_in := a_in AND ( min_included( ritv ) OR ( COS( a ) = 0 ) );
25748    ELSE
25749      IF max_exists( ritv ) THEN
25750        xmax_exists := TRUE;
25751        xmax := xc + ( real_max( ritv ) * COS( a ) );
25752        xmax_in := a_in AND max_included( ritv );
25753      ELSE
25754        xmax_exists := FALSE;
25755      END_IF;
25756    END_IF;
25757    nearest_good_direction( ( -0.5 ) * PI, aitv, a, a_in );
25758    IF SIN( a ) >= 0 THEN
25759      ymin_exists := TRUE;
25760      ymin := yc + ( real_min( ritv ) * SIN( a ) );
25761      ymin_in := a_in AND ( min_included( ritv ) OR ( SIN( a ) = 0 ) );
25762    ELSE
25763      IF max_exists( ritv ) THEN
25764        ymin_exists := TRUE;
25765        ymin := yc + ( real_max( ritv ) * SIN( a ) );
25766        ymin_in := a_in AND max_included( ritv );
25767      ELSE
25768        ymin_exists := FALSE;
25769      END_IF;
25770    END_IF;
25771    nearest_good_direction( 0.5 * PI, aitv, a, a_in );
25772    IF SIN( a ) <= 0 THEN
25773      ymax_exists := TRUE;
25774      ymax := yc + ( real_min( ritv ) * SIN( a ) );
25775      ymax_in := a_in AND ( min_included( ritv ) OR ( SIN( a ) = 0 ) );
25776    ELSE
25777      IF max_exists( ritv ) THEN
25778        ymax_exists := TRUE;
25779        ymax := yc + ( real_max( ritv ) * SIN( a ) );
25780        ymax_in := a_in AND max_included( ritv );
25781      ELSE
25782        ymax_exists := FALSE;
25783      END_IF;
25784    END_IF;
25785    IF NOT ( xmin_exists OR xmax_exists OR ymin_exists OR ymax_exists ) THEN
25786      RETURN( ? );
25787    END_IF;
25788    IF xmin_exists THEN
25789      IF xmin_in THEN
25790        min_clo := closed;
25791      ELSE
25792        min_clo := open;
25793      END_IF;
25794      IF xmax_exists THEN
25795        IF xmax_in THEN
25796          max_clo := closed;
25797        ELSE
25798          max_clo := open;
25799        END_IF;
25800        xitv := make_finite_real_interval( xmin, min_clo, xmax, max_clo );
25801      ELSE
25802        xitv := make_real_interval_from_min( xmin, min_clo );
25803      END_IF;
25804    ELSE
25805      IF xmax_exists THEN
25806        IF xmax_in THEN
25807          max_clo := closed;
25808        ELSE
25809          max_clo := open;
25810        END_IF;
25811        xitv := make_real_interval_to_max( xmax, max_clo );
25812      ELSE
25813        xitv := the_reals;
25814      END_IF;
25815    END_IF;
25816    IF ymin_exists THEN
25817      IF ymin_in THEN
25818        min_clo := closed;
25819      ELSE
25820        min_clo := open;
25821      END_IF;
25822      IF ymax_exists THEN
25823        IF ymax_in THEN
25824          max_clo := closed;
25825        ELSE
25826          max_clo := open;
25827        END_IF;
25828        yitv := make_finite_real_interval( ymin, min_clo, ymax, max_clo );
25829      ELSE
25830        yitv := make_real_interval_from_min( ymin, min_clo );
25831      END_IF;
25832    ELSE
25833      IF ymax_exists THEN
25834        IF ymax_in THEN
25835          max_clo := closed;
25836        ELSE
25837          max_clo := open;
25838        END_IF;
25839        yitv := make_real_interval_to_max( ymax, max_clo );
25840      ELSE
25841        yitv := the_reals;
25842      END_IF;
25843    END_IF;
25844    RETURN( make_cartesian_complex_number_region( xitv, yitv ) );
25845
25846  END_FUNCTION;
25847
25848  FUNCTION enclose_pregion_in_pregion(
25849               prgn : polar_complex_number_region;
25850               centre : complex_number_literal
25851           ) : polar_complex_number_region;
25852
25853    FUNCTION angle(
25854                 a : REAL
25855             ) : REAL;
25856      REPEAT WHILE a > PI;
25857        a := a - ( 2 * PI );
25858      END_REPEAT;
25859      REPEAT WHILE a <= ( -PI );
25860        a := a + ( 2 * PI );
25861      END_REPEAT;
25862      RETURN( a );
25863
25864    END_FUNCTION;
25865
25866    FUNCTION strictly_in(
25867                 a : REAL;
25868                 aitv : finite_real_interval
25869             ) : LOGICAL;
25870      a := angle( a );
25871      RETURN( ( ( aitv.min < a ) AND ( a < aitv.max ) ) OR ( ( aitv.min < ( a + ( 2 * PI ) ) ) AND ( ( a + ( 2 * PI ) ) < aitv.
25872          max ) ) );
25873
25874    END_FUNCTION;
25875
25876    PROCEDURE angle_range(
25877                  amin, amax : REAL      );
25878      amin := angle( amin );
25879      IF amin = PI THEN
25880        amin := -PI;
25881      END_IF;
25882      amax := angle( amax );
25883      IF amax <= amin THEN
25884        amax := amax + ( 2 * PI );
25885      END_IF;
25886
25887    END_PROCEDURE;
25888
25889    PROCEDURE find_aminmax(
25890                  ab, a0, a1, a2, a3 : REAL;
25891                  in0, in1, in2, in3 : BOOLEAN;
25892                  amin, amax : REAL;
25893                  amin_in, amax_in : BOOLEAN      );
25894
25895      LOCAL
25896        a : REAL;
25897      END_LOCAL;
25898      amin := angle( a0 - ab );
25899      amin_in := in0;
25900      amax := amin;
25901      amax_in := in0;
25902      a := angle( a1 - ab );
25903      IF a = amin THEN
25904        amin_in := amin_in OR in1;
25905      END_IF;
25906      IF a < amin THEN
25907        amin := a;
25908        amin_in := in1;
25909      END_IF;
25910      IF a = amax THEN
25911        amax_in := amax_in OR in1;
25912      END_IF;
25913      IF a > amax THEN
25914        amax := a;
25915        amax_in := in1;
25916      END_IF;
25917      a := angle( a2 - ab );
25918      IF a = amin THEN
25919        amin_in := amin_in OR in2;
25920      END_IF;
25921      IF a < amin THEN
25922        amin := a;
25923        amin_in := in2;
25924      END_IF;
25925      IF a = amax THEN
25926        amax_in := amax_in OR in2;
25927      END_IF;
25928      IF a > amax THEN
25929        amax := a;
25930        amax_in := in2;
25931      END_IF;
25932      a := angle( a3 - ab );
25933      IF a = amin THEN
25934        amin_in := amin_in OR in3;
25935      END_IF;
25936      IF a < amin THEN
25937        amin := a;
25938        amin_in := in3;
25939      END_IF;
25940      IF a = amax THEN
25941        amax_in := amax_in OR in3;
25942      END_IF;
25943      IF a > amax THEN
25944        amax := a;
25945        amax_in := in3;
25946      END_IF;
25947      amin := amin + ab;
25948      amax := amax + ab;
25949      angle_range( amin, amax );
25950
25951    END_PROCEDURE;
25952
25953    LOCAL
25954      ritv    : real_interval;
25955      ritp    : real_interval;
25956      ab      : REAL := 0;
25957      rmax    : REAL := 0;
25958      acp     : REAL := 0;
25959      rmxp    : REAL := 0;
25960      in3     : BOOLEAN := FALSE;
25961      in2     : BOOLEAN := FALSE;
25962      in1     : BOOLEAN := FALSE;
25963      in0     : BOOLEAN := FALSE;
25964      a       : REAL := 0;
25965      r       : REAL := 0;
25966      x       : REAL := 0;
25967      y       : REAL := 0;
25968      inn     : BOOLEAN := FALSE;
25969      aitp    : finite_real_interval;
25970      aitv    : finite_real_interval;
25971      rmin_in : BOOLEAN := FALSE;
25972      a1      : REAL := 0;
25973      a0      : REAL := 0;
25974      a3      : REAL := 0;
25975      a2      : REAL := 0;
25976      maxclo  : open_closed := open;
25977      amax    : REAL := 0;
25978      yp      : REAL := 0;
25979      rc      : REAL := 0;
25980      yc      : REAL := 0;
25981      rmax_in : BOOLEAN := FALSE;
25982      r2      : REAL := 0;
25983      r3      : REAL := 0;
25984      r0      : REAL := 0;
25985      r1      : REAL := 0;
25986      rmnp    : REAL := 0;
25987      minclo  : open_closed := open;
25988      amin    : REAL := 0;
25989      amin_in : BOOLEAN := FALSE;
25990      amax_in : BOOLEAN := FALSE;
25991      xp      : REAL := 0;
25992      apc     : REAL := 0;
25993      rmin    : REAL := 0;
25994      xc      : REAL := 0;
25995    END_LOCAL;
25996    IF ( NOT EXISTS( prgn ) ) OR ( NOT EXISTS( centre ) ) THEN
25997      RETURN( ? );
25998    END_IF;
25999    xp := prgn.centre.real_part;
26000    yp := prgn.centre.imag_part;
26001    ritp := prgn.distance_constraint;
26002    aitp := prgn.direction_constraint;
26003    xc := centre.real_part;
26004    yc := centre.imag_part;
26005    IF ( xc = xp ) AND ( yc = yp ) THEN
26006      RETURN( prgn );
26007    END_IF;
26008    rc := SQRT( ( ( xp - xc ) ** 2 ) + ( ( yp - yc ) ** 2 ) );
26009    acp := atan2( yp - yc, xp - xc );
26010    apc := atan2( yc - yp, xc - xp );
26011    rmnp := real_min( ritp );
26012    IF max_exists( ritp ) THEN
26013      rmxp := real_max( ritp );
26014      IF ( aitp.max - aitp.min ) = ( 2 * PI ) THEN
26015        inn := NOT max_included( aitp );
26016        a := angle( aitp.min );
26017        rmax := rc + rmxp;
26018        rmax_in := max_included( ritp );
26019        IF inn AND ( acp = a ) THEN
26020          rmax_in := FALSE;
26021        END_IF;
26022        IF rc > rmxp THEN
26023          a0 := ASIN( rmxp DIV rc );
26024          amin := angle( acp - a0 );
26025          amin_in := max_included( ritp );
26026          IF amin = PI THEN
26027            amin := -PI;
26028          END_IF;
26029          amax := angle( acp + a0 );
26030          amax_in := amin_in;
26031          IF amax < amin THEN
26032            amax := amax + ( 2 * PI );
26033          END_IF;
26034          rmin := rc - rmxp;
26035          rmin_in := amin_in;
26036          IF inn THEN
26037            IF apc = a THEN
26038              rmin_in := FALSE;
26039            END_IF;
26040            IF angle( amin + ( 0.5 * PI ) ) = a THEN
26041              amin_in := FALSE;
26042            END_IF;
26043            IF angle( amax - ( 0.5 * PI ) ) = a THEN
26044              amax_in := FALSE;
26045            END_IF;
26046          END_IF;
26047        ELSE
26048          IF rc = rmxp THEN
26049            amin := angle( acp - ( 0.5 * PI ) );
26050            amin_in := FALSE;
26051            IF amin = PI THEN
26052              amin := -PI;
26053            END_IF;
26054            amax := angle( acp + ( 0.5 * PI ) );
26055            amax_in := FALSE;
26056            IF amax < amin THEN
26057              amax := amax + ( 2 * PI );
26058            END_IF;
26059            rmin := 0;
26060            rmin_in := max_included( ritp );
26061            IF inn AND ( apc = a ) THEN
26062              rmin_in := FALSE;
26063            END_IF;
26064          ELSE
26065            IF rc > rmnp THEN
26066              IF inn AND ( apc = a ) THEN
26067                rmin := 0;
26068                rmin_in := FALSE;
26069                amin := aitp.min;
26070                amin_in := FALSE;
26071                amax := aitp.max;
26072                amax_in := FALSE;
26073              ELSE
26074                rmin := 0;
26075                rmin_in := TRUE;
26076                amin := -PI;
26077                amin_in := FALSE;
26078                amax := PI;
26079                amax_in := TRUE;
26080              END_IF;
26081            ELSE
26082              rmin := rmnp - rc;
26083              rmin_in := min_included( ritp );
26084              amin := -PI;
26085              amin_in := FALSE;
26086              amax := PI;
26087              amax_in := TRUE;
26088              IF inn THEN
26089                IF apc = a THEN
26090                  rmin_in := FALSE;
26091                  amin := aitp.min;
26092                  amin_in := FALSE;
26093                  amax := aitp.max;
26094                  amax_in := FALSE;
26095                ELSE
26096                  IF acp = a THEN
26097                    amin := aitp.min;
26098                    amin_in := FALSE;
26099                    amax := aitp.max;
26100                    amax_in := FALSE;
26101                  END_IF;
26102                END_IF;
26103              END_IF;
26104            END_IF;
26105          END_IF;
26106        END_IF;
26107      ELSE
26108        x := ( xp + ( rmxp * COS( aitp.min ) ) ) - xc;
26109        y := ( yp + ( rmxp * SIN( aitp.min ) ) ) - yc;
26110        r0 := SQRT( ( x ** 2 ) + ( y ** 2 ) );
26111        in0 := max_included( ritp ) AND min_included( aitp );
26112        IF r0 <> 0 THEN
26113          a0 := atan2( y, x );
26114        END_IF;
26115        x := ( xp + ( rmxp * COS( aitp.max ) ) ) - xc;
26116        y := ( yp + ( rmxp * SIN( aitp.max ) ) ) - yc;
26117        r1 := SQRT( ( x ** 2 ) + ( y ** 2 ) );
26118        in1 := max_included( ritp ) AND max_included( aitp );
26119        IF r1 <> 0 THEN
26120          a1 := atan2( y, x );
26121        END_IF;
26122        x := ( xp + ( rmnp * COS( aitp.max ) ) ) - xc;
26123        y := ( yp + ( rmnp * SIN( aitp.max ) ) ) - yc;
26124        r2 := SQRT( ( x ** 2 ) + ( y ** 2 ) );
26125        in2 := min_included( ritp ) AND max_included( aitp );
26126        IF r2 <> 0 THEN
26127          a2 := atan2( y, x );
26128        ELSE
26129          a2 := a1;
26130          in2 := in1;
26131        END_IF;
26132        IF r1 = 0 THEN
26133          a1 := a2;
26134          in1 := in2;
26135        END_IF;
26136        x := ( xp + ( rmnp * COS( aitp.min ) ) ) - xc;
26137        y := ( yp + ( rmnp * SIN( aitp.min ) ) ) - yc;
26138        r3 := SQRT( ( x ** 2 ) + ( y ** 2 ) );
26139        in3 := min_included( ritp ) AND min_included( aitp );
26140        IF r3 <> 0 THEN
26141          a3 := atan2( y, x );
26142        ELSE
26143          a3 := a0;
26144          in3 := in0;
26145        END_IF;
26146        IF r0 = 0 THEN
26147          a0 := a3;
26148          in0 := in3;
26149        END_IF;
26150        IF rmnp = 0 THEN
26151          in2 := min_included( ritp );
26152          in3 := in2;
26153        END_IF;
26154        IF ( apc = angle( aitp.min ) ) OR ( acp = angle( aitp.min ) ) THEN
26155          in0 := min_included( aitp );
26156          in3 := in0;
26157        ELSE
26158          IF ( apc = angle( aitp.max ) ) OR ( acp = angle( aitp.max ) ) THEN
26159            in1 := max_included( aitp );
26160            in2 := in1;
26161          END_IF;
26162        END_IF;
26163        IF strictly_in( acp, aitp ) THEN
26164          rmax := rc + rmxp;
26165          rmax_in := max_included( ritp );
26166        ELSE
26167          rmax := r0;
26168          rmax_in := in0;
26169          IF rmax = r1 THEN
26170            rmax_in := rmax_in OR in1;
26171          END_IF;
26172          IF rmax < r1 THEN
26173            rmax := r1;
26174            rmax_in := in1;
26175          END_IF;
26176          IF rmax = r2 THEN
26177            rmax_in := rmax_in OR in2;
26178          END_IF;
26179          IF rmax < r2 THEN
26180            rmax := r2;
26181            rmax_in := in2;
26182          END_IF;
26183          IF rmax = r3 THEN
26184            rmax_in := rmax_in OR in3;
26185          END_IF;
26186          IF rmax < r3 THEN
26187            rmax := r3;
26188            rmax_in := in3;
26189          END_IF;
26190        END_IF;
26191        IF strictly_in( apc, aitp ) THEN
26192          IF rc >= rmxp THEN
26193            rmin := rc - rmxp;
26194            rmin_in := max_included( ritp );
26195          ELSE
26196            IF rc <= rmnp THEN
26197              rmin := rmnp - rc;
26198              rmin_in := min_included( ritp );
26199            ELSE
26200              rmin := 0;
26201              rmin_in := TRUE;
26202            END_IF;
26203          END_IF;
26204        ELSE
26205          rmin := r0;
26206          rmin_in := in0;
26207          a := apc - aitp.min;
26208          r := rc * COS( a );
26209          IF ( rmnp < r ) AND ( r < rmxp ) THEN
26210            rmin := rc * SIN( ABS( a ) );
26211            rmin_in := min_included( aitp );
26212          END_IF;
26213          a := apc - aitp.max;
26214          r := rc * COS( a );
26215          IF ( rmnp < r ) AND ( r < rmxp ) THEN
26216            r := rc * SIN( ABS( a ) );
26217            inn := max_included( aitp );
26218            IF r = rmin THEN
26219              rmin_in := rmin_in OR inn;
26220            END_IF;
26221            IF r < rmin THEN
26222              rmin := r;
26223              rmin_in := inn;
26224            END_IF;
26225          END_IF;
26226          IF r1 = rmin THEN
26227            rmin_in := rmin_in OR in1;
26228          END_IF;
26229          IF r1 < rmin THEN
26230            rmin := r1;
26231            rmin_in := in1;
26232          END_IF;
26233          IF r2 = rmin THEN
26234            rmin_in := rmin_in OR in2;
26235          END_IF;
26236          IF r2 < rmin THEN
26237            rmin := r2;
26238            rmin_in := in2;
26239          END_IF;
26240          IF r3 = rmin THEN
26241            rmin_in := rmin_in OR in3;
26242          END_IF;
26243          IF r3 < rmin THEN
26244            rmin := r3;
26245            rmin_in := in3;
26246          END_IF;
26247        END_IF;
26248        IF rc >= rmxp THEN
26249          ab := acp;
26250          find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in );
26251          a := ACOS( rmxp DIV rc );
26252          IF strictly_in( apc - a, aitp ) THEN
26253            amin := ab - ASIN( rmxp DIV rc );
26254            amin_in := max_included( ritp );
26255          END_IF;
26256          IF strictly_in( apc + a, aitp ) THEN
26257            amax := ab + ASIN( rmxp DIV rc );
26258            amax_in := max_included( ritp );
26259          END_IF;
26260          angle_range( amin, amax );
26261        ELSE
26262          IF rc > rmnp THEN
26263            ab := angle( 0.5 * ( aitp.min + aitp.max ) );
26264            find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in );
26265          ELSE
26266            ab := angle( 0.5 * ( aitp.min + aitp.max ) );
26267            a0 := angle( a0 - ab );
26268            a1 := angle( a1 - ab );
26269            a2 := angle( a2 - ab );
26270            a3 := angle( a3 - ab );
26271            IF a3 > a2 THEN
26272              a2 := a2 + ( 2 * PI );
26273            END_IF;
26274            IF a0 > a1 THEN
26275              a0 := a0 + ( 2 * PI );
26276            END_IF;
26277            IF a3 < a0 THEN
26278              amin := a3;
26279              amin_in := in3;
26280            ELSE
26281              amin := a0;
26282              amin_in := in0;
26283            END_IF;
26284            IF a2 > a1 THEN
26285              amax := a2;
26286              amax_in := in2;
26287            ELSE
26288              amax := a1;
26289              amax_in := in1;
26290            END_IF;
26291            IF ( ( amax - amin ) > ( 2 * PI ) ) OR ( ( ( amax - amin ) = ( 2 * PI ) ) AND ( amin_in OR amax_in ) ) THEN
26292              amin := -PI;
26293              amin_in := FALSE;
26294              amax := PI;
26295              amax_in := TRUE;
26296            ELSE
26297              amin := amin + ab;
26298              amax := amax + ab;
26299              angle_range( amin, amax );
26300            END_IF;
26301          END_IF;
26302        END_IF;
26303      END_IF;
26304      IF rmin_in THEN
26305        minclo := closed;
26306      END_IF;
26307      IF rmax_in THEN
26308        maxclo := closed;
26309      END_IF;
26310      ritv := make_finite_real_interval( rmin, minclo, rmax, maxclo );
26311    ELSE
26312      IF ( rc > rmnp ) AND strictly_in( apc, aitp ) THEN
26313        RETURN( ? );
26314      END_IF;
26315      IF ( aitp.max - aitp.min ) = ( 2 * PI ) THEN
26316        a := angle( aitp.min );
26317        IF rc > rmnp THEN
26318          IF max_included( aitp ) THEN
26319            RETURN( ? );
26320          END_IF;
26321          rmin := 0;
26322          rmin_in := FALSE;
26323          amin := aitp.min;
26324          amin_in := FALSE;
26325          amax := aitp.max;
26326          amax_in := FALSE;
26327        ELSE
26328          rmin := rmnp - rc;
26329          rmin_in := min_included( ritp );
26330          amin := -PI;
26331          amin_in := FALSE;
26332          amax := PI;
26333          amax_in := TRUE;
26334          IF NOT max_included( aitp ) THEN
26335            IF apc = a THEN
26336              rmin_in := FALSE;
26337              amin := aitp.min;
26338              amin_in := FALSE;
26339              amax := aitp.max;
26340              amax_in := FALSE;
26341            ELSE
26342              IF acp = a THEN
26343                amin := aitp.min;
26344                amin_in := FALSE;
26345                amax := aitp.max;
26346                amax_in := FALSE;
26347              END_IF;
26348            END_IF;
26349          END_IF;
26350        END_IF;
26351      ELSE
26352        a0 := angle( aitp.min );
26353        in0 := FALSE;
26354        a1 := angle( aitp.max );
26355        in1 := FALSE;
26356        x := ( xp + ( rmnp * COS( aitp.max ) ) ) - xc;
26357        y := ( yp + ( rmnp * SIN( aitp.max ) ) ) - yc;
26358        r2 := SQRT( ( x ** 2 ) + ( y ** 2 ) );
26359        in2 := min_included( ritp ) AND max_included( aitp );
26360        IF r2 <> 0 THEN
26361          a2 := atan2( y, x );
26362        ELSE
26363          a2 := a1;
26364          in2 := in1;
26365        END_IF;
26366        x := ( xp + ( rmnp * COS( aitp.min ) ) ) - xc;
26367        y := ( yp + ( rmnp * SIN( aitp.min ) ) ) - yc;
26368        r3 := SQRT( ( x ** 2 ) + ( y ** 2 ) );
26369        in3 := min_included( ritp ) AND min_included( aitp );
26370        IF r3 <> 0 THEN
26371          a3 := atan2( y, x );
26372        ELSE
26373          a3 := a0;
26374          in3 := in0;
26375        END_IF;
26376        IF rmnp = 0 THEN
26377          in2 := min_included( ritp );
26378          in3 := in2;
26379        END_IF;
26380        IF ( apc = angle( aitp.min ) ) OR ( acp = angle( aitp.min ) ) THEN
26381          in0 := min_included( aitp );
26382          in3 := in0;
26383        ELSE
26384          IF ( apc = angle( aitp.max ) ) OR ( acp = angle( aitp.max ) ) THEN
26385            in1 := max_included( aitp );
26386            in2 := in1;
26387          END_IF;
26388        END_IF;
26389        IF strictly_in( apc, aitp ) THEN
26390          rmin := rmnp - rc;
26391          rmin_in := min_included( ritp );
26392        ELSE
26393          rmin := r2;
26394          rmin_in := in2;
26395          a := apc - aitp.min;
26396          r := rc * COS( a );
26397          IF rmnp < r THEN
26398            rmin := rc * SIN( ABS( a ) );
26399            rmin_in := min_included( aitp );
26400          END_IF;
26401          a := apc - aitp.max;
26402          r := rc * COS( a );
26403          IF rmnp < r THEN
26404            r := rc * SIN( ABS( a ) );
26405            inn := max_included( aitp );
26406            IF r = rmin THEN
26407              rmin_in := rmin_in OR inn;
26408            END_IF;
26409            IF r < rmin THEN
26410              rmin := r;
26411              rmin_in := inn;
26412            END_IF;
26413          END_IF;
26414          IF r3 = rmin THEN
26415            rmin_in := rmin_in OR in3;
26416          END_IF;
26417          IF r3 < rmin THEN
26418            rmin := r3;
26419            rmin_in := in3;
26420          END_IF;
26421        END_IF;
26422        ab := angle( 0.5 * ( aitp.min + aitp.max ) );
26423        IF rc > rmnp THEN
26424          find_aminmax( ab, a0, a1, a2, a3, in0, in1, in2, in3, amin, amax, amin_in, amax_in );
26425        ELSE
26426          a0 := angle( a0 - ab );
26427          a1 := angle( a1 - ab );
26428          a2 := angle( a2 - ab );
26429          a3 := angle( a3 - ab );
26430          IF a3 > a2 THEN
26431            a2 := a2 + ( 2 * PI );
26432          END_IF;
26433          IF a0 > a1 THEN
26434            a0 := a0 + ( 2 * PI );
26435          END_IF;
26436          IF a3 < a0 THEN
26437            amin := a3;
26438            amin_in := in3;
26439          ELSE
26440            amin := a0;
26441            amin_in := in0;
26442          END_IF;
26443          IF a2 > a1 THEN
26444            amax := a2;
26445            amax_in := in2;
26446          ELSE
26447            amax := a1;
26448            amax_in := in1;
26449          END_IF;
26450          IF ( ( amax - amin ) > ( 2 * PI ) ) OR ( ( ( amax - amin ) = ( 2 * PI ) ) AND ( amin_in OR amax_in ) ) THEN
26451            amin := -PI;
26452            amin_in := FALSE;
26453            amax := PI;
26454            amax_in := TRUE;
26455            IF ( rmin = 0 ) AND rmin_in THEN
26456              RETURN( ? );
26457            END_IF;
26458          ELSE
26459            amin := amin + ab;
26460            amax := amax + ab;
26461            angle_range( amin, amax );
26462          END_IF;
26463        END_IF;
26464      END_IF;
26465      IF rmin_in THEN
26466        minclo := closed;
26467      END_IF;
26468      ritv := make_real_interval_from_min( rmin, minclo );
26469    END_IF;
26470    minclo := open;
26471    maxclo := open;
26472    IF amin_in THEN
26473      minclo := closed;
26474    END_IF;
26475    IF amax_in THEN
26476      maxclo := closed;
26477    END_IF;
26478    aitv := make_finite_real_interval( amin, minclo, amax, maxclo );
26479    RETURN( make_polar_complex_number_region( centre, ritv, aitv ) );
26480
26481  END_FUNCTION;
26482
26483  FUNCTION equal_cregion_pregion(
26484               crgn : cartesian_complex_number_region;
26485               prgn : polar_complex_number_region
26486           ) : LOGICAL;
26487
26488    LOCAL
26489      arng : REAL;
26490      c_in : BOOLEAN;
26491      aitv : real_interval;
26492      yitv : real_interval;
26493      yc   : REAL;
26494      amin : REAL;
26495      xitv : real_interval;
26496      xc   : REAL;
26497    END_LOCAL;
26498    IF ( NOT EXISTS( crgn ) ) OR ( NOT EXISTS( prgn ) ) THEN
26499      RETURN( FALSE );
26500    END_IF;
26501    IF max_exists( prgn.distance_constraint ) THEN
26502      RETURN( FALSE );
26503    END_IF;
26504    IF real_min( prgn.distance_constraint ) <> 0 THEN
26505      RETURN( FALSE );
26506    END_IF;
26507    c_in := min_included( prgn.distance_constraint );
26508    aitv := prgn.direction_constraint;
26509    amin := aitv.min;
26510    arng := aitv.max - amin;
26511    xc := prgn.centre.real_part;
26512    yc := prgn.centre.imag_part;
26513    xitv := crgn.real_constraint;
26514    yitv := crgn.imag_constraint;
26515    IF arng = ( 0.5 * PI ) THEN
26516      IF amin = 0 THEN
26517        RETURN( ( NOT max_exists( xitv ) ) AND ( NOT max_exists( yitv ) ) AND min_exists( xitv ) AND min_exists( yitv ) AND (
26518            real_min( xitv ) = xc ) AND ( real_min( yitv ) = yc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv )
26519            AND min_included( xitv ) AND min_included( yitv ) ) OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND
26520            max_included( aitv ) AND min_included( xitv ) AND ( NOT min_included( yitv ) ) ) OR ( ( NOT c_in ) AND min_included(
26521            aitv ) AND ( NOT max_included( aitv ) ) AND ( NOT min_included( xitv ) ) AND min_included( yitv ) ) OR ( ( NOT c_in )
26522            AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT min_included( xitv ) ) AND ( NOT
26523            min_included( yitv ) ) ) ) );
26524      END_IF;
26525      IF amin = ( 0.5 * PI ) THEN
26526        RETURN( max_exists( xitv ) AND ( NOT max_exists( yitv ) ) AND ( NOT min_exists( xitv ) ) AND min_exists( yitv ) AND (
26527            real_max( xitv ) = xc ) AND ( real_min( yitv ) = yc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv )
26528            AND max_included( xitv ) AND min_included( yitv ) ) OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND
26529            max_included( aitv ) AND max_included( xitv ) AND ( NOT min_included( yitv ) ) ) OR ( ( NOT c_in ) AND min_included(
26530            aitv ) AND ( NOT max_included( aitv ) ) AND ( NOT max_included( xitv ) ) AND min_included( yitv ) ) OR ( ( NOT c_in )
26531            AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT max_included( xitv ) ) AND ( NOT
26532            min_included( yitv ) ) ) ) );
26533      END_IF;
26534      IF amin = ( -PI ) THEN
26535        RETURN( max_exists( xitv ) AND max_exists( yitv ) AND ( NOT min_exists( xitv ) ) AND ( NOT min_exists( yitv ) ) AND (
26536            real_max( xitv ) = xc ) AND ( real_max( yitv ) = yc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv )
26537            AND max_included( xitv ) AND max_included( yitv ) ) OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND
26538            max_included( aitv ) AND max_included( xitv ) AND ( NOT max_included( yitv ) ) ) OR ( ( NOT c_in ) AND min_included(
26539            aitv ) AND ( NOT max_included( aitv ) ) AND ( NOT max_included( xitv ) ) AND max_included( yitv ) ) OR ( ( NOT c_in )
26540            AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT max_included( xitv ) ) AND ( NOT
26541            max_included( yitv ) ) ) ) );
26542      END_IF;
26543      IF amin = ( ( -0.5 ) * PI ) THEN
26544        RETURN( ( NOT max_exists( xitv ) ) AND max_exists( yitv ) AND min_exists( xitv ) AND ( NOT min_exists( yitv ) ) AND (
26545            real_min( xitv ) = xc ) AND ( real_max( yitv ) = yc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv )
26546            AND min_included( xitv ) AND max_included( yitv ) ) OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND
26547            max_included( aitv ) AND min_included( xitv ) AND ( NOT max_included( yitv ) ) ) OR ( ( NOT c_in ) AND min_included(
26548            aitv ) AND ( NOT max_included( aitv ) ) AND ( NOT min_included( xitv ) ) AND max_included( yitv ) ) OR ( ( NOT c_in )
26549            AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT min_included( xitv ) ) AND ( NOT
26550            max_included( yitv ) ) ) ) );
26551      END_IF;
26552    END_IF;
26553    IF arng = PI THEN
26554      IF amin = 0 THEN
26555        RETURN( ( NOT max_exists( xitv ) ) AND ( NOT max_exists( yitv ) ) AND ( NOT min_exists( xitv ) ) AND min_exists( yitv )
26556            AND ( real_min( yitv ) = yc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv ) AND min_included( yitv ) )
26557            OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT min_included( yitv ) ) ) ) );
26558      END_IF;
26559      IF amin = ( 0.5 * PI ) THEN
26560        RETURN( max_exists( xitv ) AND ( NOT max_exists( yitv ) ) AND ( NOT min_exists( xitv ) ) AND ( NOT min_exists( yitv ) )
26561            AND ( real_max( xitv ) = xc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv ) AND max_included( xitv ) )
26562            OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT max_included( xitv ) ) ) ) );
26563      END_IF;
26564      IF amin = ( -PI ) THEN
26565        RETURN( ( NOT max_exists( xitv ) ) AND max_exists( yitv ) AND ( NOT min_exists( xitv ) ) AND ( NOT min_exists( yitv ) )
26566            AND ( real_max( yitv ) = yc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv ) AND max_included( yitv ) )
26567            OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT max_included( yitv ) ) ) ) );
26568      END_IF;
26569      IF amin = ( ( -0.5 ) * PI ) THEN
26570        RETURN( ( NOT max_exists( xitv ) ) AND ( NOT max_exists( yitv ) ) AND min_exists( xitv ) AND ( NOT min_exists( yitv ) )
26571            AND ( real_min( xitv ) = xc ) AND ( ( c_in AND min_included( aitv ) AND max_included( aitv ) AND min_included( xitv ) )
26572            OR ( ( NOT c_in ) AND ( NOT min_included( aitv ) ) AND ( NOT max_included( aitv ) ) AND ( NOT min_included( xitv ) ) ) ) );
26573      END_IF;
26574    END_IF;
26575    RETURN( FALSE );
26576
26577  END_FUNCTION;
26578
26579  FUNCTION equal_maths_functions(
26580               fun1, fun2 : maths_function
26581           ) : LOGICAL;
26582
26583    LOCAL
26584      cum : LOGICAL;
26585    END_LOCAL;
26586    IF fun1 = fun2 THEN
26587      RETURN( TRUE );
26588    END_IF;
26589    cum := equal_maths_spaces( fun1.domain, fun2.domain );
26590    IF cum = FALSE THEN
26591      RETURN( FALSE );
26592    END_IF;
26593    cum := cum AND equal_maths_spaces( fun1.range, fun2.range );
26594    IF cum = FALSE THEN
26595      RETURN( FALSE );
26596    END_IF;
26597    RETURN( UNKNOWN );
26598
26599  END_FUNCTION;
26600
26601  FUNCTION equal_maths_spaces(
26602               spc1, spc2 : maths_space
26603           ) : LOGICAL;
26604
26605    LOCAL
26606      cum2      : LOGICAL;
26607      factors   : LIST OF maths_space;
26608      fs1       : function_space;
26609      fs2       : function_space;
26610      set2      : SET OF maths_value;
26611      set1      : SET OF maths_value;
26612      cum       : LOGICAL := TRUE;
26613      factors2  : LIST OF maths_space;
26614      spc2types : SET OF STRING := stripped_typeof( spc2 );
26615      base      : maths_space;
26616      spc1types : SET OF STRING := stripped_typeof( spc1 );
26617      expnt     : INTEGER;
26618    END_LOCAL;
26619    IF spc1 = spc2 THEN
26620      RETURN( TRUE );
26621    END_IF;
26622    IF 'FINITE_SPACE' IN spc1types THEN
26623      set1 := spc1\finite_space.members;
26624      IF 'FINITE_SPACE' IN spc2types THEN
26625        set2 := spc2\finite_space.members;
26626        REPEAT i := 1 TO SIZEOF( set1 ) BY 1;
26627          cum := cum AND member_of( set1[i], spc2 );
26628          IF cum = FALSE THEN
26629            RETURN( FALSE );
26630          END_IF;
26631        END_REPEAT;
26632        IF cum = TRUE THEN
26633          REPEAT i := 1 TO SIZEOF( set2 ) BY 1;
26634            cum := cum AND member_of( set2[i], spc1 );
26635            IF cum = FALSE THEN
26636              RETURN( FALSE );
26637            END_IF;
26638          END_REPEAT;
26639        END_IF;
26640        RETURN( cum );
26641      END_IF;
26642      IF 'FINITE_INTEGER_INTERVAL' IN spc2types THEN
26643        set2 := [];
26644        REPEAT i := spc2\finite_integer_interval.min TO spc2\finite_integer_interval.max BY 1;
26645          set2 := set2 + [i];
26646        END_REPEAT;
26647        RETURN( equal_maths_spaces( spc1, make_finite_space( set2 ) ) );
26648      END_IF;
26649    END_IF;
26650    IF ( 'FINITE_INTEGER_INTERVAL' IN spc1types ) AND ( 'FINITE_SPACE' IN spc2types ) THEN
26651      set1 := [];
26652      REPEAT i := spc1\finite_integer_interval.min TO spc1\finite_integer_interval.max BY 1;
26653        set1 := set1 + [i];
26654      END_REPEAT;
26655      RETURN( equal_maths_spaces( make_finite_space( set1 ), spc2 ) );
26656    END_IF;
26657    IF ( 'CARTESIAN_COMPLEX_NUMBER_REGION' IN spc1types ) AND ( 'POLAR_COMPLEX_NUMBER_REGION' IN spc2types ) THEN
26658      RETURN( equal_cregion_pregion( spc1, spc2 ) );
26659    END_IF;
26660    IF ( 'POLAR_COMPLEX_NUMBER_REGION' IN spc1types ) AND ( 'CARTESIAN_COMPLEX_NUMBER_REGION' IN spc2types ) THEN
26661      RETURN( equal_cregion_pregion( spc2, spc1 ) );
26662    END_IF;
26663    IF 'UNIFORM_PRODUCT_SPACE' IN spc1types THEN
26664      base := spc1\uniform_product_space.base;
26665      expnt := spc1\uniform_product_space.exponent;
26666      IF 'UNIFORM_PRODUCT_SPACE' IN spc2types THEN
26667        IF expnt <> spc2\uniform_product_space.exponent THEN
26668          RETURN( FALSE );
26669        END_IF;
26670        RETURN( equal_maths_spaces( base, spc2\uniform_product_space.base ) );
26671      END_IF;
26672      IF 'LISTED_PRODUCT_SPACE' IN spc2types THEN
26673        factors := spc2\listed_product_space.factors;
26674        IF expnt <> SIZEOF( factors ) THEN
26675          RETURN( FALSE );
26676        END_IF;
26677        REPEAT i := 1 TO SIZEOF( factors ) BY 1;
26678          cum := cum AND equal_maths_spaces( base, factors[i] );
26679          IF cum = FALSE THEN
26680            RETURN( FALSE );
26681          END_IF;
26682        END_REPEAT;
26683        RETURN( cum );
26684      END_IF;
26685    END_IF;
26686    IF 'LISTED_PRODUCT_SPACE' IN spc1types THEN
26687      factors := spc1\listed_product_space.factors;
26688      IF 'UNIFORM_PRODUCT_SPACE' IN spc2types THEN
26689        IF spc2\uniform_product_space.exponent <> SIZEOF( factors ) THEN
26690          RETURN( FALSE );
26691        END_IF;
26692        base := spc2\uniform_product_space.base;
26693        REPEAT i := 1 TO SIZEOF( factors ) BY 1;
26694          cum := cum AND equal_maths_spaces( base, factors[i] );
26695          IF cum = FALSE THEN
26696            RETURN( FALSE );
26697          END_IF;
26698        END_REPEAT;
26699        RETURN( cum );
26700      END_IF;
26701      IF 'LISTED_PRODUCT_SPACE' IN spc2types THEN
26702        factors2 := spc2\listed_product_space.factors;
26703        IF SIZEOF( factors ) <> SIZEOF( factors2 ) THEN
26704          RETURN( FALSE );
26705        END_IF;
26706        REPEAT i := 1 TO SIZEOF( factors ) BY 1;
26707          cum := cum AND equal_maths_spaces( factors[i], factors2[i] );
26708          IF cum = FALSE THEN
26709            RETURN( FALSE );
26710          END_IF;
26711        END_REPEAT;
26712        RETURN( cum );
26713      END_IF;
26714    END_IF;
26715    IF ( 'EXTENDED_TUPLE_SPACE' IN spc1types ) AND ( 'EXTENDED_TUPLE_SPACE' IN spc2types ) THEN
26716      RETURN( equal_maths_spaces( spc1\extended_tuple_space.extender, spc2\extended_tuple_space.extender ) AND
26717          equal_maths_spaces( spc1\extended_tuple_space.base, spc2\extended_tuple_space.base ) );
26718    END_IF;
26719    IF ( 'FUNCTION_SPACE' IN spc1types ) AND ( 'FUNCTION_SPACE' IN spc2types ) THEN
26720      fs1 := spc1;
26721      fs2 := spc2;
26722      IF fs1.domain_constraint <> fs2.domain_constraint THEN
26723        IF ( fs1.domain_constraint = sc_equal ) OR ( fs2.domain_constraint = sc_equal ) THEN
26724          RETURN( FALSE );
26725        END_IF;
26726        IF fs1.domain_constraint <> sc_subspace THEN
26727          fs1 := spc2;
26728          fs2 := spc1;
26729        END_IF;
26730        IF ( fs1.domain_constraint <> sc_subspace ) OR ( fs2.domain_constraint <> sc_member ) THEN
26731          RETURN( UNKNOWN );
26732        END_IF;
26733        IF any_space_satisfies( fs1.domain_constraint, fs1.domain_argument ) <> any_space_satisfies( fs2.domain_constraint, fs2.
26734            domain_argument ) THEN
26735          RETURN( FALSE );
26736        END_IF;
26737        IF NOT ( 'FINITE_SPACE' IN stripped_typeof( fs2.domain_argument ) ) THEN
26738          RETURN( FALSE );
26739        END_IF;
26740        IF SIZEOF( [ 'FINITE_SPACE', 'FINITE_INTEGER_INTERVAL'] * stripped_typeof( fs1.domain_argument ) ) = 0 THEN
26741          RETURN( FALSE );
26742        END_IF;
26743        RETURN( UNKNOWN );
26744      END_IF;
26745      cum := equal_maths_spaces( fs1.domain_argument, fs2.domain_argument );
26746      IF cum = FALSE THEN
26747        RETURN( FALSE );
26748      END_IF;
26749      IF fs1.range_constraint <> fs2.range_constraint THEN
26750        IF ( fs1.range_constraint = sc_equal ) OR ( fs2.range_constraint = sc_equal ) THEN
26751          RETURN( FALSE );
26752        END_IF;
26753        IF fs1.range_constraint <> sc_subspace THEN
26754          fs1 := spc2;
26755          fs2 := spc1;
26756        END_IF;
26757        IF ( fs1.range_constraint <> sc_subspace ) OR ( fs2.range_constraint <> sc_member ) THEN
26758          RETURN( UNKNOWN );
26759        END_IF;
26760        IF any_space_satisfies( fs1.range_constraint, fs1.range_argument ) <> any_space_satisfies( fs2.range_constraint, fs2.
26761            range_argument ) THEN
26762          RETURN( FALSE );
26763        END_IF;
26764        IF NOT ( 'FINITE_SPACE' IN stripped_typeof( fs2.range_argument ) ) THEN
26765          RETURN( FALSE );
26766        END_IF;
26767        IF SIZEOF( [ 'FINITE_SPACE', 'FINITE_INTEGER_INTERVAL'] * stripped_typeof( fs1.range_argument ) ) = 0 THEN
26768          RETURN( FALSE );
26769        END_IF;
26770        RETURN( UNKNOWN );
26771      END_IF;
26772      cum := cum AND equal_maths_spaces( fs1.range_argument, fs2.range_argument );
26773      RETURN( cum );
26774    END_IF;
26775    RETURN( FALSE );
26776
26777  END_FUNCTION;
26778
26779  FUNCTION equal_maths_values(
26780               val1, val2 : maths_value
26781           ) : LOGICAL;
26782
26783    FUNCTION mem_of_vs(
26784                 val1, val2 : maths_value
26785             ) : LOGICAL;
26786      IF NOT has_values_space( val2 ) THEN
26787        RETURN( UNKNOWN );
26788      END_IF;
26789      IF NOT member_of( val1, values_space_of( val2 ) ) THEN
26790        RETURN( FALSE );
26791      END_IF;
26792      RETURN( UNKNOWN );
26793
26794    END_FUNCTION;
26795
26796    LOCAL
26797      list2  : LIST OF maths_value;
26798      list1  : LIST OF maths_value;
26799      cum    : LOGICAL := TRUE;
26800      types2 : SET OF STRING;
26801      types1 : SET OF STRING;
26802    END_LOCAL;
26803    IF ( NOT EXISTS( val1 ) ) OR ( NOT EXISTS( val2 ) ) THEN
26804      RETURN( FALSE );
26805    END_IF;
26806    IF val1 = val2 THEN
26807      RETURN( TRUE );
26808    END_IF;
26809    types1 := stripped_typeof( val1 );
26810    types2 := stripped_typeof( val2 );
26811    IF ( 'MATHS_ATOM' IN types1 ) OR ( 'COMPLEX_NUMBER_LITERAL' IN types1 ) THEN
26812      IF 'MATHS_ATOM' IN types2 THEN
26813        RETURN( FALSE );
26814      END_IF;
26815      IF 'COMPLEX_NUMBER_LITERAL' IN types2 THEN
26816        RETURN( FALSE );
26817      END_IF;
26818      IF 'LIST' IN types2 THEN
26819        RETURN( FALSE );
26820      END_IF;
26821      IF 'MATHS_SPACE' IN types2 THEN
26822        RETURN( FALSE );
26823      END_IF;
26824      IF 'MATHS_FUNCTION' IN types2 THEN
26825        RETURN( FALSE );
26826      END_IF;
26827      IF 'GENERIC_EXPRESSION' IN types2 THEN
26828        RETURN( mem_of_vs( val1, val2 ) );
26829      END_IF;
26830      RETURN( UNKNOWN );
26831    END_IF;
26832    IF ( 'MATHS_ATOM' IN types2 ) OR ( 'COMPLEX_NUMBER_LITERAL' IN types2 ) THEN
26833      RETURN( equal_maths_values( val2, val1 ) );
26834    END_IF;
26835    IF 'LIST' IN types1 THEN
26836      IF 'LIST' IN types2 THEN
26837        list1 := val1;
26838        list2 := val2;
26839        IF SIZEOF( list1 ) <> SIZEOF( list2 ) THEN
26840          RETURN( FALSE );
26841        END_IF;
26842        REPEAT i := 1 TO SIZEOF( list1 ) BY 1;
26843          cum := cum AND equal_maths_values( list1[i], list2[i] );
26844          IF cum = FALSE THEN
26845            RETURN( FALSE );
26846          END_IF;
26847        END_REPEAT;
26848        RETURN( cum );
26849      END_IF;
26850      IF 'MATHS_SPACE' IN types2 THEN
26851        RETURN( FALSE );
26852      END_IF;
26853      IF 'MATHS_FUNCTION' IN types2 THEN
26854        RETURN( FALSE );
26855      END_IF;
26856      IF 'GENERIC_EXPRESSION' IN types2 THEN
26857        RETURN( mem_of_vs( val1, val2 ) );
26858      END_IF;
26859      RETURN( UNKNOWN );
26860    END_IF;
26861    IF 'LIST' IN types2 THEN
26862      RETURN( equal_maths_values( val2, val1 ) );
26863    END_IF;
26864    IF 'MATHS_SPACE' IN types1 THEN
26865      IF 'MATHS_SPACE' IN types2 THEN
26866        RETURN( equal_maths_spaces( val1, val2 ) );
26867      END_IF;
26868      IF 'MATHS_FUNCTION' IN types2 THEN
26869        RETURN( FALSE );
26870      END_IF;
26871      IF 'GENERIC_EXPRESSION' IN types2 THEN
26872        RETURN( mem_of_vs( val1, val2 ) );
26873      END_IF;
26874      RETURN( UNKNOWN );
26875    END_IF;
26876    IF 'MATHS_SPACE' IN types2 THEN
26877      RETURN( equal_maths_values( val2, val1 ) );
26878    END_IF;
26879    IF 'MATHS_FUNCTION' IN types1 THEN
26880      IF 'MATHS_FUNCTION' IN types2 THEN
26881        RETURN( equal_maths_functions( val1, val2 ) );
26882      END_IF;
26883      IF 'GENERIC_EXPRESSION' IN types2 THEN
26884        RETURN( mem_of_vs( val1, val2 ) );
26885      END_IF;
26886      RETURN( UNKNOWN );
26887    END_IF;
26888    IF 'MATHS_FUNCTION' IN types2 THEN
26889      RETURN( equal_maths_values( val2, val1 ) );
26890    END_IF;
26891    IF ( 'GENERIC_EXPRESSION' IN types1 ) AND ( 'GENERIC_EXPRESSION' IN types2 ) THEN
26892      IF ( NOT has_values_space( val1 ) ) OR ( NOT has_values_space( val2 ) ) THEN
26893        RETURN( UNKNOWN );
26894      END_IF;
26895      IF NOT compatible_spaces( values_space_of( val1 ), values_space_of( val2 ) ) THEN
26896        RETURN( FALSE );
26897      END_IF;
26898    END_IF;
26899    RETURN( UNKNOWN );
26900
26901  END_FUNCTION;
26902
26903  FUNCTION es_subspace_of_es(
26904               es1, es2 : elementary_space_enumerators
26905           ) : BOOLEAN;
26906    IF ( NOT EXISTS( es1 ) ) OR ( NOT EXISTS( es2 ) ) THEN
26907      RETURN( FALSE );
26908    END_IF;
26909    IF es1 = es2 THEN
26910      RETURN( TRUE );
26911    END_IF;
26912    IF es2 = es_generics THEN
26913      RETURN( TRUE );
26914    END_IF;
26915    IF ( es1 = es_booleans ) AND ( es2 = es_logicals ) THEN
26916      RETURN( TRUE );
26917    END_IF;
26918    IF ( es2 = es_numbers ) AND ( ( es1 = es_complex_numbers ) OR ( es1 = es_reals ) OR ( es1 = es_integers ) ) THEN
26919      RETURN( TRUE );
26920    END_IF;
26921    RETURN( FALSE );
26922
26923  END_FUNCTION;
26924
26925  FUNCTION expression_is_constant(
26926               expr : generic_expression
26927           ) : BOOLEAN;
26928    RETURN( bool( SIZEOF( free_variables_of( expr ) ) = 0 ) );
26929
26930  END_FUNCTION;
26931
26932  FUNCTION external_version_assignment_is_valid(
26933               aia : applied_external_identification_assignment
26934           ) : BOOLEAN;
26935
26936    LOCAL
26937      item : external_identification_item;
26938      role : identification_role;
26939    END_LOCAL;
26940    role := aia.role;
26941    IF role.name = 'version' THEN
26942      REPEAT i := LOINDEX( aia\applied_external_identification_assignment.items ) TO HIINDEX( aia\
26943          applied_external_identification_assignment.items ) BY 1;
26944        item := aia\applied_external_identification_assignment.items[i];
26945        IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXTERNALLY_DEFINED_GENERAL_PROPERTY'] * TYPEOF( item ) ) =
26946            0 THEN
26947          RETURN( FALSE );
26948        END_IF;
26949      END_REPEAT;
26950      RETURN( TRUE );
26951    ELSE
26952      RETURN( TRUE );
26953    END_IF;
26954
26955  END_FUNCTION;
26956
26957  FUNCTION extract_factors(
26958               tspace : tuple_space;
26959               m, n : INTEGER
26960           ) : tuple_space;
26961
26962    LOCAL
26963      tsp : tuple_space := the_zero_tuple_space;
26964    END_LOCAL;
26965    REPEAT i := m TO n BY 1;
26966      tsp := assoc_product_space( tsp, factor_space( tspace, i ) );
26967    END_REPEAT;
26968    RETURN( tsp );
26969
26970  END_FUNCTION;
26971
26972  FUNCTION face_bound_reversed(
26973               a_face_bound : face_bound
26974           ) : face_bound;
26975
26976    LOCAL
26977      the_reverse : face_bound;
26978    END_LOCAL;
26979    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_OUTER_BOUND' IN TYPEOF( a_face_bound ) THEN
26980      the_reverse := dummy_tri || face_bound( a_face_bound\face_bound.bound, NOT a_face_bound\face_bound.orientation ) ||
26981          face_outer_bound(  );
26982    ELSE
26983      the_reverse := dummy_tri || face_bound( a_face_bound.bound, NOT a_face_bound.orientation );
26984    END_IF;
26985    RETURN( the_reverse );
26986
26987  END_FUNCTION;
26988
26989  FUNCTION face_reversed(
26990               a_face : face
26991           ) : oriented_face;
26992
26993    LOCAL
26994      the_reverse : oriented_face;
26995    END_LOCAL;
26996    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_FACE' IN TYPEOF( a_face ) THEN
26997      the_reverse := dummy_tri || face( set_of_topology_reversed( a_face.bounds ) ) || oriented_face( a_face\oriented_face.
26998          face_element, NOT a_face\oriented_face.orientation );
26999    ELSE
27000      the_reverse := dummy_tri || face( set_of_topology_reversed( a_face.bounds ) ) || oriented_face( a_face, FALSE );
27001    END_IF;
27002    RETURN( the_reverse );
27003
27004  END_FUNCTION;
27005
27006  FUNCTION factor1(
27007               tspace : tuple_space
27008           ) : maths_space;
27009
27010    LOCAL
27011      typenames : SET OF STRING := TYPEOF( tspace );
27012    END_LOCAL;
27013    IF ( schema_prefix + 'UNIFORM_PRODUCT_SPACE' ) IN typenames THEN
27014      RETURN( tspace\uniform_product_space.base );
27015    END_IF;
27016    IF ( schema_prefix + 'LISTED_PRODUCT_SPACE' ) IN typenames THEN
27017      RETURN( tspace\listed_product_space.factors[1] );
27018    END_IF;
27019    IF ( schema_prefix + 'EXTENDED_TUPLE_SPACE' ) IN typenames THEN
27020      RETURN( factor1( tspace\extended_tuple_space.base ) );
27021    END_IF;
27022    RETURN( ? );
27023
27024  END_FUNCTION;
27025
27026  FUNCTION factor_space(
27027               tspace : tuple_space;
27028               idx : positive_integer
27029           ) : maths_space;
27030
27031    LOCAL
27032      typenames : SET OF STRING := TYPEOF( tspace );
27033    END_LOCAL;
27034    IF ( schema_prefix + 'UNIFORM_PRODUCT_SPACE' ) IN typenames THEN
27035      IF idx <= tspace\uniform_product_space.exponent THEN
27036        RETURN( tspace\uniform_product_space.base );
27037      END_IF;
27038      RETURN( ? );
27039    END_IF;
27040    IF ( schema_prefix + 'LISTED_PRODUCT_SPACE' ) IN typenames THEN
27041      IF idx <= SIZEOF( tspace\listed_product_space.factors ) THEN
27042        RETURN( tspace\listed_product_space.factors[idx] );
27043      END_IF;
27044      RETURN( ? );
27045    END_IF;
27046    IF ( schema_prefix + 'EXTENDED_TUPLE_SPACE' ) IN typenames THEN
27047      IF idx <= space_dimension( tspace\extended_tuple_space.base ) THEN
27048        RETURN( factor_space( tspace\extended_tuple_space.base, idx ) );
27049      END_IF;
27050      RETURN( tspace\extended_tuple_space.extender );
27051    END_IF;
27052    RETURN( ? );
27053
27054  END_FUNCTION;
27055
27056  FUNCTION find_assembly_root(
27057               constituent : SET OF product_definition
27058           ) : SET OF product_definition;
27059
27060    LOCAL
27061      i               : INTEGER := 0;
27062      j               : INTEGER := 0;
27063      local_parent    : SET OF product_definition := [];
27064      root            : SET OF product_definition;
27065      local_relation  : SET OF assembly_component_usage := [];
27066      local_relation2 : BAG OF assembly_component_usage := [];
27067    END_LOCAL;
27068    IF ( SIZEOF( constituent ) = 1 ) AND assembly_root( constituent[1] ) THEN
27069      RETURN( [constituent[1]] );
27070    ELSE
27071      IF SIZEOF( constituent ) = 0 THEN
27072        RETURN( [] );
27073      ELSE
27074        REPEAT j := 1 TO HIINDEX( constituent ) BY 1;
27075          local_relation2 := local_relation2 + QUERY ( pdr <* USEDIN( constituent[j],
27076              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_RELATIONSHIP.'  + 'RELATED_PRODUCT_DEFINITION' )
27077              | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASSEMBLY_COMPONENT_USAGE' IN TYPEOF( pdr ) ) );
27078        END_REPEAT;
27079        local_relation := bag_to_set( local_relation2 );
27080        IF SIZEOF( local_relation ) = 0 THEN
27081          IF SIZEOF( constituent ) = 1 THEN
27082            RETURN( [constituent[1]] );
27083          ELSE
27084            RETURN( [] );
27085          END_IF;
27086        ELSE
27087          REPEAT i := 1 TO HIINDEX( local_relation ) BY 1;
27088            REPEAT j := 1 TO HIINDEX( constituent ) BY 1;
27089              IF local_relation[i].relating_product_definition <> constituent[j] THEN
27090                local_parent := local_parent + local_relation[i].relating_product_definition;
27091              END_IF;
27092            END_REPEAT;
27093          END_REPEAT;
27094          IF ( SIZEOF( local_parent ) = 1 ) AND assembly_root( local_parent[1] ) THEN
27095            RETURN( [local_parent[1]] );
27096          ELSE
27097            IF SIZEOF( local_parent ) = 0 THEN
27098              RETURN( [] );
27099            ELSE
27100              root := find_assembly_root( local_parent );
27101              IF SIZEOF( root ) = 1 THEN
27102                RETURN( root );
27103              ELSE
27104                IF SIZEOF( root ) = 0 THEN
27105                  RETURN( [] );
27106                END_IF;
27107              END_IF;
27108            END_IF;
27109          END_IF;
27110        END_IF;
27111      END_IF;
27112    END_IF;
27113    RETURN( [] );
27114
27115  END_FUNCTION;
27116
27117  FUNCTION find_representative_shape_representation_of_product_definition(
27118               item : product_definition
27119           ) : shape_representation;
27120
27121    LOCAL
27122      local_s_r : SET OF shape_representation := [];
27123    END_LOCAL;
27124    local_s_r := QUERY ( z <* find_shape_representation_of_product_definition( item ) | (
27125        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION'  IN TYPEOF( z ) ) );
27126    IF SIZEOF( local_s_r ) = 1 THEN
27127      RETURN( local_s_r[1] );
27128    ELSE
27129      RETURN( ? );
27130    END_IF;
27131
27132  END_FUNCTION;
27133
27134  FUNCTION find_representative_shape_representation_of_shape_aspect(
27135               item : shape_aspect
27136           ) : shape_representation;
27137
27138    LOCAL
27139      local_s_r : SET OF shape_representation := [];
27140    END_LOCAL;
27141    local_s_r := QUERY ( z <* find_shape_representation_of_shape_aspect( item ) | (
27142        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION'  IN TYPEOF( z ) ) );
27143    IF SIZEOF( local_s_r ) = 1 THEN
27144      RETURN( local_s_r[1] );
27145    ELSE
27146      RETURN( ? );
27147    END_IF;
27148
27149  END_FUNCTION;
27150
27151  FUNCTION find_shape_representation_of_product_definition(
27152               item : product_definition
27153           ) : SET OF shape_representation;
27154
27155    LOCAL
27156      local_s_d_r2 : BAG OF shape_definition_representation := [];
27157      i            : INTEGER;
27158      local_s_d_r  : SET OF shape_definition_representation := [];
27159      local_p_d_s  : SET OF product_definition_shape := [];
27160      local_p_d_s2 : BAG OF product_definition_shape := [];
27161      local_s_r    : SET OF shape_representation := [];
27162    END_LOCAL;
27163    local_p_d_s2 := local_p_d_s2 + QUERY ( pd <* USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27164        + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
27165        TYPEOF( pd ) ) );
27166    local_p_d_s := bag_to_set( local_p_d_s2 );
27167    REPEAT i := 1 TO HIINDEX( local_p_d_s ) BY 1;
27168      local_s_d_r2 := local_s_d_r2 + QUERY ( pdr <* USEDIN( local_p_d_s[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27169          + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27170          + 'SHAPE_DEFINITION_REPRESENTATION'  IN TYPEOF( pdr ) ) );
27171    END_REPEAT;
27172    local_s_d_r := bag_to_set( local_s_d_r2 );
27173    REPEAT i := 1 TO HIINDEX( local_s_d_r ) BY 1;
27174      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF( local_s_d_r[i].used_representation )
27175          THEN
27176        local_s_r := local_s_r + local_s_d_r[i].used_representation;
27177      END_IF;
27178    END_REPEAT;
27179    RETURN( local_s_r );
27180
27181  END_FUNCTION;
27182
27183  FUNCTION find_shape_representation_of_shape_aspect(
27184               item : shape_aspect
27185           ) : SET OF shape_representation;
27186
27187    LOCAL
27188      local_p_d    : SET OF property_definition := [];
27189      local_s_d_r2 : BAG OF shape_definition_representation := [];
27190      i            : INTEGER;
27191      local_s_d_r  : SET OF shape_definition_representation := [];
27192      local_s_r    : SET OF shape_representation := [];
27193    END_LOCAL;
27194    local_p_d := bag_to_set( USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) );
27195    REPEAT i := 1 TO HIINDEX( local_p_d ) BY 1;
27196      local_s_d_r2 := local_s_d_r2 + QUERY ( pdr <* USEDIN( local_p_d[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27197          + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27198          + 'SHAPE_DEFINITION_REPRESENTATION'  IN TYPEOF( pdr ) ) );
27199    END_REPEAT;
27200    local_s_d_r := bag_to_set( local_s_d_r2 );
27201    REPEAT i := 1 TO HIINDEX( local_s_d_r ) BY 1;
27202      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_REPRESENTATION' IN TYPEOF( local_s_d_r[i].used_representation )
27203          THEN
27204        local_s_r := local_s_r + local_s_d_r[i].used_representation;
27205      END_IF;
27206    END_REPEAT;
27207    RETURN( local_s_r );
27208
27209  END_FUNCTION;
27210
27211  FUNCTION first_proj_axis(
27212               z_axis, arg : direction
27213           ) : direction;
27214
27215    LOCAL
27216      x_vec  : vector;
27217      v      : direction;
27218      z      : direction;
27219      x_axis : direction;
27220    END_LOCAL;
27221    IF NOT EXISTS( z_axis ) THEN
27222      RETURN( ? );
27223    ELSE
27224      z := normalise( z_axis );
27225      IF NOT EXISTS( arg ) THEN
27226        IF ( z.direction_ratios <> [1, 0, 0] ) AND ( z.direction_ratios <> [-1, 0, 0] ) THEN
27227          v := dummy_gri || direction( [1, 0, 0] );
27228        ELSE
27229          v := dummy_gri || direction( [0, 1, 0] );
27230        END_IF;
27231      ELSE
27232        IF arg.dim <> 3 THEN
27233          RETURN( ? );
27234        END_IF;
27235        IF cross_product( arg, z ).magnitude = 0 THEN
27236          RETURN( ? );
27237        ELSE
27238          v := normalise( arg );
27239        END_IF;
27240      END_IF;
27241      x_vec := scalar_times_vector( dot_product( v, z ), z );
27242      x_axis := vector_difference( v, x_vec ).orientation;
27243      x_axis := normalise( x_axis );
27244    END_IF;
27245    RETURN( x_axis );
27246
27247  END_FUNCTION;
27248
27249  FUNCTION free_variables_of(
27250               expr : generic_expression
27251           ) : SET OF generic_variable;
27252
27253    LOCAL
27254      exprs     : LIST OF generic_expression := [];
27255      typenames : SET OF STRING := stripped_typeof( expr );
27256      result    : SET OF generic_variable := [];
27257    END_LOCAL;
27258    IF 'GENERIC_LITERAL' IN typenames THEN
27259      RETURN( result );
27260    END_IF;
27261    IF 'GENERIC_VARIABLE' IN typenames THEN
27262      result := result + expr;
27263      RETURN( result );
27264    END_IF;
27265    IF 'QUANTIFIER_EXPRESSION' IN typenames THEN
27266      exprs := QUERY ( ge <* expr\multiple_arity_generic_expression.operands | ( NOT ( ge IN expr\quantifier_expression.variables ) ) );
27267      REPEAT i := 1 TO SIZEOF( exprs ) BY 1;
27268        result := result + free_variables_of( exprs[i] );
27269      END_REPEAT;
27270      REPEAT i := 1 TO SIZEOF( expr\quantifier_expression.variables ) BY 1;
27271        result := result - expr\quantifier_expression.variables[i];
27272      END_REPEAT;
27273      RETURN( result );
27274    END_IF;
27275    IF 'UNARY_GENERIC_EXPRESSION' IN typenames THEN
27276      RETURN( free_variables_of( expr\unary_generic_expression.operand ) );
27277    END_IF;
27278    IF 'BINARY_GENERIC_EXPRESSION' IN typenames THEN
27279      result := free_variables_of( expr\binary_generic_expression.operands[1] );
27280      RETURN( result + free_variables_of( expr\binary_generic_expression.operands[2] ) );
27281    END_IF;
27282    IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN typenames THEN
27283      REPEAT i := 1 TO SIZEOF( expr\multiple_arity_generic_expression.operands ) BY 1;
27284        result := result + free_variables_of( expr\multiple_arity_generic_expression.operands[i] );
27285      END_REPEAT;
27286      RETURN( result );
27287    END_IF;
27288    RETURN( result );
27289
27290  END_FUNCTION;
27291
27292  FUNCTION function_applicability(
27293               func : maths_function_select;
27294               arguments : LIST [1 : ?] OF maths_value
27295           ) : BOOLEAN;
27296
27297    LOCAL
27298      arg          : generic_expression;
27299      domain_types : SET OF STRING := TYPEOF( domain );
27300      narg         : positive_integer := SIZEOF( arguments );
27301      domain       : tuple_space := convert_to_maths_function( func ).domain;
27302    END_LOCAL;
27303    IF ( schema_prefix + 'PRODUCT_SPACE' ) IN domain_types THEN
27304      IF space_dimension( domain ) <> narg THEN
27305        RETURN( FALSE );
27306      END_IF;
27307    ELSE
27308      IF ( schema_prefix + 'EXTENDED_TUPLE_SPACE' ) IN domain_types THEN
27309        IF space_dimension( domain ) > narg THEN
27310          RETURN( FALSE );
27311        END_IF;
27312      ELSE
27313        RETURN( FALSE );
27314      END_IF;
27315    END_IF;
27316    REPEAT i := 1 TO narg BY 1;
27317      arg := convert_to_operand( arguments[i] );
27318      IF NOT has_values_space( arg ) THEN
27319        RETURN( FALSE );
27320      END_IF;
27321      IF NOT compatible_spaces( factor_space( domain, i ), values_space_of( arg ) ) THEN
27322        RETURN( FALSE );
27323      END_IF;
27324    END_REPEAT;
27325    RETURN( TRUE );
27326
27327  END_FUNCTION;
27328
27329  FUNCTION function_is_1d_array(
27330               func : maths_function
27331           ) : BOOLEAN;
27332
27333    LOCAL
27334      temp : maths_space;
27335    END_LOCAL;
27336    IF NOT EXISTS( func ) THEN
27337      RETURN( FALSE );
27338    END_IF;
27339    IF space_dimension( func.domain ) <> 1 THEN
27340      RETURN( FALSE );
27341    END_IF;
27342    temp := factor1( func.domain );
27343    IF ( schema_prefix + 'PRODUCT_SPACE' ) IN TYPEOF( temp ) THEN
27344      IF space_dimension( temp ) <> 1 THEN
27345        RETURN( FALSE );
27346      END_IF;
27347      temp := factor1( temp );
27348    END_IF;
27349    IF ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) THEN
27350      RETURN( TRUE );
27351    END_IF;
27352    RETURN( FALSE );
27353
27354  END_FUNCTION;
27355
27356  FUNCTION function_is_1d_table(
27357               func : maths_function
27358           ) : BOOLEAN;
27359
27360    LOCAL
27361      temp : maths_space;
27362      itvl : finite_integer_interval;
27363    END_LOCAL;
27364    IF NOT EXISTS( func ) THEN
27365      RETURN( FALSE );
27366    END_IF;
27367    IF space_dimension( func.domain ) <> 1 THEN
27368      RETURN( FALSE );
27369    END_IF;
27370    temp := factor1( func.domain );
27371    IF ( schema_prefix + 'PRODUCT_SPACE' ) IN TYPEOF( temp ) THEN
27372      IF space_dimension( temp ) <> 1 THEN
27373        RETURN( FALSE );
27374      END_IF;
27375      temp := factor1( temp );
27376    END_IF;
27377    IF ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) THEN
27378      itvl := temp;
27379      RETURN( bool( ( itvl.min = 0 ) OR ( itvl.min = 1 ) ) );
27380    END_IF;
27381    RETURN( FALSE );
27382
27383  END_FUNCTION;
27384
27385  FUNCTION function_is_2d_table(
27386               func : maths_function
27387           ) : BOOLEAN;
27388
27389    LOCAL
27390      itvl2  : finite_integer_interval;
27391      itvl1  : finite_integer_interval;
27392      temp   : maths_space;
27393      pspace : product_space;
27394    END_LOCAL;
27395    IF NOT EXISTS( func ) THEN
27396      RETURN( FALSE );
27397    END_IF;
27398    IF space_dimension( func.domain ) <> 1 THEN
27399      RETURN( FALSE );
27400    END_IF;
27401    temp := factor1( func.domain );
27402    IF NOT ( 'PRODUCT_SPACE' IN stripped_typeof( temp ) ) THEN
27403      RETURN( FALSE );
27404    END_IF;
27405    pspace := temp;
27406    IF space_dimension( pspace ) <> 2 THEN
27407      RETURN( FALSE );
27408    END_IF;
27409    temp := factor1( pspace );
27410    IF NOT ( 'FINITE_INTEGER_INTERVAL' IN stripped_typeof( temp ) ) THEN
27411      RETURN( FALSE );
27412    END_IF;
27413    itvl1 := temp;
27414    temp := factor_space( pspace, 2 );
27415    IF NOT ( 'FINITE_INTEGER_INTERVAL' IN stripped_typeof( temp ) ) THEN
27416      RETURN( FALSE );
27417    END_IF;
27418    itvl2 := temp;
27419    RETURN( bool( ( itvl1.min = itvl2.min ) AND ( ( itvl1.min = 0 ) OR ( itvl1.min = 1 ) ) ) );
27420
27421  END_FUNCTION;
27422
27423  FUNCTION function_is_array(
27424               func : maths_function
27425           ) : BOOLEAN;
27426
27427    LOCAL
27428      temp   : maths_space;
27429      tspace : tuple_space;
27430    END_LOCAL;
27431    IF NOT EXISTS( func ) THEN
27432      RETURN( FALSE );
27433    END_IF;
27434    tspace := func.domain;
27435    IF ( space_dimension( tspace ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( factor1( tspace ) ) ) THEN
27436      tspace := factor1( tspace );
27437    END_IF;
27438    IF NOT ( ( schema_prefix + 'PRODUCT_SPACE' ) IN TYPEOF( tspace ) ) THEN
27439      RETURN( FALSE );
27440    END_IF;
27441    REPEAT i := 1 TO space_dimension( tspace ) BY 1;
27442      temp := factor_space( tspace, i );
27443      IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) ) THEN
27444        RETURN( FALSE );
27445      END_IF;
27446    END_REPEAT;
27447    RETURN( TRUE );
27448
27449  END_FUNCTION;
27450
27451  FUNCTION function_is_table(
27452               func : maths_function
27453           ) : BOOLEAN;
27454
27455    LOCAL
27456      temp   : maths_space;
27457      base   : INTEGER;
27458      tspace : tuple_space;
27459    END_LOCAL;
27460    IF NOT EXISTS( func ) THEN
27461      RETURN( FALSE );
27462    END_IF;
27463    tspace := func.domain;
27464    IF ( space_dimension( tspace ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( factor1( tspace ) ) ) THEN
27465      tspace := factor1( tspace );
27466    END_IF;
27467    IF NOT ( ( schema_prefix + 'PRODUCT_SPACE' ) IN TYPEOF( tspace ) ) THEN
27468      RETURN( FALSE );
27469    END_IF;
27470    temp := factor1( tspace );
27471    IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) ) THEN
27472      RETURN( FALSE );
27473    END_IF;
27474    base := temp\finite_integer_interval.min;
27475    IF ( base <> 0 ) AND ( base <> 1 ) THEN
27476      RETURN( FALSE );
27477    END_IF;
27478    REPEAT i := 2 TO space_dimension( tspace ) BY 1;
27479      temp := factor_space( tspace, i );
27480      IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) ) THEN
27481        RETURN( FALSE );
27482      END_IF;
27483      IF temp\finite_integer_interval.min <> base THEN
27484        RETURN( FALSE );
27485      END_IF;
27486    END_REPEAT;
27487    RETURN( TRUE );
27488
27489  END_FUNCTION;
27490
27491  FUNCTION gbsf_check_curve(
27492               cv : representation_item
27493           ) : BOOLEAN;
27494    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
27495        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
27496        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D']
27497        * TYPEOF( cv ) ) > 1 THEN
27498      RETURN( FALSE );
27499    END_IF;
27500    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27501        + 'ELLIPSE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE'] * TYPEOF( cv ) ) = 1 THEN
27502      RETURN( TRUE );
27503    ELSE
27504      IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF( cv ) ) AND ( cv\b_spline_curve.
27505          self_intersect = FALSE ) ) OR ( cv\b_spline_curve.self_intersect = UNKNOWN ) THEN
27506        RETURN( TRUE );
27507      ELSE
27508        IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF( cv ) ) AND ( cv\composite_curve.
27509            self_intersect = FALSE ) ) OR ( cv\composite_curve.self_intersect = UNKNOWN ) THEN
27510          RETURN( SIZEOF( QUERY ( seg <* cv\composite_curve.segments | ( NOT gbsf_check_curve( seg.parent_curve ) ) ) ) = 0 );
27511        ELSE
27512          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( cv ) THEN
27513            RETURN( gbsf_check_curve( cv\curve_replica.parent_curve ) );
27514          ELSE
27515            IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF( cv ) ) AND ( ( cv\offset_curve_3d.
27516                self_intersect = FALSE ) OR ( cv\offset_curve_3d.self_intersect = UNKNOWN ) ) AND ( NOT (
27517                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'  IN TYPEOF( cv\offset_curve_3d.basis_curve ) ) ) THEN
27518              RETURN( gbsf_check_curve( cv\offset_curve_3d.basis_curve ) );
27519            ELSE
27520              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( cv ) THEN
27521                RETURN( gbsf_check_curve( cv\pcurve.reference_to_curve\representation.items[1] ) AND gbsf_check_surface( cv\
27522                    pcurve.basis_surface ) );
27523              ELSE
27524                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF( cv ) THEN
27525                  IF SIZEOF( cv\polyline.points ) >= 3 THEN
27526                    RETURN( TRUE );
27527                  END_IF;
27528                ELSE
27529                  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( cv ) THEN
27530                    IF gbsf_check_curve( cv\surface_curve.curve_3d ) THEN
27531                      REPEAT i := 1 TO SIZEOF( cv\surface_curve.associated_geometry ) BY 1;
27532                        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF( cv\surface_curve.
27533                            associated_geometry[i] ) THEN
27534                          IF NOT gbsf_check_surface( cv\surface_curve.associated_geometry[i] ) THEN
27535                            RETURN( FALSE );
27536                          END_IF;
27537                        ELSE
27538                          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( cv\surface_curve.
27539                              associated_geometry[i] ) THEN
27540                            IF NOT gbsf_check_curve( cv\surface_curve.associated_geometry[i] ) THEN
27541                              RETURN( FALSE );
27542                            END_IF;
27543                          END_IF;
27544                        END_IF;
27545                      END_REPEAT;
27546                      RETURN( TRUE );
27547                    END_IF;
27548                  END_IF;
27549                END_IF;
27550              END_IF;
27551            END_IF;
27552          END_IF;
27553        END_IF;
27554      END_IF;
27555    END_IF;
27556    RETURN( FALSE );
27557
27558  END_FUNCTION;
27559
27560  FUNCTION gbsf_check_point(
27561               pnt : point
27562           ) : BOOLEAN;
27563    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( pnt ) THEN
27564      RETURN( TRUE );
27565    ELSE
27566      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF( pnt ) THEN
27567        RETURN( gbsf_check_curve( pnt\point_on_curve.basis_curve ) );
27568      ELSE
27569        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_SURFACE' IN TYPEOF( pnt ) THEN
27570          RETURN( gbsf_check_surface( pnt\point_on_surface.basis_surface ) );
27571        ELSE
27572          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DEGENERATE_PCURVE' IN TYPEOF( pnt ) THEN
27573            RETURN( gbsf_check_curve( pnt\degenerate_pcurve.reference_to_curve\representation.items[1] ) AND gbsf_check_surface(
27574                pnt\degenerate_pcurve.basis_surface ) );
27575          END_IF;
27576        END_IF;
27577      END_IF;
27578    END_IF;
27579    RETURN( FALSE );
27580
27581  END_FUNCTION;
27582
27583  FUNCTION gbsf_check_surface(
27584               sf : surface
27585           ) : BOOLEAN;
27586    IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF( sf ) ) AND ( sf\b_spline_surface.
27587        self_intersect = FALSE ) ) OR ( sf\b_spline_surface.self_intersect = UNKNOWN ) THEN
27588      RETURN( TRUE );
27589    ELSE
27590      IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SPHERICAL_SURFACE',
27591          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TOROIDAL_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27592          + 'CURVE_BOUNDED_SURFACE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_TRIMMED_SURFACE'] * TYPEOF( sf ) )
27593          = 1 THEN
27594        RETURN( TRUE );
27595      ELSE
27596        IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE' IN TYPEOF( sf ) ) AND ( sf\offset_surface.
27597            self_intersect = FALSE ) ) OR ( sf\offset_surface.self_intersect = UNKNOWN ) THEN
27598          RETURN( gbsf_check_surface( sf\offset_surface.basis_surface ) );
27599        ELSE
27600          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_COMPOSITE_SURFACE' IN TYPEOF( sf ) THEN
27601            REPEAT i := 1 TO SIZEOF( sf\rectangular_composite_surface.segments ) BY 1;
27602              REPEAT j := 1 TO SIZEOF( sf\rectangular_composite_surface.segments[i] ) BY 1;
27603                IF NOT gbsf_check_surface( sf\rectangular_composite_surface.segments[i][j].parent_surface ) THEN
27604                  RETURN( FALSE );
27605                END_IF;
27606              END_REPEAT;
27607            END_REPEAT;
27608            RETURN( TRUE );
27609          ELSE
27610            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF( sf ) THEN
27611              RETURN( gbsf_check_surface( sf\surface_replica.parent_surface ) );
27612            ELSE
27613              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_OF_REVOLUTION' IN TYPEOF( sf ) THEN
27614                RETURN( gbsf_check_curve( sf\swept_surface.swept_curve ) );
27615              END_IF;
27616            END_IF;
27617          END_IF;
27618        END_IF;
27619      END_IF;
27620    END_IF;
27621    RETURN( FALSE );
27622
27623  END_FUNCTION;
27624
27625  FUNCTION get_associated_mandatory_document_ids(
27626               pdc : product_definition_context
27627           ) : SET OF STRING;
27628
27629    LOCAL
27630      dpas          : SET OF document_product_association;
27631      adrs_filtered : SET OF applied_document_reference := [];
27632      ras           : SET OF role_association;
27633      adrs_raw      : SET OF applied_document_reference := bag_to_set( USEDIN( pdc,
27634                       'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.APPLIED_DOCUMENT_REFERENCE.ITEMS'  ) );
27635      result        : SET OF STRING := [];
27636    END_LOCAL;
27637    REPEAT i := 1 TO HIINDEX( adrs_raw ) BY 1;
27638      IF adrs_raw[i]\document_reference.role\object_role.name = 'mandatory' THEN
27639        adrs_filtered := adrs_filtered + adrs_raw[i];
27640      END_IF;
27641    END_REPEAT;
27642    REPEAT i := 1 TO HIINDEX( adrs_filtered ) BY 1;
27643      dpas := bag_to_set( USEDIN( adrs_filtered[i]\document_reference.assigned_document,
27644          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_PRODUCT_ASSOCIATION.RELATING_DOCUMENT'  ) );
27645      REPEAT j := 1 TO HIINDEX( dpas ) BY 1;
27646        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOCUMENT_PRODUCT_EQUIVALENCE' IN TYPEOF( dpas[j] ) THEN
27647          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_FORMATION' IN TYPEOF( dpas[j]\
27648              document_product_association.related_product ) THEN
27649            result := result + dpas[j]\document_product_association.related_product\product_definition_formation.of_product\
27650                product.id;
27651          END_IF;
27652          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT' IN TYPEOF( dpas[j].related_product ) THEN
27653            result := result + dpas[j]\document_product_association.related_product\product.id;
27654          END_IF;
27655        END_IF;
27656      END_REPEAT;
27657    END_REPEAT;
27658    RETURN( result );
27659
27660  END_FUNCTION;
27661
27662  FUNCTION get_basis_surface(
27663               c : curve_on_surface
27664           ) : SET [0 : 2] OF surface;
27665
27666    LOCAL
27667      surfs : SET [0 : 2] OF surface;
27668      n     : INTEGER;
27669    END_LOCAL;
27670    surfs := [];
27671    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( c ) THEN
27672      surfs := [c\pcurve.basis_surface];
27673    ELSE
27674      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( c ) THEN
27675        n := SIZEOF( c\surface_curve.associated_geometry );
27676        REPEAT i := 1 TO n BY 1;
27677          surfs := surfs + associated_surface( c\surface_curve.associated_geometry[i] );
27678        END_REPEAT;
27679      END_IF;
27680    END_IF;
27681    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE_ON_SURFACE' IN TYPEOF( c ) THEN
27682      n := SIZEOF( c\composite_curve.segments );
27683      surfs := get_basis_surface( c\composite_curve.segments[1].parent_curve );
27684      IF n > 1 THEN
27685        REPEAT i := 2 TO n BY 1;
27686          surfs := surfs * get_basis_surface( c\composite_curve.segments[i].parent_curve );
27687        END_REPEAT;
27688      END_IF;
27689    END_IF;
27690    RETURN( surfs );
27691
27692  END_FUNCTION;
27693
27694  FUNCTION get_description_value(
27695               obj : description_attribute_select
27696           ) : text;
27697
27698    LOCAL
27699      description_bag : BAG OF description_attribute := USEDIN( obj, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
27700                         'DESCRIPTION_ATTRIBUTE.'  + 'DESCRIBED_ITEM' );
27701    END_LOCAL;
27702    IF SIZEOF( description_bag ) = 1 THEN
27703      RETURN( description_bag[1].attribute_value );
27704    ELSE
27705      RETURN( ? );
27706    END_IF;
27707
27708  END_FUNCTION;
27709
27710  FUNCTION get_directed_link(
27711               nodes : LIST OF representation;
27712               undirected_link : LIST OF chained_representation_link
27713           ) : LIST OF representation_relationship;
27714
27715    LOCAL
27716      directed_link : LIST OF representation_relationship := [];
27717    END_LOCAL;
27718    IF ( SIZEOF( nodes ) <> ( SIZEOF( undirected_link ) + 1 ) ) OR ( VALUE_UNIQUE( nodes ) = FALSE ) THEN
27719      RETURN( ? );
27720    END_IF;
27721    REPEAT i := 1 TO SIZEOF( undirected_link ) BY 1;
27722      CASE TRUE OF
27723        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_CONTEXT' IN TYPEOF( undirected_link[i] ) :
27724          BEGIN
27725            IF ( nodes[i]\representation.context_of_items :=: undirected_link[i] ) AND ( nodes[i + 1]\representation.
27726                context_of_items :=: undirected_link[i] ) THEN
27727              INSERT( directed_link, representation_relationship( '', '', nodes[i + 1], nodes[i] ), i - 1 );
27728            ELSE
27729              RETURN( ? );
27730            END_IF;
27731          END;
27732        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_RELATIONSHIP' IN TYPEOF( undirected_link[i] ) :
27733          BEGIN
27734            IF ( ( nodes[i] :=: undirected_link[i]\representation_relationship.rep_1 ) AND ( nodes[i + 1] :=: undirected_link[i]\
27735                representation_relationship.rep_2 ) ) OR ( ( nodes[i] :=: undirected_link[i]\representation_relationship.rep_2 )
27736                AND ( nodes[i + 1] :=: undirected_link[i]\representation_relationship.rep_1 ) ) THEN
27737              INSERT( directed_link, representation_relationship( '', '', nodes[i + 1], nodes[i] ), i - 1 );
27738            ELSE
27739              RETURN( ? );
27740            END_IF;
27741          END;
27742        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM' IN TYPEOF( undirected_link[i] ) :
27743          BEGIN
27744            IF ( nodes[i] IN using_representations( undirected_link[i] ) ) AND ( nodes[i + 1] :=: undirected_link[i]\mapped_item.
27745                mapping_source\representation_map.mapped_representation ) THEN
27746              INSERT( directed_link, representation_relationship( '', '', nodes[i + 1], nodes[i] ), i - 1 );
27747            ELSE
27748              RETURN( ? );
27749            END_IF;
27750          END;
27751        OTHERWISE                          :           RETURN( ? );
27752        END_CASE;
27753    END_REPEAT;
27754    IF VALUE_UNIQUE( directed_link ) = FALSE THEN
27755      RETURN( ? );
27756    END_IF;
27757    RETURN( directed_link );
27758
27759  END_FUNCTION;
27760
27761  FUNCTION get_id_value(
27762               obj : id_attribute_select
27763           ) : identifier;
27764
27765    LOCAL
27766      id_bag : BAG OF id_attribute := USEDIN( obj, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ID_ATTRIBUTE.' +
27767                'IDENTIFIED_ITEM'  );
27768    END_LOCAL;
27769    IF SIZEOF( id_bag ) = 1 THEN
27770      RETURN( id_bag[1].attribute_value );
27771    ELSE
27772      RETURN( ? );
27773    END_IF;
27774
27775  END_FUNCTION;
27776
27777  FUNCTION get_kinematic_joints_from_kinematic_loops(
27778               kls : SET OF kinematic_loop
27779           ) : SET OF kinematic_joint;
27780
27781    LOCAL
27782      result : SET OF oriented_joint := [];
27783    END_LOCAL;
27784    IF SIZEOF( kls ) > 0 THEN
27785      REPEAT i := 1 TO HIINDEX( kls ) BY 1;
27786        result := result + kls[i].edge_list;
27787      END_REPEAT;
27788    END_IF;
27789    RETURN( get_kinematic_joints_from_oriented_joints( result ) );
27790
27791  END_FUNCTION;
27792
27793  FUNCTION get_kinematic_joints_from_oriented_joints(
27794               ors : SET OF oriented_joint
27795           ) : SET OF kinematic_joint;
27796
27797    LOCAL
27798      result : SET OF kinematic_joint := [];
27799    END_LOCAL;
27800    IF SIZEOF( ors ) > 0 THEN
27801      REPEAT i := 1 TO HIINDEX( ors ) BY 1;
27802        result := result + ors[i].edge_element;
27803      END_REPEAT;
27804    END_IF;
27805    RETURN( result );
27806
27807  END_FUNCTION;
27808
27809  FUNCTION get_name_value(
27810               obj : name_attribute_select
27811           ) : label;
27812
27813    LOCAL
27814      name_bag : BAG OF name_attribute := USEDIN( obj, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'NAME_ATTRIBUTE.' +
27815                  'NAMED_ITEM'  );
27816    END_LOCAL;
27817    IF SIZEOF( name_bag ) = 1 THEN
27818      RETURN( name_bag[1].attribute_value );
27819    ELSE
27820      RETURN( ? );
27821    END_IF;
27822
27823  END_FUNCTION;
27824
27825  FUNCTION get_plane_of_implicit_geometry(
27826               ps : positioned_sketch
27827           ) : plane;
27828
27829    LOCAL
27830      sb     : sketch_basis_select := ps.sketch_basis;
27831      result : plane := ?;
27832    END_LOCAL;
27833    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_SURFACE' IN TYPEOF( sb ) THEN
27834      result := sb\face_surface.face_geometry;
27835    ELSE
27836      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_BOUNDED_SURFACE' IN TYPEOF( sb ) THEN
27837        result := sb\curve_bounded_surface.basis_surface;
27838      ELSE
27839        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANAR_CURVE_SELECT' IN TYPEOF( sb ) THEN
27840
27841          BEGIN
27842            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' IN TYPEOF( sb ) THEN
27843              result := dummy_gri || surface(  ) || elementary_surface( sb\conic.position ) || plane(  );
27844            END_IF;
27845            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF( sb ) THEN
27846
27847              BEGIN
27848                result := get_plane_of_implicit_geometry( dummy_gri || positioned_sketch( sb\trimmed_curve.basis_curve, [] ) );
27849              END;
27850            END_IF;
27851            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( sb ) THEN
27852              result := sb\pcurve.basis_surface;
27853            END_IF;
27854            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( sb ) THEN
27855
27856              BEGIN
27857                IF ( SIZEOF( sb\surface_curve.basis_surface ) = 1 ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE'
27858                    IN TYPEOF( sb\surface_curve.basis_surface[1] ) ) THEN
27859                  result := sb\surface_curve.basis_surface[1];
27860                ELSE
27861                  IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( sb\surface_curve.basis_surface[1] ) )
27862                      AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( sb\surface_curve.basis_surface[2] ) )
27863                      THEN
27864                    result := ?;
27865                  ELSE
27866                    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE' IN TYPEOF( sb\surface_curve.basis_surface[1] )
27867                        THEN
27868                      result := sb\surface_curve.basis_surface[1];
27869                    ELSE
27870                      result := sb\surface_curve.basis_surface[2];
27871                    END_IF;
27872                  END_IF;
27873                END_IF;
27874              END;
27875            END_IF;
27876          END;
27877        END_IF;
27878      END_IF;
27879    END_IF;
27880    RETURN( result );
27881
27882  END_FUNCTION;
27883
27884  FUNCTION get_property_definition_representations(
27885               c_def_instance : characterized_definition
27886           ) : SET OF property_definition_representation;
27887
27888    LOCAL
27889      pdr_set : SET OF property_definition_representation := [];
27890      pd_set  : SET OF property_definition := [];
27891    END_LOCAL;
27892    pd_set := bag_to_set( USEDIN( c_def_instance, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) );
27893    IF SIZEOF( pd_set ) < 1 THEN
27894      RETURN( pdr_set );
27895    END_IF;
27896    REPEAT i := 1 TO HIINDEX( pd_set ) BY 1;
27897      pdr_set := pdr_set + bag_to_set( USEDIN( pd_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27898          + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) );
27899    END_REPEAT;
27900    RETURN( pdr_set );
27901
27902  END_FUNCTION;
27903
27904  FUNCTION get_relative_direction_2points(
27905               cp1, cp2 : cartesian_point
27906           ) : direction;
27907
27908    LOCAL
27909      magnitude : REAL;
27910      d1        : REAL;
27911      d2        : REAL;
27912      d3        : REAL;
27913      result    : direction := ?;
27914    END_LOCAL;
27915    IF ( cp1.dim <> 3 ) OR ( cp2.dim <> 3 ) THEN
27916      RETURN( result );
27917    ELSE
27918
27919      BEGIN
27920        d1 := cp2.coordinates[1] - cp1.coordinates[1];
27921        d2 := cp2.coordinates[2] - cp1.coordinates[2];
27922        d3 := cp2.coordinates[3] - cp1.coordinates[3];
27923        magnitude := SQRT( ( d1 * d1 ) + ( d2 * d2 ) + ( d3 * d3 ) );
27924        IF magnitude = 0 THEN
27925          RETURN( result );
27926        END_IF;
27927        result := dummy_gri || direction( [d1, d2, d3] );
27928      END;
27929    END_IF;
27930    RETURN( result );
27931
27932  END_FUNCTION;
27933
27934  FUNCTION get_role(
27935               obj : role_select
27936           ) : object_role;
27937
27938    LOCAL
27939      role_bag : BAG OF role_association := USEDIN( obj, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'ROLE_ASSOCIATION.'
27940                  + 'ITEM_WITH_ROLE' );
27941    END_LOCAL;
27942    IF SIZEOF( role_bag ) = 1 THEN
27943      RETURN( role_bag[1].role );
27944    ELSE
27945      RETURN( ? );
27946    END_IF;
27947
27948  END_FUNCTION;
27949
27950  FUNCTION get_shape_aspect_property_definition_representations(
27951               s_a_instance : shape_aspect
27952           ) : SET OF property_definition_representation;
27953
27954    LOCAL
27955      pdr_set : SET OF property_definition_representation := [];
27956      pd_set  : SET OF property_definition := [];
27957    END_LOCAL;
27958    pd_set := bag_to_set( USEDIN( s_a_instance, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION' ) );
27959    IF SIZEOF( pd_set ) < 1 THEN
27960      RETURN( pdr_set );
27961    END_IF;
27962    REPEAT i := 1 TO HIINDEX( pd_set ) BY 1;
27963      pdr_set := pdr_set + QUERY ( pdr <* USEDIN( pd_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
27964          'PROPERTY_DEFINITION_REPRESENTATION.'  + 'DEFINITION' ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27965          + 'SHAPE_DEFINITION_REPRESENTATION'  IN TYPEOF( pdr ) ) );
27966    END_REPEAT;
27967    RETURN( pdr_set );
27968
27969  END_FUNCTION;
27970
27971  FUNCTION get_shape_aspects(
27972               c_def_instance : characterized_definition
27973           ) : SET OF shape_aspect;
27974
27975    LOCAL
27976      pdr_set : SET OF shape_aspect := [];
27977      pd_set  : SET OF product_definition_shape := [];
27978    END_LOCAL;
27979    pd_set := bag_to_set( QUERY ( pd <* USEDIN( c_def_instance, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
27980        + 'PROPERTY_DEFINITION.DEFINITION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN
27981        TYPEOF( pd ) ) ) );
27982    IF SIZEOF( pd_set ) < 1 THEN
27983      RETURN( pdr_set );
27984    END_IF;
27985    REPEAT i := 1 TO HIINDEX( pd_set ) BY 1;
27986      pdr_set := pdr_set + bag_to_set( USEDIN( pd_set[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT.OF_SHAPE' ) );
27987    END_REPEAT;
27988    RETURN( pdr_set );
27989
27990  END_FUNCTION;
27991
27992  FUNCTION has_values_space(
27993               expr : generic_expression
27994           ) : BOOLEAN;
27995
27996    LOCAL
27997      typenames : SET OF STRING := stripped_typeof( expr );
27998    END_LOCAL;
27999    IF 'EXPRESSION' IN typenames THEN
28000      RETURN( bool( ( 'NUMERIC_EXPRESSION' IN typenames ) OR ( 'STRING_EXPRESSION' IN typenames ) OR ( 'BOOLEAN_EXPRESSION' IN
28001          typenames ) ) );
28002    END_IF;
28003    IF 'MATHS_FUNCTION' IN typenames THEN
28004      RETURN( TRUE );
28005    END_IF;
28006    IF 'FUNCTION_APPLICATION' IN typenames THEN
28007      RETURN( TRUE );
28008    END_IF;
28009    IF 'MATHS_SPACE' IN typenames THEN
28010      RETURN( TRUE );
28011    END_IF;
28012    IF 'MATHS_VARIABLE' IN typenames THEN
28013      RETURN( TRUE );
28014    END_IF;
28015    IF 'DEPENDENT_VARIABLE_DEFINITION' IN typenames THEN
28016      RETURN( has_values_space( expr\unary_generic_expression.operand ) );
28017    END_IF;
28018    IF 'COMPLEX_NUMBER_LITERAL' IN typenames THEN
28019      RETURN( TRUE );
28020    END_IF;
28021    IF 'LOGICAL_LITERAL' IN typenames THEN
28022      RETURN( TRUE );
28023    END_IF;
28024    IF 'BINARY_LITERAL' IN typenames THEN
28025      RETURN( TRUE );
28026    END_IF;
28027    IF 'MATHS_ENUM_LITERAL' IN typenames THEN
28028      RETURN( TRUE );
28029    END_IF;
28030    IF 'REAL_TUPLE_LITERAL' IN typenames THEN
28031      RETURN( TRUE );
28032    END_IF;
28033    IF 'INTEGER_TUPLE_LITERAL' IN typenames THEN
28034      RETURN( TRUE );
28035    END_IF;
28036    IF 'ATOM_BASED_LITERAL' IN typenames THEN
28037      RETURN( TRUE );
28038    END_IF;
28039    IF 'MATHS_TUPLE_LITERAL' IN typenames THEN
28040      RETURN( TRUE );
28041    END_IF;
28042    IF 'PARTIAL_DERIVATIVE_EXPRESSION' IN typenames THEN
28043      RETURN( TRUE );
28044    END_IF;
28045    IF 'DEFINITE_INTEGRAL_EXPRESSION' IN typenames THEN
28046      RETURN( TRUE );
28047    END_IF;
28048    RETURN( FALSE );
28049
28050  END_FUNCTION;
28051
28052  FUNCTION inspected_product_definition(
28053               dqir : data_quality_inspection_result_representation
28054           ) : BAG OF product_definition;
28055
28056    LOCAL
28057      dqdr  : BAG OF data_quality_definition_representation_relationship := [];
28058      pd    : BAG OF product_definition := [];
28059      pdqdr : BAG OF product_data_and_data_quality_relationship := [];
28060    END_LOCAL;
28061    dqdr := USEDIN( dqir, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
28062        'DATA_QUALITY_DEFINITION_REPRESENTATION_RELATIONSHIP.'  + 'USED_REPRESENTATION' );
28063    REPEAT i := 1 TO SIZEOF( dqdr ) BY 1;
28064      pdqdr := USEDIN( dqdr[i].definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
28065          'PRODUCT_DATA_AND_DATA_QUALITY_RELATIONSHIP.'  + 'DATA_QUALITY' );
28066      REPEAT j := 1 TO SIZEOF( pdqdr ) BY 1;
28067        pd := pd + pdqdr[j].product_data;
28068      END_REPEAT;
28069    END_REPEAT;
28070    RETURN( pd );
28071
28072  END_FUNCTION;
28073
28074  FUNCTION invalidate_vrep_item(
28075               item : variational_representation_item
28076           ) : BOOLEAN;
28077
28078    LOCAL
28079      iar  : instance_attribute_reference;
28080      svri : SET [1 : ?] OF variational_representation_item;
28081      i    : INTEGER;
28082      n    : INTEGER := HIINDEX( reps );
28083      reps : SET [1 : ?] OF representation := using_representations( item );
28084    END_LOCAL;
28085    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUND_VARIATIONAL_PARAMETER' IN TYPEOF( item ) THEN
28086      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INSTANCE_ATTRIBUTE_REFERENCE' IN TYPEOF( item\generic_variable.
28087          interpretation\environment.semantics ) THEN
28088
28089        BEGIN
28090          iar := item\generic_variable.interpretation\environment.semantics;
28091          IF reps <> using_representations( iar\instance_attribute_reference.owning_instance ) THEN
28092            RETURN( TRUE );
28093          END_IF;
28094        END;
28095      ELSE
28096        RETURN( TRUE );
28097      END_IF;
28098    END_IF;
28099    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNBOUND_VARIATIONAL_PARAMETER' IN TYPEOF( item ) THEN
28100
28101      BEGIN
28102        REPEAT i := 1 TO n BY 1;
28103          svri := QUERY ( q <* reps[i]\representation.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
28104              + 'FREE_FORM_CONSTRAINT'  IN TYPEOF( q ) ) );
28105          IF SIZEOF( QUERY ( r <* svri | ( item IN ( r\free_form_constraint.reference_elements + r\free_form_constraint.
28106              constrained_elements ) ) ) ) = 0 THEN
28107            RETURN( TRUE );
28108          END_IF;
28109        END_REPEAT;
28110      END;
28111    END_IF;
28112    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FIXED_INSTANCE_ATTRIBUTE_SET' IN TYPEOF( item ) THEN
28113      REPEAT i := 1 TO SIZEOF( item\fixed_instance_attribute_set.fixed_attributes ) BY 1;
28114        IF reps <> using_representations( item\fixed_instance_attribute_set.fixed_attributes[i]\instance_attribute_reference.
28115            owning_instance ) THEN
28116          RETURN( TRUE );
28117        END_IF;
28118      END_REPEAT;
28119    END_IF;
28120    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXPLICIT_CONSTRAINT' IN TYPEOF( item ) THEN
28121      IF SIZEOF( QUERY ( q <* ( item\explicit_constraint.reference_elements + item\explicit_constraint.constrained_elements ) |
28122          ( reps <> using_representations( q ) ) ) ) > 0 THEN
28123        RETURN( TRUE );
28124      END_IF;
28125    END_IF;
28126    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AUXILIARY_GEOMETRIC_REPRESENTATION_ITEM' IN TYPEOF( item ) THEN
28127
28128      BEGIN
28129        REPEAT i := 1 TO n BY 1;
28130          svri := QUERY ( q <* reps[i]\representation.items | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
28131              + 'EXPLICIT_GEOMETRIC_CONSTRAINT'  IN TYPEOF( q ) ) );
28132          IF SIZEOF( QUERY ( r <* svri | ( item IN r\explicit_geometric_constraint.reference_elements ) ) ) = 0 THEN
28133            RETURN( TRUE );
28134          END_IF;
28135        END_REPEAT;
28136      END;
28137    END_IF;
28138    RETURN( FALSE );
28139
28140  END_FUNCTION;
28141
28142  FUNCTION is_acyclic(
28143               arg : generic_expression
28144           ) : BOOLEAN;
28145    RETURN( acyclic( arg, [] ) );
28146
28147  END_FUNCTION;
28148
28149  FUNCTION is_int_expr(
28150               arg : numeric_expression
28151           ) : BOOLEAN;
28152    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_LITERAL' IN TYPEOF( arg ) THEN
28153      RETURN( TRUE );
28154    END_IF;
28155    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_LITERAL' IN TYPEOF( arg ) THEN
28156      RETURN( FALSE );
28157    END_IF;
28158    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_NUMERIC_VARIABLE' IN TYPEOF( arg ) THEN
28159      RETURN( TRUE );
28160    END_IF;
28161    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_NUMERIC_VARIABLE' IN TYPEOF( arg ) THEN
28162      RETURN( FALSE );
28163    END_IF;
28164    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABS_FUNCTION' IN TYPEOF( arg ) THEN
28165      RETURN( is_int_expr( arg\unary_numeric_expression.operand ) );
28166    END_IF;
28167    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_FUNCTION' IN TYPEOF( arg ) THEN
28168      RETURN( is_int_expr( arg\unary_numeric_expression.operand ) );
28169    END_IF;
28170    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIN_FUNCTION' IN TYPEOF( arg ) ) OR (
28171        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COS_FUNCTION'  IN TYPEOF( arg ) ) OR (
28172        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28173        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASIN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28174        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACOS_FUNCTION'  IN TYPEOF( arg ) ) OR (
28175        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATAN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28176        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXP_FUNCTION'  IN TYPEOF( arg ) ) OR (
28177        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG_FUNCTION'  IN TYPEOF( arg ) ) OR (
28178        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG2_FUNCTION'  IN TYPEOF( arg ) ) OR (
28179        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG10_FUNCTION'  IN TYPEOF( arg ) ) OR (
28180        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_ROOT_FUNCTION'  IN TYPEOF( arg ) ) THEN
28181      RETURN( FALSE );
28182    END_IF;
28183    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_EXPRESSION' IN TYPEOF( arg ) ) OR (
28184        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULT_EXPRESSION'  IN TYPEOF( arg ) ) OR (
28185        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAXIMUM_FUNCTION'  IN TYPEOF( arg ) ) OR (
28186        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINIMUM_FUNCTION'  IN TYPEOF( arg ) ) THEN
28187      REPEAT i := 1 TO SIZEOF( arg\multiple_arity_numeric_expression.operands ) BY 1;
28188        IF NOT is_int_expr( arg\multiple_arity_numeric_expression.operands[i] ) THEN
28189          RETURN( FALSE );
28190        END_IF;
28191      END_REPEAT;
28192      RETURN( TRUE );
28193    END_IF;
28194    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_EXPRESSION' IN TYPEOF( arg ) ) OR (
28195        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28196      RETURN( is_int_expr( arg\binary_numeric_expression.operands[1] ) AND is_int_expr( arg\binary_numeric_expression.operands[2] ) );
28197    END_IF;
28198    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIV_EXPRESSION' IN TYPEOF( arg ) ) OR (
28199        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MOD_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28200      RETURN( TRUE );
28201    END_IF;
28202    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLASH_EXPRESSION' IN TYPEOF( arg ) THEN
28203      RETURN( FALSE );
28204    END_IF;
28205    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_FUNCTION' IN TYPEOF( arg ) THEN
28206      RETURN( TRUE );
28207    END_IF;
28208    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_FUNCTION' IN TYPEOF( arg ) THEN
28209      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INT_VALUE_FUNCTION' IN TYPEOF( arg ) THEN
28210        RETURN( TRUE );
28211      ELSE
28212        RETURN( FALSE );
28213      END_IF;
28214    END_IF;
28215    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTEGER_DEFINED_FUNCTION' IN TYPEOF( arg ) THEN
28216      RETURN( TRUE );
28217    END_IF;
28218    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REAL_DEFINED_FUNCTION' IN TYPEOF( arg ) THEN
28219      RETURN( FALSE );
28220    END_IF;
28221    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_DEFINED_FUNCTION' IN TYPEOF( arg ) THEN
28222      RETURN( FALSE );
28223    END_IF;
28224    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_DEFINED_FUNCTION' IN TYPEOF( arg ) THEN
28225      RETURN( FALSE );
28226    END_IF;
28227    RETURN( FALSE );
28228
28229  END_FUNCTION;
28230
28231  FUNCTION is_sql_mappable(
28232               arg : expression
28233           ) : BOOLEAN;
28234    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_NUMERIC_EXPRESSION' IN TYPEOF( arg ) THEN
28235      RETURN( TRUE );
28236    END_IF;
28237    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQL_MAPPABLE_DEFINED_FUNCTION' IN TYPEOF( arg ) THEN
28238      RETURN( TRUE );
28239    END_IF;
28240    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_FUNCTION' IN TYPEOF( arg ) THEN
28241      RETURN( is_sql_mappable( arg\unary_numeric_expression.operand ) );
28242    END_IF;
28243    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABS_FUNCTION' IN TYPEOF( arg ) ) OR (
28244        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28245        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COS_FUNCTION'  IN TYPEOF( arg ) ) OR (
28246        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TAN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28247        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ASIN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28248        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACOS_FUNCTION'  IN TYPEOF( arg ) ) OR (
28249        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ATAN_FUNCTION'  IN TYPEOF( arg ) ) OR (
28250        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EXP_FUNCTION'  IN TYPEOF( arg ) ) OR (
28251        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG_FUNCTION'  IN TYPEOF( arg ) ) OR (
28252        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG2_FUNCTION'  IN TYPEOF( arg ) ) OR (
28253        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LOG10_FUNCTION'  IN TYPEOF( arg ) ) OR (
28254        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SQUARE_ROOT_FUNCTION'  IN TYPEOF( arg ) ) OR (
28255        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_FUNCTION'  IN TYPEOF( arg ) ) OR (
28256        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_FUNCTION'  IN TYPEOF( arg ) ) THEN
28257      RETURN( FALSE );
28258    END_IF;
28259    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLUS_EXPRESSION' IN TYPEOF( arg ) ) OR (
28260        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULT_EXPRESSION'  IN TYPEOF( arg ) ) OR (
28261        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAXIMUM_FUNCTION'  IN TYPEOF( arg ) ) OR (
28262        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINIMUM_FUNCTION'  IN TYPEOF( arg ) ) THEN
28263      REPEAT i := 1 TO SIZEOF( arg\multiple_arity_numeric_expression.operands ) BY 1;
28264        IF NOT is_sql_mappable( arg\multiple_arity_numeric_expression.operands[i] ) THEN
28265          RETURN( FALSE );
28266        END_IF;
28267      END_REPEAT;
28268      RETURN( TRUE );
28269    END_IF;
28270    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MINUS_EXPRESSION' IN TYPEOF( arg ) ) OR (
28271        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SLASH_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28272      RETURN( is_sql_mappable( arg\binary_numeric_expression.operands[1] ) AND is_sql_mappable( arg\binary_numeric_expression.
28273          operands[2] ) );
28274    END_IF;
28275    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIV_EXPRESSION' IN TYPEOF( arg ) ) OR (
28276        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MOD_EXPRESSION'  IN TYPEOF( arg ) ) OR (
28277        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28278      RETURN( FALSE );
28279    END_IF;
28280    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_BOOLEAN_EXPRESSION' IN TYPEOF( arg ) THEN
28281      RETURN( TRUE );
28282    END_IF;
28283    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NOT_EXPRESSION' IN TYPEOF( arg ) THEN
28284      RETURN( is_sql_mappable( arg\unary_generic_expression.operand ) );
28285    END_IF;
28286    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ODD_FUNCTION' IN TYPEOF( arg ) ) OR (
28287        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.XOR_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28288      RETURN( FALSE );
28289    END_IF;
28290    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AND_EXPRESSION' IN TYPEOF( arg ) ) OR (
28291        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OR_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28292      REPEAT i := 1 TO SIZEOF( arg\multiple_arity_boolean_expression.operands ) BY 1;
28293        IF NOT is_sql_mappable( arg\multiple_arity_boolean_expression.operands[i] ) THEN
28294          RETURN( FALSE );
28295        END_IF;
28296      END_REPEAT;
28297      RETURN( TRUE );
28298    END_IF;
28299    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EQUALS_EXPRESSION' IN TYPEOF( arg ) THEN
28300      RETURN( is_sql_mappable( arg\binary_generic_expression.operands[1] ) AND is_sql_mappable( arg\binary_generic_expression.
28301          operands[2] ) );
28302    END_IF;
28303    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_EQUAL' IN TYPEOF( arg ) ) OR (
28304        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_GREATER'  IN TYPEOF( arg ) ) OR (
28305        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_GREATER_EQUAL'  IN TYPEOF( arg ) ) OR (
28306        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_LESS'  IN TYPEOF( arg ) ) OR (
28307        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_LESS_EQUAL'  IN TYPEOF( arg ) ) OR (
28308        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPARISON_NOT_EQUAL'  IN TYPEOF( arg ) ) OR (
28309        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LIKE_EXPRESSION'  IN TYPEOF( arg ) ) THEN
28310      RETURN( is_sql_mappable( arg\comparison_expression.operands[1] ) AND is_sql_mappable( arg\comparison_expression.operands[2] ) );
28311    END_IF;
28312    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INTERVAL_EXPRESSION' IN TYPEOF( arg ) THEN
28313      RETURN( is_sql_mappable( arg\interval_expression.interval_low ) AND is_sql_mappable( arg\interval_expression.interval_high )
28314          AND is_sql_mappable( arg\interval_expression.interval_item ) );
28315    END_IF;
28316    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.NUMERIC_DEFINED_FUNCTION' IN TYPEOF( arg ) ) OR (
28317        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_DEFINED_FUNCTION'  IN TYPEOF( arg ) ) OR (
28318        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.STRING_DEFINED_FUNCTION'  IN TYPEOF( arg ) ) THEN
28319      RETURN( FALSE );
28320    END_IF;
28321    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SIMPLE_STRING_EXPRESSION' IN TYPEOF( arg ) THEN
28322      RETURN( TRUE );
28323    END_IF;
28324    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDEX_EXPRESSION' IN TYPEOF( arg ) ) OR (
28325        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SUBSTRING_EXPRESSION'  IN TYPEOF( arg ) ) OR (
28326        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONCAT_EXPRESSION'  IN TYPEOF( arg ) ) OR (
28327        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORMAT_FUNCTION'  IN TYPEOF( arg ) ) THEN
28328      RETURN( FALSE );
28329    END_IF;
28330    RETURN( FALSE );
28331
28332  END_FUNCTION;
28333
28334  FUNCTION item_in_context(
28335               item : representation_item;
28336               cntxt : representation_context
28337           ) : BOOLEAN;
28338
28339    LOCAL
28340      y : BAG OF representation_item;
28341    END_LOCAL;
28342    IF SIZEOF( USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' ) * cntxt.
28343        representations_in_context ) > 0 THEN
28344      RETURN( TRUE );
28345    ELSE
28346      y := QUERY ( z <* USEDIN( item, '' ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_ITEM' IN TYPEOF( z ) ) );
28347      IF SIZEOF( y ) > 0 THEN
28348        REPEAT i := 1 TO HIINDEX( y ) BY 1;
28349          IF item_in_context( y[i], cntxt ) THEN
28350            RETURN( TRUE );
28351          END_IF;
28352        END_REPEAT;
28353      END_IF;
28354    END_IF;
28355    RETURN( FALSE );
28356
28357  END_FUNCTION;
28358
28359  FUNCTION leap_year(
28360               year : year_number
28361           ) : BOOLEAN;
28362    IF ( ( ( year MOD 4 ) = 0 ) AND ( ( year MOD 100 ) <> 0 ) ) OR ( ( year MOD 400 ) = 0 ) THEN
28363      RETURN( TRUE );
28364    ELSE
28365      RETURN( FALSE );
28366    END_IF;
28367
28368  END_FUNCTION;
28369
28370  FUNCTION list_face_loops(
28371               f : face
28372           ) : LIST [0 : ?] OF loop;
28373
28374    LOCAL
28375      loops : LIST [0 : ?] OF loop := [];
28376    END_LOCAL;
28377    REPEAT i := 1 TO SIZEOF( f.bounds ) BY 1;
28378      loops := loops + f.bounds[i].bound;
28379    END_REPEAT;
28380    RETURN( loops );
28381
28382  END_FUNCTION;
28383
28384  FUNCTION list_of_topology_reversed(
28385               a_list : list_of_reversible_topology_item
28386           ) : list_of_reversible_topology_item;
28387
28388    LOCAL
28389      the_reverse : list_of_reversible_topology_item;
28390    END_LOCAL;
28391    the_reverse := [];
28392    REPEAT i := 1 TO SIZEOF( a_list ) BY 1;
28393      the_reverse := topology_reversed( a_list[i] ) + the_reverse;
28394    END_REPEAT;
28395    RETURN( the_reverse );
28396
28397  END_FUNCTION;
28398
28399  FUNCTION list_selected_components(
28400               aggr : AGGREGATE OF LIST OF maths_value;
28401               k : positive_integer
28402           ) : LIST OF maths_value;
28403
28404    LOCAL
28405      j      : INTEGER := 0;
28406      result : LIST OF maths_value := [];
28407    END_LOCAL;
28408    REPEAT i := LOINDEX( aggr ) TO HIINDEX( aggr ) BY 1;
28409      IF k <= SIZEOF( aggr[i] ) THEN
28410        INSERT( result, aggr[i][k], j );
28411        j := j + 1;
28412      END_IF;
28413    END_REPEAT;
28414    RETURN( result );
28415
28416  END_FUNCTION;
28417
28418  FUNCTION list_to_array(
28419               lis : LIST [0 : ?] OF GENERIC:t;
28420               low : INTEGER;
28421               u : INTEGER
28422           ) : ARRAY [low : u] OF GENERIC:t;
28423
28424    LOCAL
28425      n   : INTEGER;
28426      res : ARRAY [low : u] OF GENERIC:t;
28427    END_LOCAL;
28428    n := SIZEOF( lis );
28429    IF n <> ( ( u - low ) + 1 ) THEN
28430      RETURN( ? );
28431    ELSE
28432      res := [lis[1] : 0];
28433      REPEAT i := 2 TO n BY 1;
28434        res[( low + i ) - 1] := lis[i];
28435      END_REPEAT;
28436      RETURN( res );
28437    END_IF;
28438
28439  END_FUNCTION;
28440
28441  FUNCTION list_to_set(
28442               l : LIST [0 : ?] OF GENERIC:t
28443           ) : SET OF GENERIC:t;
28444
28445    LOCAL
28446      s : SET OF GENERIC:t := [];
28447    END_LOCAL;
28448    REPEAT i := 1 TO SIZEOF( l ) BY 1;
28449      s := s + l[i];
28450    END_REPEAT;
28451    RETURN( s );
28452
28453  END_FUNCTION;
28454
28455  FUNCTION make_array_of_array(
28456               lis : LIST [1 : ?] OF LIST [1 : ?] OF GENERIC:t;
28457               low1 : INTEGER;
28458               u1 : INTEGER;
28459               low2 : INTEGER;
28460               u2 : INTEGER
28461           ) : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF GENERIC:t;
28462
28463    LOCAL
28464      res : ARRAY [low1 : u1] OF ARRAY [low2 : u2] OF GENERIC:t;
28465    END_LOCAL;
28466    IF ( ( u1 - low1 ) + 1 ) <> SIZEOF( lis ) THEN
28467      RETURN( ? );
28468    END_IF;
28469    IF ( ( u2 - low2 ) + 1 ) <> SIZEOF( lis[1] ) THEN
28470      RETURN( ? );
28471    END_IF;
28472    res := [list_to_array( lis[1], low2, u2 ) : 0];
28473    REPEAT i := 2 TO HIINDEX( lis ) BY 1;
28474      IF ( ( u2 - low2 ) + 1 ) <> SIZEOF( lis[i] ) THEN
28475        RETURN( ? );
28476      END_IF;
28477      res[( low1 + i ) - 1] := list_to_array( lis[i], low2, u2 );
28478    END_REPEAT;
28479    RETURN( res );
28480
28481  END_FUNCTION;
28482
28483  FUNCTION make_atom_based_literal(
28484               lit_value : atom_based_value
28485           ) : atom_based_literal;
28486    RETURN( atom_based_literal( lit_value ) || generic_literal(  ) || simple_generic_expression(  ) || generic_expression(  ) );
28487
28488  END_FUNCTION;
28489
28490  FUNCTION make_binary_literal(
28491               lit_value : BINARY
28492           ) : binary_literal;
28493    RETURN( binary_literal( lit_value ) || generic_literal(  ) || simple_generic_expression(  ) || generic_expression(  ) );
28494
28495  END_FUNCTION;
28496
28497  FUNCTION make_boolean_literal(
28498               lit_value : BOOLEAN
28499           ) : boolean_literal;
28500    RETURN( boolean_literal( lit_value ) || simple_boolean_expression(  ) || boolean_expression(  ) || expression(  ) ||
28501        generic_expression(  ) || simple_generic_expression(  ) || generic_literal(  ) );
28502
28503  END_FUNCTION;
28504
28505  FUNCTION make_cartesian_complex_number_region(
28506               real_constraint, imag_constraint : real_interval
28507           ) : cartesian_complex_number_region;
28508    RETURN( cartesian_complex_number_region( real_constraint, imag_constraint ) || maths_space(  ) || generic_expression(  ) ||
28509        generic_literal(  ) || simple_generic_expression(  ) );
28510
28511  END_FUNCTION;
28512
28513  FUNCTION make_complex_number_literal(
28514               rpart, ipart : REAL
28515           ) : complex_number_literal;
28516    RETURN( complex_number_literal( rpart, ipart ) || generic_literal(  ) || simple_generic_expression(  ) ||
28517        generic_expression(  ) );
28518
28519  END_FUNCTION;
28520
28521  FUNCTION make_elementary_function(
28522               func_id : elementary_function_enumerators
28523           ) : elementary_function;
28524    RETURN( elementary_function( func_id ) || maths_function(  ) || generic_expression(  ) || generic_literal(  ) ||
28525        simple_generic_expression(  ) );
28526
28527  END_FUNCTION;
28528
28529  FUNCTION make_elementary_space(
28530               space_id : elementary_space_enumerators
28531           ) : elementary_space;
28532    RETURN( elementary_space( space_id ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28533        simple_generic_expression(  ) );
28534
28535  END_FUNCTION;
28536
28537  FUNCTION make_extended_tuple_space(
28538               base : product_space;
28539               extender : maths_space
28540           ) : extended_tuple_space;
28541    RETURN( extended_tuple_space( base, extender ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28542        simple_generic_expression(  ) );
28543
28544  END_FUNCTION;
28545
28546  FUNCTION make_finite_integer_interval(
28547               min : INTEGER;
28548               max : INTEGER
28549           ) : finite_integer_interval;
28550    RETURN( finite_integer_interval( min, max ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28551        simple_generic_expression(  ) );
28552
28553  END_FUNCTION;
28554
28555  FUNCTION make_finite_real_interval(
28556               min : REAL;
28557               minclo : open_closed;
28558               max : REAL;
28559               maxclo : open_closed
28560           ) : finite_real_interval;
28561    RETURN( finite_real_interval( min, minclo, max, maxclo ) || maths_space(  ) || generic_expression(  ) || generic_literal(  )
28562        || simple_generic_expression(  ) );
28563
28564  END_FUNCTION;
28565
28566  FUNCTION make_finite_space(
28567               members : SET OF maths_value
28568           ) : finite_space;
28569    RETURN( finite_space( members ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28570        simple_generic_expression(  ) );
28571
28572  END_FUNCTION;
28573
28574  FUNCTION make_function_application(
28575               afunction : maths_function_select;
28576               arguments : LIST [1 : ?] OF maths_value
28577           ) : function_application;
28578    RETURN( function_application( afunction, arguments ) || multiple_arity_generic_expression( convert_to_maths_function(
28579        afunction ) + convert_to_operands( arguments ) ) || generic_expression(  ) );
28580
28581  END_FUNCTION;
28582
28583  FUNCTION make_function_space(
28584               domain_constraint : space_constraint_type;
28585               domain_argument : maths_space;
28586               range_constraint : space_constraint_type;
28587               range_argument : maths_space
28588           ) : function_space;
28589    RETURN( function_space( domain_constraint, domain_argument, range_constraint, range_argument ) || maths_space(  ) ||
28590        generic_expression(  ) || generic_literal(  ) || simple_generic_expression(  ) );
28591
28592  END_FUNCTION;
28593
28594  FUNCTION make_int_literal(
28595               lit_value : INTEGER
28596           ) : int_literal;
28597    RETURN( int_literal(  ) || literal_number( lit_value ) || simple_numeric_expression(  ) || numeric_expression(  ) ||
28598        expression(  ) || generic_expression(  ) || simple_generic_expression(  ) || generic_literal(  ) );
28599
28600  END_FUNCTION;
28601
28602  FUNCTION make_listed_product_space(
28603               factors : LIST OF maths_space
28604           ) : listed_product_space;
28605    RETURN( listed_product_space( factors ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28606        simple_generic_expression(  ) );
28607
28608  END_FUNCTION;
28609
28610  FUNCTION make_logical_literal(
28611               lit_value : LOGICAL
28612           ) : logical_literal;
28613    RETURN( logical_literal( lit_value ) || generic_literal(  ) || simple_generic_expression(  ) || generic_expression(  ) );
28614
28615  END_FUNCTION;
28616
28617  FUNCTION make_maths_enum_literal(
28618               lit_value : maths_enum_atom
28619           ) : maths_enum_literal;
28620    RETURN( maths_enum_literal( lit_value ) || generic_literal(  ) || simple_generic_expression(  ) || generic_expression(  ) );
28621
28622  END_FUNCTION;
28623
28624  FUNCTION make_maths_tuple_literal(
28625               lit_value : LIST OF maths_value
28626           ) : maths_tuple_literal;
28627    RETURN( maths_tuple_literal( lit_value ) || generic_literal(  ) || simple_generic_expression(  ) || generic_expression(  ) );
28628
28629  END_FUNCTION;
28630
28631  FUNCTION make_numeric_set(
28632               start, delta : maths_number;
28633               incs : positive_integer
28634           ) : SET [2 : ?] OF maths_number;
28635
28636    LOCAL
28637      i           : INTEGER;
28638      numeric_set : SET [2 : ?] OF maths_number := [start, start + delta];
28639    END_LOCAL;
28640    IF incs > 1 THEN
28641      REPEAT i := 2 TO incs BY 1;
28642        numeric_set := numeric_set + start + ( i * delta );
28643      END_REPEAT;
28644    END_IF;
28645    RETURN( numeric_set );
28646
28647  END_FUNCTION;
28648
28649  FUNCTION make_parallel_composed_function(
28650               srcdom : maths_space_or_function;
28651               prepfuncs : LIST [2 : ?] OF maths_function;
28652               finfunc : maths_function_select
28653           ) : parallel_composed_function;
28654    RETURN( parallel_composed_function( srcdom, prepfuncs, finfunc ) || maths_function(  ) || generic_expression(  ) ||
28655        multiple_arity_generic_expression( convert_to_operands_prcmfn( srcdom, prepfuncs, finfunc ) ) );
28656
28657  END_FUNCTION;
28658
28659  FUNCTION make_polar_complex_number_region(
28660               centre : complex_number_literal;
28661               dis_constraint : real_interval;
28662               dir_constraint : finite_real_interval
28663           ) : polar_complex_number_region;
28664    RETURN( polar_complex_number_region( centre, dis_constraint, dir_constraint ) || maths_space(  ) || generic_expression(  ) ||
28665        generic_literal(  ) || simple_generic_expression(  ) );
28666
28667  END_FUNCTION;
28668
28669  FUNCTION make_real_interval_from_min(
28670               min : REAL;
28671               minclo : open_closed
28672           ) : real_interval_from_min;
28673    RETURN( real_interval_from_min( min, minclo ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28674        simple_generic_expression(  ) );
28675
28676  END_FUNCTION;
28677
28678  FUNCTION make_real_interval_to_max(
28679               max : REAL;
28680               maxclo : open_closed
28681           ) : real_interval_to_max;
28682    RETURN( real_interval_to_max( max, maxclo ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28683        simple_generic_expression(  ) );
28684
28685  END_FUNCTION;
28686
28687  FUNCTION make_real_literal(
28688               lit_value : REAL
28689           ) : real_literal;
28690    RETURN( real_literal(  ) || literal_number( lit_value ) || simple_numeric_expression(  ) || numeric_expression(  ) ||
28691        expression(  ) || generic_expression(  ) || simple_generic_expression(  ) || generic_literal(  ) );
28692
28693  END_FUNCTION;
28694
28695  FUNCTION make_string_literal(
28696               lit_value : STRING
28697           ) : string_literal;
28698    RETURN( string_literal( lit_value ) || simple_string_expression(  ) || string_expression(  ) || expression(  ) ||
28699        generic_expression(  ) || simple_generic_expression(  ) || generic_literal(  ) );
28700
28701  END_FUNCTION;
28702
28703  FUNCTION make_uniform_product_space(
28704               base : maths_space;
28705               exponent : positive_integer
28706           ) : uniform_product_space;
28707    RETURN( uniform_product_space( base, exponent ) || maths_space(  ) || generic_expression(  ) || generic_literal(  ) ||
28708        simple_generic_expression(  ) );
28709
28710  END_FUNCTION;
28711
28712  FUNCTION max_exists(
28713               spc : maths_space
28714           ) : BOOLEAN;
28715
28716    LOCAL
28717      types : SET OF STRING := TYPEOF( spc );
28718    END_LOCAL;
28719    RETURN( bool( ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN types ) OR ( ( schema_prefix + 'INTEGER_INTERVAL_TO_MAX' )
28720        IN types ) OR ( ( schema_prefix + 'FINITE_REAL_INTERVAL' ) IN types ) OR ( ( schema_prefix + 'REAL_INTERVAL_TO_MAX' ) IN
28721        types ) ) );
28722
28723  END_FUNCTION;
28724
28725  FUNCTION max_included(
28726               spc : maths_space
28727           ) : BOOLEAN;
28728
28729    LOCAL
28730      types : SET OF STRING := TYPEOF( spc );
28731    END_LOCAL;
28732    IF ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN types ) OR ( ( schema_prefix + 'INTEGER_INTERVAL_TO_MAX' ) IN types )
28733        THEN
28734      RETURN( TRUE );
28735    END_IF;
28736    IF ( schema_prefix + 'FINITE_REAL_INTERVAL' ) IN types THEN
28737      RETURN( bool( spc\finite_real_interval.max_closure = closed ) );
28738    END_IF;
28739    IF ( schema_prefix + 'REAL_INTERVAL_TO_MAX' ) IN types THEN
28740      RETURN( bool( spc\real_interval_to_max.max_closure = closed ) );
28741    END_IF;
28742    RETURN( FALSE );
28743
28744  END_FUNCTION;
28745
28746  FUNCTION member_of(
28747               val : GENERIC:g;
28748               spc : maths_space
28749           ) : LOGICAL;
28750
28751    FUNCTION fedex(
28752                 val : AGGREGATE OF GENERIC:x;
28753                 i : INTEGER
28754             ) : GENERIC:x;
28755      RETURN( val[i] );
28756
28757    END_FUNCTION;
28758
28759    LOCAL
28760      factors   : LIST OF maths_space;
28761      stypes    : SET OF STRING := stripped_typeof( s );
28762      s         : maths_space := simplify_maths_space( spc );
28763      vtypes    : SET OF STRING := stripped_typeof( v );
28764      v         : maths_value := simplify_maths_value( convert_to_maths_value( val ) );
28765      tmp_int   : INTEGER;
28766      sspc      : maths_space;
28767      tmp_real  : REAL;
28768      cum       : LOGICAL;
28769      smem      : SET OF maths_value;
28770      lgcl      : LOGICAL;
28771      tmp_cmplx : complex_number_literal;
28772      vspc      : maths_space;
28773    END_LOCAL;
28774    IF NOT EXISTS( s ) THEN
28775      RETURN( FALSE );
28776    END_IF;
28777    IF NOT EXISTS( v ) THEN
28778      RETURN( s = the_generics );
28779    END_IF;
28780    IF ( 'GENERIC_EXPRESSION' IN vtypes ) AND ( NOT ( 'MATHS_SPACE' IN vtypes ) ) AND ( NOT ( 'MATHS_FUNCTION' IN vtypes ) ) AND
28781        ( NOT ( 'COMPLEX_NUMBER_LITERAL' IN vtypes ) ) THEN
28782      IF has_values_space( v ) THEN
28783        vspc := values_space_of( v );
28784        IF subspace_of( vspc, s ) THEN
28785          RETURN( TRUE );
28786        END_IF;
28787        IF NOT compatible_spaces( vspc, s ) THEN
28788          RETURN( FALSE );
28789        END_IF;
28790        RETURN( UNKNOWN );
28791      END_IF;
28792      RETURN( UNKNOWN );
28793    END_IF;
28794    IF 'ELEMENTARY_SPACE' IN stypes THEN
28795      CASE s\elementary_space.space_id OF
28796        es_numbers        :           RETURN( ( 'NUMBER' IN vtypes ) OR ( 'COMPLEX_NUMBER_LITERAL' IN vtypes ) );
28797        es_complex_numbers :           RETURN( 'COMPLEX_NUMBER_LITERAL' IN vtypes );
28798        es_reals          :           RETURN( ( 'REAL' IN vtypes ) AND ( NOT ( 'INTEGER' IN vtypes ) ) );
28799        es_integers       :           RETURN( 'INTEGER' IN vtypes );
28800        es_logicals       :           RETURN( 'LOGICAL' IN vtypes );
28801        es_booleans       :           RETURN( 'BOOLEAN' IN vtypes );
28802        es_strings        :           RETURN( 'STRING' IN vtypes );
28803        es_binarys        :           RETURN( 'BINARY' IN vtypes );
28804        es_maths_spaces   :           RETURN( 'MATHS_SPACE' IN vtypes );
28805        es_maths_functions :           RETURN( 'MATHS_FUNCTION' IN vtypes );
28806        es_generics       :           RETURN( TRUE );
28807        END_CASE;
28808    END_IF;
28809    IF 'FINITE_INTEGER_INTERVAL' IN stypes THEN
28810      IF 'INTEGER' IN vtypes THEN
28811        tmp_int := v;
28812        RETURN( ( s\finite_integer_interval.min <= tmp_int ) AND ( tmp_int <= s\finite_integer_interval.max ) );
28813      END_IF;
28814      RETURN( FALSE );
28815    END_IF;
28816    IF 'INTEGER_INTERVAL_FROM_MIN' IN stypes THEN
28817      IF 'INTEGER' IN vtypes THEN
28818        tmp_int := v;
28819        RETURN( s\integer_interval_from_min.min <= tmp_int );
28820      END_IF;
28821      RETURN( FALSE );
28822    END_IF;
28823    IF 'INTEGER_INTERVAL_TO_MAX' IN stypes THEN
28824      IF 'INTEGER' IN vtypes THEN
28825        tmp_int := v;
28826        RETURN( tmp_int <= s\integer_interval_to_max.max );
28827      END_IF;
28828      RETURN( FALSE );
28829    END_IF;
28830    IF 'FINITE_REAL_INTERVAL' IN stypes THEN
28831      IF ( 'REAL' IN vtypes ) AND ( NOT ( 'INTEGER' IN vtypes ) ) THEN
28832        tmp_real := v;
28833        IF s\finite_real_interval.min_closure = closed THEN
28834          IF s\finite_real_interval.max_closure = closed THEN
28835            RETURN( ( s\finite_real_interval.min <= tmp_real ) AND ( tmp_real <= s\finite_real_interval.max ) );
28836          ELSE
28837            RETURN( ( s\finite_real_interval.min <= tmp_real ) AND ( tmp_real < s\finite_real_interval.max ) );
28838          END_IF;
28839        ELSE
28840          IF s\finite_real_interval.max_closure = closed THEN
28841            RETURN( ( s\finite_real_interval.min < tmp_real ) AND ( tmp_real <= s\finite_real_interval.max ) );
28842          ELSE
28843            RETURN( ( s\finite_real_interval.min < tmp_real ) AND ( tmp_real < s\finite_real_interval.max ) );
28844          END_IF;
28845        END_IF;
28846      END_IF;
28847      RETURN( FALSE );
28848    END_IF;
28849    IF 'REAL_INTERVAL_FROM_MIN' IN stypes THEN
28850      IF ( 'REAL' IN vtypes ) AND ( NOT ( 'INTEGER' IN vtypes ) ) THEN
28851        tmp_real := v;
28852        IF s\real_interval_from_min.min_closure = closed THEN
28853          RETURN( s\real_interval_from_min.min <= tmp_real );
28854        ELSE
28855          RETURN( s\real_interval_from_min.min < tmp_real );
28856        END_IF;
28857      END_IF;
28858      RETURN( FALSE );
28859    END_IF;
28860    IF 'REAL_INTERVAL_TO_MAX' IN stypes THEN
28861      IF ( 'REAL' IN vtypes ) AND ( NOT ( 'INTEGER' IN vtypes ) ) THEN
28862        tmp_real := v;
28863        IF s\real_interval_to_max.max_closure = closed THEN
28864          RETURN( tmp_real <= s\real_interval_to_max.max );
28865        ELSE
28866          RETURN( tmp_real < s\real_interval_to_max.max );
28867        END_IF;
28868      END_IF;
28869      RETURN( FALSE );
28870    END_IF;
28871    IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN stypes THEN
28872      IF 'COMPLEX_NUMBER_LITERAL' IN vtypes THEN
28873        RETURN( member_of( v\complex_number_literal.real_part, s\cartesian_complex_number_region.real_constraint ) AND
28874            member_of( v\complex_number_literal.imag_part, s\cartesian_complex_number_region.imag_constraint ) );
28875      END_IF;
28876      RETURN( FALSE );
28877    END_IF;
28878    IF 'POLAR_COMPLEX_NUMBER_REGION' IN stypes THEN
28879      IF 'COMPLEX_NUMBER_LITERAL' IN vtypes THEN
28880        tmp_cmplx := v;
28881        tmp_cmplx.real_part := tmp_cmplx.real_part - s\polar_complex_number_region.centre.real_part;
28882        tmp_cmplx.imag_part := tmp_cmplx.imag_part - s\polar_complex_number_region.centre.imag_part;
28883        tmp_real := SQRT( ( tmp_cmplx.real_part ** 2 ) + ( tmp_cmplx.imag_part ** 2 ) );
28884        IF NOT member_of( tmp_real, s\polar_complex_number_region.distance_constraint ) THEN
28885          RETURN( FALSE );
28886        END_IF;
28887        IF tmp_real = 0 THEN
28888          RETURN( TRUE );
28889        END_IF;
28890        tmp_real := atan2( tmp_cmplx.imag_part, tmp_cmplx.real_part );
28891        RETURN( member_of( tmp_real, s\polar_complex_number_region.direction_constraint ) OR member_of( tmp_real + ( 2 * PI ), s\
28892            polar_complex_number_region.direction_constraint ) );
28893      END_IF;
28894      RETURN( FALSE );
28895    END_IF;
28896    IF 'FINITE_SPACE' IN stypes THEN
28897      smem := s\finite_space.members;
28898      cum := FALSE;
28899      REPEAT i := 1 TO SIZEOF( smem ) BY 1;
28900        cum := cum OR equal_maths_values( v, smem[i] );
28901        IF cum = TRUE THEN
28902          RETURN( TRUE );
28903        END_IF;
28904      END_REPEAT;
28905      RETURN( cum );
28906    END_IF;
28907    IF 'UNIFORM_PRODUCT_SPACE' IN stypes THEN
28908      IF 'LIST' IN vtypes THEN
28909        IF SIZEOF( v ) = s\uniform_product_space.exponent THEN
28910          sspc := s\uniform_product_space.base;
28911          cum := TRUE;
28912          REPEAT i := 1 TO SIZEOF( v ) BY 1;
28913            cum := cum AND member_of( v[i], sspc );
28914            IF cum = FALSE THEN
28915              RETURN( FALSE );
28916            END_IF;
28917          END_REPEAT;
28918          RETURN( cum );
28919        END_IF;
28920      END_IF;
28921      RETURN( FALSE );
28922    END_IF;
28923    IF 'LISTED_PRODUCT_SPACE' IN stypes THEN
28924      IF 'LIST' IN vtypes THEN
28925        factors := s\listed_product_space.factors;
28926        IF SIZEOF( v ) = SIZEOF( factors ) THEN
28927          cum := TRUE;
28928          REPEAT i := 1 TO SIZEOF( v ) BY 1;
28929            cum := cum AND member_of( v[i], factors[i] );
28930            IF cum = FALSE THEN
28931              RETURN( FALSE );
28932            END_IF;
28933          END_REPEAT;
28934          RETURN( cum );
28935        END_IF;
28936      END_IF;
28937      RETURN( FALSE );
28938    END_IF;
28939    IF 'EXTENDED_TUPLE_SPACE' IN stypes THEN
28940      IF 'LIST' IN vtypes THEN
28941        sspc := s\extended_tuple_space.base;
28942        tmp_int := space_dimension( sspc );
28943        IF SIZEOF( v ) >= tmp_int THEN
28944          cum := TRUE;
28945          REPEAT i := 1 TO tmp_int BY 1;
28946            cum := cum AND member_of( v[i], factor_space( sspc, i ) );
28947            IF cum = FALSE THEN
28948              RETURN( FALSE );
28949            END_IF;
28950          END_REPEAT;
28951          sspc := s\extended_tuple_space.extender;
28952          REPEAT i := tmp_int + 1 TO SIZEOF( v ) BY 1;
28953            cum := cum AND member_of( v[i], sspc );
28954            IF cum = FALSE THEN
28955              RETURN( FALSE );
28956            END_IF;
28957          END_REPEAT;
28958          RETURN( cum );
28959        END_IF;
28960      END_IF;
28961      RETURN( FALSE );
28962    END_IF;
28963    IF 'FUNCTION_SPACE' IN stypes THEN
28964      IF 'MATHS_FUNCTION' IN vtypes THEN
28965        vspc := v\maths_function.domain;
28966        sspc := s\function_space.domain_argument;
28967        CASE s\function_space.domain_constraint OF
28968          sc_equal   :             cum := equal_maths_spaces( vspc, sspc );
28969          sc_subspace :             cum := subspace_of( vspc, sspc );
28970          sc_member  :             cum := member_of( vspc, sspc );
28971          END_CASE;
28972        IF cum = FALSE THEN
28973          RETURN( FALSE );
28974        END_IF;
28975        vspc := v\maths_function.range;
28976        sspc := s\function_space.range_argument;
28977        CASE s\function_space.range_constraint OF
28978          sc_equal   :             cum := cum AND equal_maths_spaces( vspc, sspc );
28979          sc_subspace :             cum := cum AND subspace_of( vspc, sspc );
28980          sc_member  :             cum := cum AND member_of( vspc, sspc );
28981          END_CASE;
28982        RETURN( cum );
28983      END_IF;
28984      RETURN( FALSE );
28985    END_IF;
28986    RETURN( UNKNOWN );
28987
28988  END_FUNCTION;
28989
28990  FUNCTION min_exists(
28991               spc : maths_space
28992           ) : BOOLEAN;
28993
28994    LOCAL
28995      types : SET OF STRING := TYPEOF( spc );
28996    END_LOCAL;
28997    RETURN( bool( ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN types ) OR ( ( schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' )
28998        IN types ) OR ( ( schema_prefix + 'FINITE_REAL_INTERVAL' ) IN types ) OR ( ( schema_prefix + 'REAL_INTERVAL_FROM_MIN' ) IN
28999        types ) ) );
29000
29001  END_FUNCTION;
29002
29003  FUNCTION min_included(
29004               spc : maths_space
29005           ) : BOOLEAN;
29006
29007    LOCAL
29008      types : SET OF STRING := TYPEOF( spc );
29009    END_LOCAL;
29010    IF ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN types ) OR ( ( schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' ) IN types )
29011        THEN
29012      RETURN( TRUE );
29013    END_IF;
29014    IF ( schema_prefix + 'FINITE_REAL_INTERVAL' ) IN types THEN
29015      RETURN( bool( spc\finite_real_interval.min_closure = closed ) );
29016    END_IF;
29017    IF ( schema_prefix + 'REAL_INTERVAL_FROM_MIN' ) IN types THEN
29018      RETURN( bool( spc\real_interval_from_min.min_closure = closed ) );
29019    END_IF;
29020    RETURN( FALSE );
29021
29022  END_FUNCTION;
29023
29024  FUNCTION mixed_loop_type_set(
29025               l : SET [0 : ?] OF loop
29026           ) : LOGICAL;
29027
29028    LOCAL
29029      poly_loop_type : LOGICAL;
29030    END_LOCAL;
29031    IF SIZEOF( l ) <= 1 THEN
29032      RETURN( FALSE );
29033    END_IF;
29034    poly_loop_type := 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLY_LOOP' IN TYPEOF( l[1] );
29035    REPEAT i := 2 TO SIZEOF( l ) BY 1;
29036      IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLY_LOOP' IN TYPEOF( l[i] ) ) <> poly_loop_type THEN
29037        RETURN( TRUE );
29038      END_IF;
29039    END_REPEAT;
29040    RETURN( FALSE );
29041
29042  END_FUNCTION;
29043
29044  FUNCTION msb_shells(
29045               brep : manifold_solid_brep
29046           ) : SET [1 : ?] OF closed_shell;
29047
29048    LOCAL
29049      return_set : SET [1 : ?] OF closed_shell := [brep.outer];
29050    END_LOCAL;
29051    IF SIZEOF( QUERY ( msbtype <* TYPEOF( brep ) | ( msbtype LIKE '*BREP_WITH_VOIDS' ) ) ) >= 1 THEN
29052      return_set := return_set + brep\brep_with_voids.voids;
29053    END_IF;
29054    RETURN( return_set );
29055
29056  END_FUNCTION;
29057
29058  FUNCTION msf_curve_check(
29059               cv : representation_item
29060           ) : BOOLEAN;
29061    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
29062        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
29063        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D']
29064        * TYPEOF( cv ) ) > 1 THEN
29065      RETURN( FALSE );
29066    END_IF;
29067    IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF( cv ) ) AND ( cv\b_spline_curve.
29068        self_intersect = FALSE ) ) OR ( cv\b_spline_curve.self_intersect = UNKNOWN ) THEN
29069      RETURN( TRUE );
29070    ELSE
29071      IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE']
29072          * TYPEOF( cv ) ) = 1 THEN
29073        RETURN( TRUE );
29074      ELSE
29075        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( cv ) THEN
29076          RETURN( msf_curve_check( cv\curve_replica.parent_curve ) );
29077        ELSE
29078          IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF( cv ) ) AND ( ( cv\offset_curve_3d.
29079              self_intersect = FALSE ) OR ( cv\offset_curve_3d.self_intersect = UNKNOWN ) ) AND ( NOT (
29080              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'  IN TYPEOF( cv\offset_curve_3d.basis_curve ) ) ) THEN
29081            RETURN( msf_curve_check( cv\offset_curve_3d.basis_curve ) );
29082          ELSE
29083            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( cv ) THEN
29084              RETURN( msf_curve_check( cv\pcurve.reference_to_curve\representation.items[1] ) AND msf_surface_check( cv\pcurve.
29085                  basis_surface ) );
29086            ELSE
29087              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( cv ) THEN
29088                IF msf_curve_check( cv\surface_curve.curve_3d ) THEN
29089                  REPEAT i := 1 TO SIZEOF( cv\surface_curve.associated_geometry ) BY 1;
29090                    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF( cv\surface_curve.associated_geometry[
29091                        i] ) THEN
29092                      IF NOT msf_surface_check( cv\surface_curve.associated_geometry[i] ) THEN
29093                        RETURN( FALSE );
29094                      END_IF;
29095                    ELSE
29096                      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( cv\surface_curve.associated_geometry
29097                          [i] ) THEN
29098                        IF NOT msf_curve_check( cv\surface_curve.associated_geometry[i] ) THEN
29099                          RETURN( FALSE );
29100                        END_IF;
29101                      END_IF;
29102                    END_IF;
29103                  END_REPEAT;
29104                  RETURN( TRUE );
29105                END_IF;
29106              ELSE
29107                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF( cv ) THEN
29108                  IF SIZEOF( cv\polyline.points ) >= 3 THEN
29109                    RETURN( TRUE );
29110                  END_IF;
29111                END_IF;
29112              END_IF;
29113            END_IF;
29114          END_IF;
29115        END_IF;
29116      END_IF;
29117    END_IF;
29118    RETURN( FALSE );
29119
29120  END_FUNCTION;
29121
29122  FUNCTION msf_surface_check(
29123               surf : surface
29124           ) : BOOLEAN;
29125    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF( surf ) THEN
29126      RETURN( TRUE );
29127    ELSE
29128      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF( surf ) THEN
29129        RETURN( msf_curve_check( surf\swept_surface.swept_curve ) );
29130      ELSE
29131        IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE' IN TYPEOF( surf ) ) AND ( surf\offset_surface.
29132            self_intersect = FALSE ) ) OR ( surf\offset_surface.self_intersect = UNKNOWN ) THEN
29133          RETURN( msf_surface_check( surf\offset_surface.basis_surface ) );
29134        ELSE
29135          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF( surf ) THEN
29136            RETURN( msf_surface_check( surf\surface_replica.parent_surface ) );
29137          ELSE
29138            IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF( surf ) ) AND ( surf\
29139                b_spline_surface.self_intersect = FALSE ) ) OR ( surf\b_spline_surface.self_intersect = UNKNOWN ) THEN
29140              RETURN( TRUE );
29141            END_IF;
29142          END_IF;
29143        END_IF;
29144      END_IF;
29145    END_IF;
29146    RETURN( FALSE );
29147
29148  END_FUNCTION;
29149
29150  FUNCTION nmsf_curve_check(
29151               cv : representation_item
29152           ) : BOOLEAN;
29153    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOUNDED_CURVE',
29154        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA',
29155        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D']
29156        * TYPEOF( cv ) ) > 1 THEN
29157      RETURN( FALSE );
29158    ELSE
29159      IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' IN TYPEOF( cv ) ) AND ( cv\b_spline_curve.
29160          self_intersect = FALSE ) ) OR ( cv\b_spline_curve.self_intersect = UNKNOWN ) THEN
29161        RETURN( TRUE );
29162      ELSE
29163        IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
29164            + 'LINE' ] * TYPEOF( cv ) ) = 1 THEN
29165          RETURN( TRUE );
29166        ELSE
29167          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( cv ) THEN
29168            RETURN( nmsf_curve_check( cv\curve_replica.parent_curve ) );
29169          ELSE
29170            IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF( cv ) ) AND ( ( cv\offset_curve_3d.
29171                self_intersect = FALSE ) OR ( cv\offset_curve_3d.self_intersect = UNKNOWN ) ) AND ( NOT (
29172                'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE'  IN TYPEOF( cv\offset_curve_3d.basis_curve ) ) ) THEN
29173              RETURN( nmsf_curve_check( cv\offset_curve_3d.basis_curve ) );
29174            ELSE
29175              IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( cv ) THEN
29176                RETURN( nmsf_curve_check( cv\pcurve.reference_to_curve\representation.items[1] ) AND nmsf_surface_check( cv\
29177                    pcurve.basis_surface ) );
29178              ELSE
29179                IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_CURVE' IN TYPEOF( cv ) THEN
29180                  IF nmsf_curve_check( cv\surface_curve.curve_3d ) THEN
29181                    REPEAT i := 1 TO SIZEOF( cv\surface_curve.associated_geometry ) BY 1;
29182                      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE' IN TYPEOF( cv\surface_curve.
29183                          associated_geometry[i] ) THEN
29184                        IF NOT nmsf_surface_check( cv\surface_curve.associated_geometry[i] ) THEN
29185                          RETURN( FALSE );
29186                        END_IF;
29187                      ELSE
29188                        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PCURVE' IN TYPEOF( cv\surface_curve.
29189                            associated_geometry[i] ) THEN
29190                          IF NOT nmsf_curve_check( cv\surface_curve.associated_geometry[i] ) THEN
29191                            RETURN( FALSE );
29192                          END_IF;
29193                        END_IF;
29194                      END_IF;
29195                    END_REPEAT;
29196                    RETURN( TRUE );
29197                  END_IF;
29198                ELSE
29199                  IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE' IN TYPEOF( cv ) THEN
29200                    IF SIZEOF( cv\polyline.points ) >= 3 THEN
29201                      RETURN( TRUE );
29202                    END_IF;
29203                  END_IF;
29204                END_IF;
29205              END_IF;
29206            END_IF;
29207          END_IF;
29208        END_IF;
29209      END_IF;
29210    END_IF;
29211    RETURN( FALSE );
29212
29213  END_FUNCTION;
29214
29215  FUNCTION nmsf_surface_check(
29216               surf : surface
29217           ) : BOOLEAN;
29218    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELEMENTARY_SURFACE' IN TYPEOF( surf ) THEN
29219      RETURN( TRUE );
29220    ELSE
29221      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SWEPT_SURFACE' IN TYPEOF( surf ) THEN
29222        RETURN( nmsf_curve_check( surf\swept_surface.swept_curve ) );
29223      ELSE
29224        IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_SURFACE' IN TYPEOF( surf ) ) AND ( surf\offset_surface.
29225            self_intersect = FALSE ) ) OR ( surf\offset_surface.self_intersect = UNKNOWN ) THEN
29226          RETURN( nmsf_surface_check( surf\offset_surface.basis_surface ) );
29227        ELSE
29228          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SURFACE_REPLICA' IN TYPEOF( surf ) THEN
29229            RETURN( nmsf_surface_check( surf\surface_replica.parent_surface ) );
29230          ELSE
29231            IF ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_SURFACE' IN TYPEOF( surf ) ) AND ( surf\
29232                b_spline_surface.self_intersect = FALSE ) ) OR ( surf\b_spline_surface.self_intersect = UNKNOWN ) THEN
29233              RETURN( TRUE );
29234            END_IF;
29235          END_IF;
29236        END_IF;
29237      END_IF;
29238    END_IF;
29239    RETURN( FALSE );
29240
29241  END_FUNCTION;
29242
29243  FUNCTION no_cyclic_domain_reference(
29244               ref : maths_space_or_function;
29245               used : SET OF maths_function
29246           ) : BOOLEAN;
29247
29248    LOCAL
29249      typenames : SET OF STRING := TYPEOF( ref );
29250      func      : maths_function;
29251    END_LOCAL;
29252    IF ( NOT EXISTS( ref ) ) OR ( NOT EXISTS( used ) ) THEN
29253      RETURN( FALSE );
29254    END_IF;
29255    IF ( schema_prefix + 'MATHS_SPACE' ) IN typenames THEN
29256      RETURN( TRUE );
29257    END_IF;
29258    func := ref;
29259    IF func IN used THEN
29260      RETURN( FALSE );
29261    END_IF;
29262    IF ( schema_prefix + 'CONSTANT_FUNCTION' ) IN typenames THEN
29263      RETURN( no_cyclic_domain_reference( func\constant_function.source_of_domain, used + [func] ) );
29264    END_IF;
29265    IF ( schema_prefix + 'SELECTOR_FUNCTION' ) IN typenames THEN
29266      RETURN( no_cyclic_domain_reference( func\selector_function.source_of_domain, used + [func] ) );
29267    END_IF;
29268    IF ( schema_prefix + 'PARALLEL_COMPOSED_FUNCTION' ) IN typenames THEN
29269      RETURN( no_cyclic_domain_reference( func\parallel_composed_function.source_of_domain, used + [func] ) );
29270    END_IF;
29271    RETURN( TRUE );
29272
29273  END_FUNCTION;
29274
29275  FUNCTION no_cyclic_space_reference(
29276               spc : maths_space;
29277               refs : SET OF maths_space
29278           ) : BOOLEAN;
29279
29280    LOCAL
29281      refs_plus : SET OF maths_space;
29282      types     : SET OF STRING;
29283    END_LOCAL;
29284    IF spc IN refs THEN
29285      RETURN( FALSE );
29286    END_IF;
29287    types := TYPEOF( spc );
29288    refs_plus := refs + spc;
29289    IF ( schema_prefix + 'FINITE_SPACE' ) IN types THEN
29290      RETURN( bool( SIZEOF( QUERY ( sp <* QUERY ( mem <* spc\finite_space.members | ( ( schema_prefix + 'MATHS_SPACE' ) IN
29291          TYPEOF( mem ) ) ) | ( NOT no_cyclic_space_reference( sp, refs_plus ) ) ) ) = 0 ) );
29292    END_IF;
29293    IF ( schema_prefix + 'UNIFORM_PRODUCT_SPACE' ) IN types THEN
29294      RETURN( no_cyclic_space_reference( spc\uniform_product_space.base, refs_plus ) );
29295    END_IF;
29296    IF ( schema_prefix + 'LISTED_PRODUCT_SPACE' ) IN types THEN
29297      RETURN( bool( SIZEOF( QUERY ( fac <* spc\listed_product_space.factors | ( NOT no_cyclic_space_reference( fac, refs_plus ) ) ) )
29298          = 0 ) );
29299    END_IF;
29300    IF ( schema_prefix + 'EXTENDED_TUPLE_SPACE' ) IN types THEN
29301      RETURN( no_cyclic_space_reference( spc\extended_tuple_space.base, refs_plus ) AND no_cyclic_space_reference( spc\
29302          extended_tuple_space.extender, refs_plus ) );
29303    END_IF;
29304    RETURN( TRUE );
29305
29306  END_FUNCTION;
29307
29308  FUNCTION nondecreasing(
29309               lr : LIST OF REAL
29310           ) : BOOLEAN;
29311    IF NOT EXISTS( lr ) THEN
29312      RETURN( FALSE );
29313    END_IF;
29314    REPEAT j := 2 TO SIZEOF( lr ) BY 1;
29315      IF lr[j] < lr[j - 1] THEN
29316        RETURN( FALSE );
29317      END_IF;
29318    END_REPEAT;
29319    RETURN( TRUE );
29320
29321  END_FUNCTION;
29322
29323  FUNCTION normalise(
29324               arg : vector_or_direction
29325           ) : vector_or_direction;
29326
29327    LOCAL
29328      ndim   : INTEGER;
29329      v      : direction := dummy_gri || direction( [1, 0, 0] );
29330      vec    : vector := dummy_gri || vector( v, 1 );
29331      mag    : REAL;
29332      result : vector_or_direction;
29333    END_LOCAL;
29334    IF NOT EXISTS( arg ) THEN
29335      result := ?;
29336    ELSE
29337      ndim := arg.dim;
29338      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF( arg ) THEN
29339
29340        BEGIN
29341          v := dummy_gri || direction( arg\vector.orientation.direction_ratios );
29342          IF arg\vector.magnitude = 0 THEN
29343            RETURN( ? );
29344          ELSE
29345            vec := dummy_gri || vector( v, 1 );
29346          END_IF;
29347        END;
29348      ELSE
29349        v := dummy_gri || direction( arg.direction_ratios );
29350      END_IF;
29351      mag := 0;
29352      REPEAT i := 1 TO ndim BY 1;
29353        mag := mag + ( v.direction_ratios[i] * v.direction_ratios[i] );
29354      END_REPEAT;
29355      IF mag > 0 THEN
29356        mag := SQRT( mag );
29357        REPEAT i := 1 TO ndim BY 1;
29358          v.direction_ratios[i] := v.direction_ratios[i] DIV mag;
29359        END_REPEAT;
29360        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF( arg ) THEN
29361          vec.orientation := v;
29362          result := vec;
29363        ELSE
29364          result := v;
29365        END_IF;
29366      ELSE
29367        RETURN( ? );
29368      END_IF;
29369    END_IF;
29370    RETURN( result );
29371
29372  END_FUNCTION;
29373
29374  FUNCTION number_superspace_of(
29375               spc : maths_space
29376           ) : elementary_space;
29377    IF subspace_of_es( spc, es_integers ) THEN
29378      RETURN( the_integers );
29379    END_IF;
29380    IF subspace_of_es( spc, es_reals ) THEN
29381      RETURN( the_reals );
29382    END_IF;
29383    IF subspace_of_es( spc, es_complex_numbers ) THEN
29384      RETURN( the_complex_numbers );
29385    END_IF;
29386    IF subspace_of_es( spc, es_numbers ) THEN
29387      RETURN( the_numbers );
29388    END_IF;
29389    RETURN( ? );
29390
29391  END_FUNCTION;
29392
29393  FUNCTION number_tuple_subspace_check(
29394               spc : maths_space
29395           ) : LOGICAL;
29396
29397    LOCAL
29398      factors : LIST OF maths_space;
29399      cum     : LOGICAL := TRUE;
29400      types   : SET OF STRING := stripped_typeof( spc );
29401    END_LOCAL;
29402    IF 'UNIFORM_PRODUCT_SPACE' IN types THEN
29403      RETURN( subspace_of_es( spc\uniform_product_space.base, es_numbers ) );
29404    END_IF;
29405    IF 'LISTED_PRODUCT_SPACE' IN types THEN
29406      factors := spc\listed_product_space.factors;
29407      REPEAT i := 1 TO SIZEOF( factors ) BY 1;
29408        cum := cum AND subspace_of_es( factors[i], es_numbers );
29409      END_REPEAT;
29410      RETURN( cum );
29411    END_IF;
29412    IF 'EXTENDED_TUPLE_SPACE' IN types THEN
29413      cum := subspace_of_es( spc\extended_tuple_space.extender, es_numbers );
29414      cum := cum AND number_tuple_subspace_check( spc\extended_tuple_space.base );
29415      RETURN( cum );
29416    END_IF;
29417    RETURN( FALSE );
29418
29419  END_FUNCTION;
29420
29421  FUNCTION one_tuples_of(
29422               spc : maths_space
29423           ) : tuple_space;
29424    RETURN( make_uniform_product_space( spc, 1 ) );
29425
29426  END_FUNCTION;
29427
29428  FUNCTION open_path_based_inner_boundary(
29429               input : SET OF primitive_2d
29430           ) : BOOLEAN;
29431
29432    LOCAL
29433      pass : BOOLEAN := TRUE;
29434    END_LOCAL;
29435    REPEAT i := 1 TO SIZEOF( input ) BY 1;
29436      IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH_AREA_WITH_PARAMETERS' IN TYPEOF( input[i] ) ) AND ( (
29437          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE'  IN TYPEOF( input[i]\mapped_item.mapping_source\
29438          representation_map.mapping_origin ) ) OR ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN
29439          TYPEOF( input[i]\mapped_item.mapping_source\representation_map.mapping_origin ) ) AND ( input[i]\mapped_item.
29440          mapping_source\representation_map.mapping_origin\composite_curve.closed_curve = TRUE ) ) ) THEN
29441        pass := FALSE;
29442      END_IF;
29443    END_REPEAT;
29444    RETURN( pass );
29445
29446  END_FUNCTION;
29447
29448  FUNCTION open_shell_reversed(
29449               a_shell : open_shell
29450           ) : oriented_open_shell;
29451
29452    LOCAL
29453      the_reverse : oriented_open_shell;
29454    END_LOCAL;
29455    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_OPEN_SHELL' IN TYPEOF( a_shell ) THEN
29456      the_reverse := dummy_tri || connected_face_set( a_shell\connected_face_set.cfs_faces ) || open_shell(  ) ||
29457          oriented_open_shell( a_shell\oriented_open_shell.open_shell_element, NOT a_shell\oriented_open_shell.orientation );
29458    ELSE
29459      the_reverse := dummy_tri || connected_face_set( a_shell\connected_face_set.cfs_faces ) || open_shell(  ) ||
29460          oriented_open_shell( a_shell, FALSE );
29461    END_IF;
29462    RETURN( the_reverse );
29463
29464  END_FUNCTION;
29465
29466  FUNCTION orthogonal_complement(
29467               vec : direction
29468           ) : direction;
29469
29470    LOCAL
29471      result : direction;
29472    END_LOCAL;
29473    IF ( vec.dim <> 2 ) OR ( NOT EXISTS( vec ) ) THEN
29474      RETURN( ? );
29475    ELSE
29476      result := dummy_gri || direction( [-vec.direction_ratios[2], vec.direction_ratios[1]] );
29477      RETURN( result );
29478    END_IF;
29479
29480  END_FUNCTION;
29481
29482  FUNCTION parallel_composed_function_composability_check(
29483               funcs : LIST OF maths_function;
29484               final : maths_function_select
29485           ) : BOOLEAN;
29486
29487    LOCAL
29488      finfun : maths_function := convert_to_maths_function( final );
29489      tplsp  : tuple_space := the_zero_tuple_space;
29490    END_LOCAL;
29491    REPEAT i := 1 TO SIZEOF( funcs ) BY 1;
29492      tplsp := assoc_product_space( tplsp, funcs[i].range );
29493    END_REPEAT;
29494    RETURN( compatible_spaces( tplsp, finfun.domain ) );
29495
29496  END_FUNCTION;
29497
29498  FUNCTION parallel_composed_function_domain_check(
29499               comdom : tuple_space;
29500               funcs : LIST OF maths_function
29501           ) : BOOLEAN;
29502    REPEAT i := 1 TO SIZEOF( funcs ) BY 1;
29503      IF NOT compatible_spaces( comdom, funcs[i].domain ) THEN
29504        RETURN( FALSE );
29505      END_IF;
29506    END_REPEAT;
29507    RETURN( TRUE );
29508
29509  END_FUNCTION;
29510
29511  FUNCTION partial_derivative_check(
29512               domain : tuple_space;
29513               d_vars : LIST [1 : ?] OF input_selector
29514           ) : BOOLEAN;
29515
29516    LOCAL
29517      fspc : maths_space;
29518      domn : tuple_space := domain;
29519      k    : INTEGER;
29520      dim  : INTEGER;
29521    END_LOCAL;
29522    IF ( space_dimension( domain ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( factor1( domain ) ) ) THEN
29523      domn := factor1( domain );
29524    END_IF;
29525    dim := space_dimension( domn );
29526    REPEAT i := 1 TO SIZEOF( d_vars ) BY 1;
29527      k := d_vars[i];
29528      IF k > dim THEN
29529        RETURN( FALSE );
29530      END_IF;
29531      fspc := factor_space( domn, k );
29532      IF ( NOT subspace_of_es( fspc, es_reals ) ) AND ( NOT subspace_of_es( fspc, es_complex_numbers ) ) THEN
29533        RETURN( FALSE );
29534      END_IF;
29535    END_REPEAT;
29536    RETURN( TRUE );
29537
29538  END_FUNCTION;
29539
29540  FUNCTION path_head_to_tail(
29541               a_path : path
29542           ) : LOGICAL;
29543
29544    LOCAL
29545      n : INTEGER;
29546      p : LOGICAL := TRUE;
29547    END_LOCAL;
29548    n := SIZEOF( a_path.edge_list );
29549    REPEAT i := 2 TO n BY 1;
29550      p := p AND ( a_path.edge_list[i - 1].edge_end :=: a_path.edge_list[i].edge_start );
29551    END_REPEAT;
29552    RETURN( p );
29553
29554  END_FUNCTION;
29555
29556  FUNCTION path_reversed(
29557               a_path : path
29558           ) : oriented_path;
29559
29560    LOCAL
29561      the_reverse : oriented_path;
29562    END_LOCAL;
29563    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ORIENTED_PATH' IN TYPEOF( a_path ) THEN
29564      the_reverse := dummy_tri || path( list_of_topology_reversed( a_path.edge_list ) ) || oriented_path( a_path\oriented_path.
29565          path_element, NOT a_path\oriented_path.orientation );
29566    ELSE
29567      the_reverse := dummy_tri || path( list_of_topology_reversed( a_path.edge_list ) ) || oriented_path( a_path, FALSE );
29568    END_IF;
29569    RETURN( the_reverse );
29570
29571  END_FUNCTION;
29572
29573  FUNCTION plane_angle_for_pair_in_radian(
29574               pair : kinematic_pair;
29575               angle : plane_angle_measure
29576           ) : plane_angle_measure;
29577
29578    LOCAL
29579      converted_angle : plane_angle_measure := angle;
29580      pa_units        : SET OF unit := [];
29581      link_rep        : kinematic_link_representation := representation_of_link( pair.joint.edge_start );
29582      pau             : unit;
29583      link_cntxt      : representation_context;
29584    END_LOCAL;
29585    link_cntxt := link_rep\representation.context_of_items;
29586    IF NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GLOBAL_UNIT_ASSIGNED_CONTEXT' IN TYPEOF( link_cntxt ) ) THEN
29587      RETURN( ? );
29588    END_IF;
29589    pa_units := QUERY ( unit <* link_cntxt\global_unit_assigned_context.units | (
29590        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT'  IN TYPEOF( unit ) ) );
29591    IF SIZEOF( pa_units ) <> 1 THEN
29592      RETURN( ? );
29593    END_IF;
29594    pau := pa_units[1];
29595    IF ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SI_UNIT' IN TYPEOF( pau ) ) ) AND ( NOT (
29596        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT'  IN TYPEOF( pau ) ) ) THEN
29597      RETURN( ? );
29598    END_IF;
29599    REPEAT WHILE 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT' IN TYPEOF( pau );
29600      converted_angle := converted_angle * pau\conversion_based_unit.conversion_factor.value_component;
29601      pau := pau\conversion_based_unit.conversion_factor.unit_component;
29602      IF ( ( NOT ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SI_UNIT' IN TYPEOF( pau ) ) ) AND ( NOT (
29603          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONVERSION_BASED_UNIT'  IN TYPEOF( pau ) ) ) ) OR ( NOT (
29604          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_UNIT'  IN TYPEOF( pau ) ) ) THEN
29605        RETURN( ? );
29606      END_IF;
29607    END_REPEAT;
29608    IF pau\si_unit.name <> si_unit_name.radian THEN
29609      RETURN( ? );
29610    END_IF;
29611    CASE pau\si_unit.prefix OF
29612      si_prefix.exa  :         RETURN( 1.e+18 * converted_angle );
29613      si_prefix.peta :         RETURN( 1.e+15 * converted_angle );
29614      si_prefix.tera :         RETURN( 1000000000000 * converted_angle );
29615      si_prefix.giga :         RETURN( 1000000000 * converted_angle );
29616      si_prefix.mega :         RETURN( 1000000 * converted_angle );
29617      si_prefix.kilo :         RETURN( 1000 * converted_angle );
29618      si_prefix.hecto :         RETURN( 100 * converted_angle );
29619      si_prefix.deca :         RETURN( 10 * converted_angle );
29620      si_prefix.deci :         RETURN( 0.1 * converted_angle );
29621      si_prefix.centi :         RETURN( 0.01 * converted_angle );
29622      si_prefix.milli :         RETURN( 0.001 * converted_angle );
29623      si_prefix.micro :         RETURN( 1.e-06 * converted_angle );
29624      si_prefix.nano :         RETURN( 1.e-09 * converted_angle );
29625      si_prefix.pico :         RETURN( 1.e-12 * converted_angle );
29626      si_prefix.femto :         RETURN( 1.e-15 * converted_angle );
29627      si_prefix.atto :         RETURN( 1.e-18 * converted_angle );
29628      OTHERWISE      :         RETURN( converted_angle );
29629      END_CASE;
29630
29631  END_FUNCTION;
29632
29633  FUNCTION real_max(
29634               spc : maths_space
29635           ) : REAL;
29636
29637    LOCAL
29638      types : SET OF STRING := TYPEOF( spc );
29639    END_LOCAL;
29640    IF ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN types THEN
29641      RETURN( spc\finite_integer_interval.max );
29642    END_IF;
29643    IF ( schema_prefix + 'INTEGER_INTERVAL_TO_MAX' ) IN types THEN
29644      RETURN( spc\integer_interval_to_max.max );
29645    END_IF;
29646    IF ( schema_prefix + 'FINITE_REAL_INTERVAL' ) IN types THEN
29647      RETURN( spc\finite_real_interval.max );
29648    END_IF;
29649    IF ( schema_prefix + 'REAL_INTERVAL_TO_MAX' ) IN types THEN
29650      RETURN( spc\real_interval_to_max.max );
29651    END_IF;
29652    RETURN( ? );
29653
29654  END_FUNCTION;
29655
29656  FUNCTION real_min(
29657               spc : maths_space
29658           ) : REAL;
29659
29660    LOCAL
29661      types : SET OF STRING := TYPEOF( spc );
29662    END_LOCAL;
29663    IF ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN types THEN
29664      RETURN( spc\finite_integer_interval.min );
29665    END_IF;
29666    IF ( schema_prefix + 'INTEGER_INTERVAL_FROM_MIN' ) IN types THEN
29667      RETURN( spc\integer_interval_from_min.min );
29668    END_IF;
29669    IF ( schema_prefix + 'FINITE_REAL_INTERVAL' ) IN types THEN
29670      RETURN( spc\finite_real_interval.min );
29671    END_IF;
29672    IF ( schema_prefix + 'REAL_INTERVAL_FROM_MIN' ) IN types THEN
29673      RETURN( spc\real_interval_from_min.min );
29674    END_IF;
29675    RETURN( ? );
29676
29677  END_FUNCTION;
29678
29679  FUNCTION relating_shape_representations_of_extreme_values(
29680               item : location_of_extreme_value_select
29681           ) : SET OF shape_representation;
29682
29683    LOCAL
29684      exti    : SET OF extreme_instance := [];
29685      sdqr    : SET OF shape_data_quality_inspection_result_representation := [];
29686      results : SET OF shape_representation := [];
29687      sdisr   : SET OF shape_data_quality_inspected_shape_and_result_relationship := [];
29688      sdiir   : SET OF shape_data_quality_inspection_instance_report := [];
29689      ii_ei   : SET OF instance_report_item_with_extreme_instances := [];
29690    END_LOCAL;
29691    exti := exti + bag_to_set( USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'EXTREME_INSTANCE.' +
29692        'LOCATIONS_OF_EXTREME_VALUE'  ) );
29693    REPEAT i := 1 TO HIINDEX( exti ) BY 1;
29694      ii_ei := ii_ei + bag_to_set( USEDIN( exti[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
29695          'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES.'  + 'EXTREME_INSTANCES' ) );
29696    END_REPEAT;
29697    REPEAT i := 1 TO HIINDEX( ii_ei ) BY 1;
29698      sdiir := sdiir + bag_to_set( USEDIN( ii_ei[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
29699          'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT.'  + 'INSPECTED_INSTANCES' ) );
29700    END_REPEAT;
29701    REPEAT i := 1 TO HIINDEX( sdiir ) BY 1;
29702      sdqr := sdqr + QUERY ( i1 <* bag_to_set( USEDIN( sdiir[i].inspection_result,
29703          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS'  ) ) | ( (
29704          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'SHAPE_DATA_QUALITY_INSPECTION_RESULT_REPRESENTATION' ) IN
29705          TYPEOF( i1 ) ) );
29706    END_REPEAT;
29707    REPEAT i := 1 TO HIINDEX( sdqr ) BY 1;
29708      sdisr := sdisr + bag_to_set( USEDIN( sdqr[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
29709          'SHAPE_DATA_QUALITY_INSPECTED_SHAPE_AND_RESULT_RELATIONSHIP.'  + 'REP_2' ) );
29710    END_REPEAT;
29711    REPEAT i := 1 TO HIINDEX( sdisr ) BY 1;
29712      results := results + sdisr[i].rep_1;
29713    END_REPEAT;
29714    RETURN( results );
29715
29716  END_FUNCTION;
29717
29718  FUNCTION remove_first(
29719               alist : LIST OF GENERIC:gen
29720           ) : LIST OF GENERIC:gen;
29721
29722    LOCAL
29723      blist : LIST OF GENERIC:gen := alist;
29724    END_LOCAL;
29725    IF SIZEOF( blist ) > 0 THEN
29726      REMOVE( blist, 1 );
29727    END_IF;
29728    RETURN( blist );
29729
29730  END_FUNCTION;
29731
29732  FUNCTION repackage(
29733               tspace : tuple_space;
29734               repckg : repackage_options
29735           ) : tuple_space;
29736    CASE repckg OF
29737      ro_nochange     :         RETURN( tspace );
29738      ro_wrap_as_tuple :         RETURN( one_tuples_of( tspace ) );
29739      ro_unwrap_tuple :         RETURN( factor1( tspace ) );
29740      OTHERWISE       :         RETURN( ? );
29741      END_CASE;
29742
29743  END_FUNCTION;
29744
29745  FUNCTION representation_of_link(
29746               link : kinematic_link
29747           ) : kinematic_link_representation;
29748    RETURN( ? );
29749
29750  END_FUNCTION;
29751
29752  FUNCTION scalar_times_vector(
29753               scalar : REAL;
29754               vec : vector_or_direction
29755           ) : vector;
29756
29757    LOCAL
29758      v      : direction;
29759      mag    : REAL;
29760      result : vector;
29761    END_LOCAL;
29762    IF ( NOT EXISTS( scalar ) ) OR ( NOT EXISTS( vec ) ) THEN
29763      RETURN( ? );
29764    ELSE
29765      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF( vec ) THEN
29766        v := dummy_gri || direction( vec\vector.orientation.direction_ratios );
29767        mag := scalar * vec\vector.magnitude;
29768      ELSE
29769        v := dummy_gri || direction( vec.direction_ratios );
29770        mag := scalar;
29771      END_IF;
29772      IF mag < 0 THEN
29773        REPEAT i := 1 TO SIZEOF( v.direction_ratios ) BY 1;
29774          v.direction_ratios[i] := -v.direction_ratios[i];
29775        END_REPEAT;
29776        mag := -mag;
29777      END_IF;
29778      result := dummy_gri || vector( normalise( v ), mag );
29779    END_IF;
29780    RETURN( result );
29781
29782  END_FUNCTION;
29783
29784  FUNCTION second_proj_axis(
29785               z_axis, x_axis, arg : direction
29786           ) : direction;
29787
29788    LOCAL
29789      temp   : vector;
29790      v      : direction;
29791      y_axis : vector;
29792    END_LOCAL;
29793    IF NOT EXISTS( arg ) THEN
29794      v := dummy_gri || direction( [0, 1, 0] );
29795    ELSE
29796      v := arg;
29797    END_IF;
29798    temp := scalar_times_vector( dot_product( v, z_axis ), z_axis );
29799    y_axis := vector_difference( v, temp );
29800    temp := scalar_times_vector( dot_product( v, x_axis ), x_axis );
29801    y_axis := vector_difference( y_axis, temp );
29802    y_axis := normalise( y_axis );
29803    RETURN( y_axis.orientation );
29804
29805  END_FUNCTION;
29806
29807  FUNCTION set_of_topology_reversed(
29808               a_set : set_of_reversible_topology_item
29809           ) : set_of_reversible_topology_item;
29810
29811    LOCAL
29812      the_reverse : set_of_reversible_topology_item;
29813    END_LOCAL;
29814    the_reverse := [];
29815    REPEAT i := 1 TO SIZEOF( a_set ) BY 1;
29816      the_reverse := the_reverse + topology_reversed( a_set[i] );
29817    END_REPEAT;
29818    RETURN( the_reverse );
29819
29820  END_FUNCTION;
29821
29822  FUNCTION shape_of_array(
29823               func : maths_function
29824           ) : LIST OF positive_integer;
29825
29826    LOCAL
29827      temp   : maths_space;
29828      tspace : tuple_space;
29829      result : LIST OF positive_integer := [];
29830    END_LOCAL;
29831    IF ( schema_prefix + 'EXPLICIT_TABLE_FUNCTION' ) IN TYPEOF( func ) THEN
29832      RETURN( func\explicit_table_function.shape );
29833    END_IF;
29834    tspace := func.domain;
29835    IF ( space_dimension( tspace ) = 1 ) AND ( ( schema_prefix + 'TUPLE_SPACE' ) IN TYPEOF( factor1( tspace ) ) ) THEN
29836      tspace := factor1( tspace );
29837    END_IF;
29838    REPEAT i := 1 TO space_dimension( tspace ) BY 1;
29839      temp := factor_space( tspace, i );
29840      IF NOT ( ( schema_prefix + 'FINITE_INTEGER_INTERVAL' ) IN TYPEOF( temp ) ) THEN
29841        RETURN( ? );
29842      END_IF;
29843      INSERT( result, temp\finite_integer_interval.size, i - 1 );
29844    END_REPEAT;
29845    RETURN( result );
29846
29847  END_FUNCTION;
29848
29849  FUNCTION shell_reversed(
29850               a_shell : shell
29851           ) : shell;
29852    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OPEN_SHELL' IN TYPEOF( a_shell ) THEN
29853      RETURN( open_shell_reversed( a_shell ) );
29854    ELSE
29855      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CLOSED_SHELL' IN TYPEOF( a_shell ) THEN
29856        RETURN( closed_shell_reversed( a_shell ) );
29857      ELSE
29858        RETURN( ? );
29859      END_IF;
29860    END_IF;
29861
29862  END_FUNCTION;
29863
29864  FUNCTION simplify_function_application(
29865               expr : function_application
29866           ) : maths_value;
29867
29868    FUNCTION ctmv(
29869                 x : GENERIC:g
29870             ) : maths_value;
29871      RETURN( convert_to_maths_value( x ) );
29872
29873    END_FUNCTION;
29874
29875    FUNCTION good_t(
29876                 v : maths_value;
29877                 tn : STRING
29878             ) : BOOLEAN;
29879
29880      LOCAL
29881        tpl : LIST OF maths_value;
29882      END_LOCAL;
29883      IF 'LIST' IN TYPEOF( v ) THEN
29884        tpl := v;
29885        REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
29886          IF NOT ( tn IN TYPEOF( tpl[i] ) ) THEN
29887            RETURN( FALSE );
29888          END_IF;
29889        END_REPEAT;
29890        RETURN( TRUE );
29891      END_IF;
29892      RETURN( FALSE );
29893
29894    END_FUNCTION;
29895
29896    FUNCTION makec(
29897                 x, y : REAL
29898             ) : complex_number_literal;
29899      RETURN( make_complex_number_literal( x, y ) );
29900
29901    END_FUNCTION;
29902
29903    PROCEDURE parts(
29904                  c : complex_number_literal;
29905                  x, y : REAL      );
29906      x := c.real_part;
29907      y := c.imag_part;
29908
29909    END_PROCEDURE;
29910
29911    CONSTANT
29912      cnlit : STRING :=
29913               schema_prefix + 'COMPLEX_NUMBER_LITERAL';
29914    END_CONSTANT;
29915
29916    LOCAL
29917      pairs         : SET [1 : ?] OF LIST [2 : 2] OF maths_value;
29918      boo           : BOOLEAN;
29919      mem           : SET OF maths_value := [];
29920      bi2           : BINARY;
29921      lgc           : LOGICAL;
29922      j             : INTEGER;
29923      k             : INTEGER;
29924      n             : INTEGER;
29925      p             : REAL;
29926      q             : REAL;
29927      r             : REAL;
29928      s             : REAL;
29929      t             : REAL;
29930      u             : REAL;
29931      v             : maths_value;
29932      bin           : BINARY;
29933      cum           : LOGICAL;
29934      v2            : maths_value;
29935      v3            : maths_value;
29936      v1            : maths_value;
29937      vlist         : LIST OF maths_value := [];
29938      tpl           : LIST OF maths_value;
29939      is_elementary : BOOLEAN := FALSE;
29940      st2           : STRING;
29941      types         : SET OF STRING := stripped_typeof( expr.func );
29942      ef_val        : elementary_function_enumerators;
29943      tp2           : LIST OF maths_value;
29944      str           : STRING;
29945      gexpr         : generic_expression;
29946    END_LOCAL;
29947    REPEAT i := 1 TO SIZEOF( expr.arguments ) BY 1;
29948      v := simplify_maths_value( expr.arguments[i] );
29949      INSERT( vlist, v, i - 1 );
29950    END_REPEAT;
29951    IF SIZEOF( vlist ) >= 1 THEN
29952      v1 := vlist[1];
29953    END_IF;
29954    IF SIZEOF( vlist ) >= 2 THEN
29955      v2 := vlist[2];
29956    END_IF;
29957    IF SIZEOF( vlist ) >= 3 THEN
29958      v3 := vlist[3];
29959    END_IF;
29960    IF 'ELEMENTARY_FUNCTION_ENUMERATORS' IN types THEN
29961      ef_val := expr.func;
29962      is_elementary := TRUE;
29963    END_IF;
29964    IF 'ELEMENTARY_FUNCTION' IN types THEN
29965      ef_val := expr.func\elementary_function.func_id;
29966      is_elementary := TRUE;
29967    END_IF;
29968    IF is_elementary THEN
29969      CASE ef_val OF
29970        ef_and            :
29971          BEGIN
29972            cum := TRUE;
29973            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
29974              IF 'LOGICAL' IN TYPEOF( vlist[i] ) THEN
29975                lgc := vlist[i];
29976                cum := cum AND lgc;
29977                IF lgc = FALSE THEN
29978                  RETURN( ctmv( FALSE ) );
29979                END_IF;
29980                REMOVE( vlist, i );
29981              END_IF;
29982            END_REPEAT;
29983            IF SIZEOF( vlist ) = 0 THEN
29984              RETURN( ctmv( cum ) );
29985            END_IF;
29986            IF cum <> TRUE THEN
29987              INSERT( vlist, ctmv( cum ), 0 );
29988            END_IF;
29989            IF SIZEOF( vlist ) = 1 THEN
29990              RETURN( vlist[1] );
29991            END_IF;
29992          END;
29993        ef_or             :
29994          BEGIN
29995            cum := FALSE;
29996            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
29997              IF 'LOGICAL' IN TYPEOF( vlist[i] ) THEN
29998                lgc := vlist[i];
29999                cum := cum OR lgc;
30000                IF lgc = TRUE THEN
30001                  RETURN( ctmv( TRUE ) );
30002                END_IF;
30003                REMOVE( vlist, i );
30004              END_IF;
30005            END_REPEAT;
30006            IF SIZEOF( vlist ) = 0 THEN
30007              RETURN( ctmv( cum ) );
30008            END_IF;
30009            IF cum <> FALSE THEN
30010              INSERT( vlist, ctmv( cum ), 0 );
30011            END_IF;
30012            IF SIZEOF( vlist ) = 1 THEN
30013              RETURN( vlist[1] );
30014            END_IF;
30015          END;
30016        ef_not            :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
30017            lgc := v1;
30018            RETURN( ctmv( NOT lgc ) );
30019          END_IF;
30020        ef_xor            :
30021          BEGIN
30022            IF 'LOGICAL' IN TYPEOF( v1 ) THEN
30023              lgc := v1;
30024              IF 'LOGICAL' IN TYPEOF( v2 ) THEN
30025                cum := v2;
30026                RETURN( ctmv( lgc XOR cum ) );
30027              ELSE
30028                IF lgc = FALSE THEN
30029                  RETURN( ctmv( v2 ) );
30030                ELSE
30031                  IF lgc = UNKNOWN THEN
30032                    RETURN( ctmv( UNKNOWN ) );
30033                  ELSE
30034                    RETURN( make_function_application( ef_not, [v2] ) );
30035                  END_IF;
30036                END_IF;
30037              END_IF;
30038            ELSE
30039              IF 'LOGICAL' IN TYPEOF( v2 ) THEN
30040                lgc := v2;
30041                IF lgc = FALSE THEN
30042                  RETURN( ctmv( v1 ) );
30043                ELSE
30044                  IF lgc = UNKNOWN THEN
30045                    RETURN( ctmv( UNKNOWN ) );
30046                  ELSE
30047                    RETURN( make_function_application( ef_not, [v1] ) );
30048                  END_IF;
30049                END_IF;
30050              END_IF;
30051            END_IF;
30052          END;
30053        ef_negate_i       :           IF 'INTEGER' IN TYPEOF( v1 ) THEN
30054            j := v1;
30055            RETURN( ctmv( -j ) );
30056          END_IF;
30057        ef_add_i          :
30058          BEGIN
30059            j := 0;
30060            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30061              IF 'INTEGER' IN TYPEOF( vlist[i] ) THEN
30062                k := vlist[i];
30063                j := j + k;
30064                REMOVE( vlist, i );
30065              END_IF;
30066            END_REPEAT;
30067            IF SIZEOF( vlist ) = 0 THEN
30068              RETURN( ctmv( j ) );
30069            END_IF;
30070            IF j <> 0 THEN
30071              INSERT( vlist, ctmv( j ), 0 );
30072            END_IF;
30073            IF SIZEOF( vlist ) = 1 THEN
30074              RETURN( vlist[1] );
30075            END_IF;
30076          END;
30077        ef_subtract_i     :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30078            j := v1;
30079            k := v2;
30080            RETURN( ctmv( j - k ) );
30081          END_IF;
30082        ef_multiply_i     :
30083          BEGIN
30084            j := 1;
30085            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30086              IF 'INTEGER' IN TYPEOF( vlist[i] ) THEN
30087                k := vlist[i];
30088                j := j * k;
30089                REMOVE( vlist, i );
30090              END_IF;
30091            END_REPEAT;
30092            IF SIZEOF( vlist ) = 0 THEN
30093              RETURN( ctmv( j ) );
30094            END_IF;
30095            IF j <> 1 THEN
30096              INSERT( vlist, ctmv( j ), 0 );
30097            END_IF;
30098            IF SIZEOF( vlist ) = 1 THEN
30099              RETURN( vlist[1] );
30100            END_IF;
30101          END;
30102        ef_divide_i       :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30103            j := v1;
30104            k := v2;
30105            RETURN( ctmv( j DIV k ) );
30106          END_IF;
30107        ef_mod_i          :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30108            j := v1;
30109            k := v2;
30110            RETURN( ctmv( j MOD k ) );
30111          END_IF;
30112        ef_exponentiate_i :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30113            j := v1;
30114            k := v2;
30115            n := 1;
30116            REPEAT i := 1 TO ABS( k ) BY 1;
30117              n := n * j;
30118            END_REPEAT;
30119            IF k < 0 THEN
30120              n := 1 DIV n;
30121            END_IF;
30122            RETURN( ctmv( n ) );
30123          END_IF;
30124        ef_eq_i           :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30125            j := v1;
30126            k := v2;
30127            RETURN( ctmv( j = k ) );
30128          END_IF;
30129        ef_ne_i           :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30130            j := v1;
30131            k := v2;
30132            RETURN( ctmv( j <> k ) );
30133          END_IF;
30134        ef_gt_i           :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30135            j := v1;
30136            k := v2;
30137            RETURN( ctmv( j > k ) );
30138          END_IF;
30139        ef_lt_i           :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30140            j := v1;
30141            k := v2;
30142            RETURN( ctmv( j < k ) );
30143          END_IF;
30144        ef_ge_i           :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30145            j := v1;
30146            k := v2;
30147            RETURN( ctmv( j >= k ) );
30148          END_IF;
30149        ef_le_i           :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30150            j := v1;
30151            k := v2;
30152            RETURN( ctmv( j <= k ) );
30153          END_IF;
30154        ef_abs_i          :           IF 'INTEGER' IN TYPEOF( v1 ) THEN
30155            j := v1;
30156            RETURN( ctmv( ABS( j ) ) );
30157          END_IF;
30158        ef_max_i          :
30159          BEGIN
30160            boo := FALSE;
30161            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30162              IF 'INTEGER' IN TYPEOF( vlist[i] ) THEN
30163                IF boo THEN
30164                  k := vlist[i];
30165                  IF k > j THEN
30166                    j := k;
30167                  END_IF;
30168                ELSE
30169                  j := vlist[i];
30170                  boo := TRUE;
30171                END_IF;
30172                REMOVE( vlist, i );
30173              END_IF;
30174            END_REPEAT;
30175            IF SIZEOF( vlist ) = 0 THEN
30176              RETURN( ctmv( j ) );
30177            END_IF;
30178            IF boo THEN
30179              INSERT( vlist, ctmv( j ), 0 );
30180            END_IF;
30181            IF SIZEOF( vlist ) = 1 THEN
30182              RETURN( vlist[1] );
30183            END_IF;
30184          END;
30185        ef_min_i          :
30186          BEGIN
30187            boo := FALSE;
30188            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30189              IF 'INTEGER' IN TYPEOF( vlist[i] ) THEN
30190                IF boo THEN
30191                  k := vlist[i];
30192                  IF k < j THEN
30193                    j := k;
30194                  END_IF;
30195                ELSE
30196                  j := vlist[i];
30197                  boo := TRUE;
30198                END_IF;
30199                REMOVE( vlist, i );
30200              END_IF;
30201            END_REPEAT;
30202            IF SIZEOF( vlist ) = 0 THEN
30203              RETURN( ctmv( j ) );
30204            END_IF;
30205            IF boo THEN
30206              INSERT( vlist, ctmv( j ), 0 );
30207            END_IF;
30208            IF SIZEOF( vlist ) = 1 THEN
30209              RETURN( vlist[1] );
30210            END_IF;
30211          END;
30212        ef_negate_r       :           IF 'REAL' IN TYPEOF( v1 ) THEN
30213            r := v1;
30214            RETURN( ctmv( -r ) );
30215          END_IF;
30216        ef_reciprocal_r   :           IF 'REAL' IN TYPEOF( v1 ) THEN
30217            r := v1;
30218            RETURN( ctmv( 1 DIV r ) );
30219          END_IF;
30220        ef_add_r          :
30221          BEGIN
30222            r := 0;
30223            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30224              IF 'REAL' IN TYPEOF( vlist[i] ) THEN
30225                s := vlist[i];
30226                r := r + s;
30227                REMOVE( vlist, i );
30228              END_IF;
30229            END_REPEAT;
30230            IF SIZEOF( vlist ) = 0 THEN
30231              RETURN( ctmv( r ) );
30232            END_IF;
30233            IF r <> 0 THEN
30234              INSERT( vlist, ctmv( r ), 0 );
30235            END_IF;
30236            IF SIZEOF( vlist ) = 1 THEN
30237              RETURN( vlist[1] );
30238            END_IF;
30239          END;
30240        ef_subtract_r     :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30241            r := v1;
30242            s := v2;
30243            RETURN( ctmv( r - s ) );
30244          END_IF;
30245        ef_multiply_r     :
30246          BEGIN
30247            r := 1;
30248            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30249              IF 'REAL' IN TYPEOF( vlist[i] ) THEN
30250                s := vlist[i];
30251                r := r * s;
30252                REMOVE( vlist, i );
30253              END_IF;
30254            END_REPEAT;
30255            IF SIZEOF( vlist ) = 0 THEN
30256              RETURN( ctmv( r ) );
30257            END_IF;
30258            IF r <> 1 THEN
30259              INSERT( vlist, ctmv( r ), 0 );
30260            END_IF;
30261            IF SIZEOF( vlist ) = 1 THEN
30262              RETURN( vlist[1] );
30263            END_IF;
30264          END;
30265        ef_divide_r       :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30266            r := v1;
30267            s := v2;
30268            RETURN( ctmv( r DIV s ) );
30269          END_IF;
30270        ef_mod_r          :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30271            r := v1;
30272            s := v2;
30273            t := r DIV s;
30274            j := t DIV 1;
30275            IF ( t < 0 ) AND ( j <> t ) THEN
30276              j := j - 1;
30277            END_IF;
30278            RETURN( ctmv( r - ( j * s ) ) );
30279          END_IF;
30280        ef_exponentiate_r :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30281            r := v1;
30282            s := v2;
30283            RETURN( ctmv( r ** s ) );
30284          END_IF;
30285        ef_exponentiate_ri :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30286            r := v1;
30287            k := v2;
30288            t := 1;
30289            REPEAT i := 1 TO ABS( k ) BY 1;
30290              t := t * r;
30291            END_REPEAT;
30292            IF k < 0 THEN
30293              t := 1 DIV t;
30294            END_IF;
30295            RETURN( ctmv( t ) );
30296          END_IF;
30297        ef_eq_r           :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30298            r := v1;
30299            s := v2;
30300            RETURN( ctmv( r = s ) );
30301          END_IF;
30302        ef_ne_r           :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30303            r := v1;
30304            s := v2;
30305            RETURN( ctmv( r <> s ) );
30306          END_IF;
30307        ef_gt_r           :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30308            r := v1;
30309            s := v2;
30310            RETURN( ctmv( r > s ) );
30311          END_IF;
30312        ef_lt_r           :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30313            r := v1;
30314            s := v2;
30315            RETURN( ctmv( r < s ) );
30316          END_IF;
30317        ef_ge_r           :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30318            r := v1;
30319            s := v2;
30320            RETURN( ctmv( r >= s ) );
30321          END_IF;
30322        ef_le_r           :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30323            r := v1;
30324            s := v2;
30325            RETURN( ctmv( r <= s ) );
30326          END_IF;
30327        ef_abs_r          :           IF 'REAL' IN TYPEOF( v1 ) THEN
30328            r := v1;
30329            RETURN( ctmv( ABS( r ) ) );
30330          END_IF;
30331        ef_max_r          :
30332          BEGIN
30333            boo := FALSE;
30334            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30335              IF 'REAL' IN TYPEOF( vlist[i] ) THEN
30336                IF boo THEN
30337                  s := vlist[i];
30338                  IF s > r THEN
30339                    r := s;
30340                  END_IF;
30341                ELSE
30342                  r := vlist[i];
30343                  boo := TRUE;
30344                END_IF;
30345                REMOVE( vlist, i );
30346              END_IF;
30347            END_REPEAT;
30348            IF SIZEOF( vlist ) = 0 THEN
30349              RETURN( ctmv( r ) );
30350            END_IF;
30351            IF boo THEN
30352              INSERT( vlist, ctmv( r ), 0 );
30353            END_IF;
30354            IF SIZEOF( vlist ) = 1 THEN
30355              RETURN( vlist[1] );
30356            END_IF;
30357          END;
30358        ef_min_r          :
30359          BEGIN
30360            boo := FALSE;
30361            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30362              IF 'REAL' IN TYPEOF( vlist[i] ) THEN
30363                IF boo THEN
30364                  s := vlist[i];
30365                  IF s < r THEN
30366                    r := s;
30367                  END_IF;
30368                ELSE
30369                  r := vlist[i];
30370                  boo := TRUE;
30371                END_IF;
30372                REMOVE( vlist, i );
30373              END_IF;
30374            END_REPEAT;
30375            IF SIZEOF( vlist ) = 0 THEN
30376              RETURN( ctmv( r ) );
30377            END_IF;
30378            IF boo THEN
30379              INSERT( vlist, ctmv( r ), 0 );
30380            END_IF;
30381            IF SIZEOF( vlist ) = 1 THEN
30382              RETURN( vlist[1] );
30383            END_IF;
30384          END;
30385        ef_acos_r         :           IF 'REAL' IN TYPEOF( v1 ) THEN
30386            r := v1;
30387            RETURN( ctmv( ACOS( r ) ) );
30388          END_IF;
30389        ef_asin_r         :           IF 'REAL' IN TYPEOF( v1 ) THEN
30390            r := v1;
30391            RETURN( ctmv( ASIN( r ) ) );
30392          END_IF;
30393        ef_atan2_r        :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30394            r := v1;
30395            s := v2;
30396            RETURN( ctmv( atan2( r, s ) ) );
30397          END_IF;
30398        ef_cos_r          :           IF 'REAL' IN TYPEOF( v1 ) THEN
30399            r := v1;
30400            RETURN( ctmv( COS( r ) ) );
30401          END_IF;
30402        ef_exp_r          :           IF 'REAL' IN TYPEOF( v1 ) THEN
30403            r := v1;
30404            RETURN( ctmv( EXP( r ) ) );
30405          END_IF;
30406        ef_ln_r           :           IF 'REAL' IN TYPEOF( v1 ) THEN
30407            r := v1;
30408            RETURN( ctmv( LOG( r ) ) );
30409          END_IF;
30410        ef_log2_r         :           IF 'REAL' IN TYPEOF( v1 ) THEN
30411            r := v1;
30412            RETURN( ctmv( LOG2( r ) ) );
30413          END_IF;
30414        ef_log10_r        :           IF 'REAL' IN TYPEOF( v1 ) THEN
30415            r := v1;
30416            RETURN( ctmv( LOG10( r ) ) );
30417          END_IF;
30418        ef_sin_r          :           IF 'REAL' IN TYPEOF( v1 ) THEN
30419            r := v1;
30420            RETURN( ctmv( SIN( r ) ) );
30421          END_IF;
30422        ef_sqrt_r         :           IF 'REAL' IN TYPEOF( v1 ) THEN
30423            r := v1;
30424            RETURN( ctmv( SQRT( r ) ) );
30425          END_IF;
30426        ef_tan_r          :           IF 'REAL' IN TYPEOF( v1 ) THEN
30427            r := v1;
30428            RETURN( ctmv( TAN( r ) ) );
30429          END_IF;
30430        ef_form_c         :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND ( 'REAL' IN TYPEOF( v2 ) ) THEN
30431            r := v1;
30432            s := v2;
30433            RETURN( makec( r, s ) );
30434          END_IF;
30435        ef_rpart_c        :           IF cnlit IN TYPEOF( v1 ) THEN
30436            RETURN( ctmv( v1\complex_number_literal.real_part ) );
30437          END_IF;
30438        ef_ipart_c        :           IF cnlit IN TYPEOF( v1 ) THEN
30439            RETURN( ctmv( v1\complex_number_literal.imag_part ) );
30440          END_IF;
30441        ef_negate_c       :           IF cnlit IN TYPEOF( v1 ) THEN
30442            parts( v1, p, q );
30443            RETURN( makec( -p, -q ) );
30444          END_IF;
30445        ef_reciprocal_c   :           IF cnlit IN TYPEOF( v1 ) THEN
30446            parts( v1, p, q );
30447            t := ( p * p ) + ( q * q );
30448            RETURN( makec( p DIV t, ( -q ) DIV t ) );
30449          END_IF;
30450        ef_add_c          :
30451          BEGIN
30452            p := 0;
30453            q := 0;
30454            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30455              IF cnlit IN TYPEOF( vlist[i] ) THEN
30456                parts( vlist[i], r, s );
30457                p := p + r;
30458                q := q + s;
30459                REMOVE( vlist, i );
30460              END_IF;
30461            END_REPEAT;
30462            IF SIZEOF( vlist ) = 0 THEN
30463              RETURN( makec( p, q ) );
30464            END_IF;
30465            IF ( ( p * p ) + ( q * q ) ) <> 0 THEN
30466              INSERT( vlist, makec( p, q ), 0 );
30467            END_IF;
30468            IF SIZEOF( vlist ) = 1 THEN
30469              RETURN( vlist[1] );
30470            END_IF;
30471          END;
30472        ef_subtract_c     :           IF ( cnlit IN TYPEOF( v1 ) ) AND ( cnlit IN TYPEOF( v2 ) ) THEN
30473            parts( v1, p, q );
30474            parts( v2, r, s );
30475            RETURN( makec( p - r, q - s ) );
30476          END_IF;
30477        ef_multiply_c     :
30478          BEGIN
30479            p := 1;
30480            q := 0;
30481            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30482              IF cnlit IN TYPEOF( vlist[i] ) THEN
30483                parts( vlist[i], r, s );
30484                p := ( p * r ) - ( q * s );
30485                q := ( p * s ) + ( q * r );
30486                REMOVE( vlist, i );
30487              END_IF;
30488            END_REPEAT;
30489            IF SIZEOF( vlist ) = 0 THEN
30490              RETURN( makec( p, q ) );
30491            END_IF;
30492            IF ( p <> 1 ) OR ( q <> 0 ) THEN
30493              INSERT( vlist, makec( p, q ), 0 );
30494            END_IF;
30495            IF SIZEOF( vlist ) = 1 THEN
30496              RETURN( vlist[1] );
30497            END_IF;
30498          END;
30499        ef_divide_c       :           IF ( cnlit IN TYPEOF( v1 ) ) AND ( cnlit IN TYPEOF( v2 ) ) THEN
30500            parts( v1, p, q );
30501            parts( v2, r, s );
30502            t := ( r * r ) + ( s * s );
30503            RETURN( makec( ( ( p * r ) + ( q * s ) ) DIV t, ( ( q * r ) - ( p * s ) ) DIV t ) );
30504          END_IF;
30505        ef_exponentiate_c :           IF ( cnlit IN TYPEOF( v1 ) ) AND ( cnlit IN TYPEOF( v2 ) ) THEN
30506            parts( v1, p, q );
30507            parts( v2, r, s );
30508            t := 0.5 * LOG( ( p * p ) + ( q * q ) );
30509            u := atan2( q, p );
30510            p := ( r * t ) - ( s * u );
30511            q := ( r * u ) + ( s * t );
30512            r := EXP( p );
30513            RETURN( makec( r * COS( q ), r * SIN( q ) ) );
30514          END_IF;
30515        ef_exponentiate_ci :           IF ( cnlit IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30516            parts( v1, p, q );
30517            k := v2;
30518            r := 1;
30519            s := 0;
30520            REPEAT i := 1 TO ABS( k ) BY 1;
30521              r := ( p * r ) - ( q * s );
30522              s := ( p * s ) + ( q * r );
30523            END_REPEAT;
30524            IF k < 0 THEN
30525              t := ( r * r ) + ( s * s );
30526              r := r DIV t;
30527              s := ( -s ) DIV t;
30528            END_IF;
30529            RETURN( makec( r, s ) );
30530          END_IF;
30531        ef_eq_c           :           IF ( cnlit IN TYPEOF( v1 ) ) AND ( cnlit IN TYPEOF( v2 ) ) THEN
30532            parts( v1, p, q );
30533            parts( v2, r, s );
30534            RETURN( ctmv( ( p = r ) AND ( q = s ) ) );
30535          END_IF;
30536        ef_ne_c           :           IF ( cnlit IN TYPEOF( v1 ) ) AND ( cnlit IN TYPEOF( v2 ) ) THEN
30537            parts( v1, p, q );
30538            parts( v2, r, s );
30539            RETURN( ctmv( ( p <> r ) OR ( q <> s ) ) );
30540          END_IF;
30541        ef_conjugate_c    :           IF cnlit IN TYPEOF( v1 ) THEN
30542            parts( v1, p, q );
30543            RETURN( makec( p, -q ) );
30544          END_IF;
30545        ef_abs_c          :           IF cnlit IN TYPEOF( v1 ) THEN
30546            parts( v1, p, q );
30547            RETURN( ctmv( SQRT( ( p * p ) + ( q * q ) ) ) );
30548          END_IF;
30549        ef_arg_c          :           IF cnlit IN TYPEOF( v1 ) THEN
30550            parts( v1, p, q );
30551            RETURN( ctmv( atan2( q, p ) ) );
30552          END_IF;
30553        ef_cos_c          :           IF cnlit IN TYPEOF( v1 ) THEN
30554            parts( v1, p, q );
30555            t := 0.5 * EXP( -q );
30556            u := 0.5 * EXP( q );
30557            RETURN( makec( ( t + u ) * COS( p ), ( t - u ) * SIN( p ) ) );
30558          END_IF;
30559        ef_exp_c          :           IF cnlit IN TYPEOF( v1 ) THEN
30560            parts( v1, p, q );
30561            RETURN( makec( EXP( p ) * COS( q ), EXP( p ) * SIN( q ) ) );
30562          END_IF;
30563        ef_ln_c           :           IF cnlit IN TYPEOF( v1 ) THEN
30564            parts( v1, p, q );
30565            RETURN( makec( 0.5 * LOG( ( p * p ) + ( q * q ) ), atan2( q, p ) ) );
30566          END_IF;
30567        ef_sin_c          :           IF cnlit IN TYPEOF( v1 ) THEN
30568            parts( v1, p, q );
30569            t := 0.5 * EXP( -q );
30570            u := 0.5 * EXP( q );
30571            RETURN( makec( ( t + u ) * SIN( p ), ( u - t ) * COS( p ) ) );
30572          END_IF;
30573        ef_sqrt_c         :           IF cnlit IN TYPEOF( v1 ) THEN
30574            parts( v1, p, q );
30575            t := SQRT( SQRT( ( p * p ) + ( q * q ) ) );
30576            u := 0.5 * atan2( q, p );
30577            RETURN( makec( t * COS( u ), t * SIN( u ) ) );
30578          END_IF;
30579        ef_tan_c          :           IF cnlit IN TYPEOF( v1 ) THEN
30580            parts( v1, p, q );
30581            t := EXP( 2 * q ) + EXP( ( -2 ) * q ) + ( 2 * COS( 2 * p ) );
30582            RETURN( makec( ( 2 * SIN( 2 * p ) ) DIV t, ( EXP( ( -2 ) * q ) - EXP( 2 * q ) ) DIV t ) );
30583          END_IF;
30584        ef_subscript_s    :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30585            str := v1;
30586            k := v2;
30587            RETURN( ctmv( str[k] ) );
30588          END_IF;
30589        ef_eq_s           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30590            str := v1;
30591            st2 := v2;
30592            RETURN( ctmv( str = st2 ) );
30593          END_IF;
30594        ef_ne_s           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30595            str := v1;
30596            st2 := v2;
30597            RETURN( ctmv( str <> st2 ) );
30598          END_IF;
30599        ef_gt_s           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30600            str := v1;
30601            st2 := v2;
30602            RETURN( ctmv( str > st2 ) );
30603          END_IF;
30604        ef_lt_s           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30605            str := v1;
30606            st2 := v2;
30607            RETURN( ctmv( str < st2 ) );
30608          END_IF;
30609        ef_ge_s           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30610            str := v1;
30611            st2 := v2;
30612            RETURN( ctmv( str >= st2 ) );
30613          END_IF;
30614        ef_le_s           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30615            str := v1;
30616            st2 := v2;
30617            RETURN( ctmv( str <= st2 ) );
30618          END_IF;
30619        ef_subsequence_s  :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) AND ( 'INTEGER' IN
30620              TYPEOF( v3 ) ) THEN
30621            str := v1;
30622            j := v2;
30623            k := v3;
30624            RETURN( ctmv( str[j : k] ) );
30625          END_IF;
30626        ef_concat_s       :
30627          BEGIN
30628            str := '';
30629            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30630              IF 'STRING' IN TYPEOF( vlist[i] ) THEN
30631                st2 := vlist[i];
30632                str := str + st2;
30633                REMOVE( vlist, i );
30634              ELSE
30635                IF str <> '' THEN
30636                  INSERT( vlist, ctmv( str ), i );
30637                  str := '';
30638                END_IF;
30639              END_IF;
30640            END_REPEAT;
30641            IF SIZEOF( vlist ) = 0 THEN
30642              RETURN( ctmv( str ) );
30643            END_IF;
30644            IF str <> '' THEN
30645              INSERT( vlist, ctmv( str ), 0 );
30646            END_IF;
30647            IF SIZEOF( vlist ) = 1 THEN
30648              RETURN( vlist[1] );
30649            END_IF;
30650          END;
30651        ef_size_s         :           IF 'STRING' IN TYPEOF( v1 ) THEN
30652            str := v1;
30653            RETURN( ctmv( LENGTH( str ) ) );
30654          END_IF;
30655        ef_format         :           IF ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30656            RETURN( ctmv( FORMAT( v1, v2 ) ) );
30657          END_IF;
30658        ef_value          :           IF 'STRING' IN TYPEOF( v1 ) THEN
30659            str := v1;
30660            RETURN( ctmv( VALUE( str ) ) );
30661          END_IF;
30662        ef_like           :           IF ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
30663            RETURN( ctmv( v1 LIKE v2 ) );
30664          END_IF;
30665        ef_subscript_b    :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30666            bin := v1;
30667            k := v2;
30668            RETURN( ctmv( bin[k] ) );
30669          END_IF;
30670        ef_eq_b           :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'BINARY' IN TYPEOF( v2 ) ) THEN
30671            bin := v1;
30672            bi2 := v2;
30673            RETURN( ctmv( bin = bi2 ) );
30674          END_IF;
30675        ef_ne_b           :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'BINARY' IN TYPEOF( v2 ) ) THEN
30676            bin := v1;
30677            bi2 := v2;
30678            RETURN( ctmv( bin <> bi2 ) );
30679          END_IF;
30680        ef_gt_b           :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'BINARY' IN TYPEOF( v2 ) ) THEN
30681            bin := v1;
30682            bi2 := v2;
30683            RETURN( ctmv( bin > bi2 ) );
30684          END_IF;
30685        ef_lt_b           :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'BINARY' IN TYPEOF( v2 ) ) THEN
30686            bin := v1;
30687            bi2 := v2;
30688            RETURN( ctmv( bin < bi2 ) );
30689          END_IF;
30690        ef_ge_b           :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'BINARY' IN TYPEOF( v2 ) ) THEN
30691            bin := v1;
30692            bi2 := v2;
30693            RETURN( ctmv( bin >= bi2 ) );
30694          END_IF;
30695        ef_le_b           :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'BINARY' IN TYPEOF( v2 ) ) THEN
30696            bin := v1;
30697            bi2 := v2;
30698            RETURN( ctmv( bin <= bi2 ) );
30699          END_IF;
30700        ef_subsequence_b  :           IF ( 'BINARY' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) AND ( 'INTEGER' IN
30701              TYPEOF( v3 ) ) THEN
30702            bin := v1;
30703            j := v2;
30704            k := v3;
30705            RETURN( ctmv( bin[j : k] ) );
30706          END_IF;
30707        ef_concat_b       :
30708          BEGIN
30709            boo := FALSE;
30710            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30711              IF 'BINARY' IN TYPEOF( vlist[i] ) THEN
30712                IF boo THEN
30713                  bi2 := vlist[i];
30714                  bin := bin + bi2;
30715                ELSE
30716                  bin := vlist[i];
30717                  boo := TRUE;
30718                END_IF;
30719                REMOVE( vlist, i );
30720              ELSE
30721                IF boo THEN
30722                  INSERT( vlist, ctmv( bin ), i );
30723                  boo := FALSE;
30724                END_IF;
30725              END_IF;
30726            END_REPEAT;
30727            IF SIZEOF( vlist ) = 0 THEN
30728              RETURN( ctmv( bin ) );
30729            END_IF;
30730            IF boo THEN
30731              INSERT( vlist, ctmv( bin ), 0 );
30732            END_IF;
30733            IF SIZEOF( vlist ) = 1 THEN
30734              RETURN( vlist[1] );
30735            END_IF;
30736          END;
30737        ef_size_b         :           IF 'BINARY' IN TYPEOF( v1 ) THEN
30738            bin := v1;
30739            RETURN( ctmv( BLENGTH( bin ) ) );
30740          END_IF;
30741        ef_subscript_t    :           IF ( 'LIST' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30742            tpl := v1;
30743            k := v2;
30744            RETURN( ctmv( tpl[k] ) );
30745          END_IF;
30746        ef_eq_t           :           IF ( 'LIST' IN TYPEOF( v1 ) ) AND ( 'LIST' IN TYPEOF( v2 ) ) THEN
30747            lgc := equal_maths_values( v1, v2 );
30748            IF lgc <> UNKNOWN THEN
30749              RETURN( ctmv( lgc ) );
30750            END_IF;
30751          END_IF;
30752        ef_ne_t           :           IF ( 'LIST' IN TYPEOF( v1 ) ) AND ( 'LIST' IN TYPEOF( v2 ) ) THEN
30753            lgc := equal_maths_values( v1, v2 );
30754            IF lgc <> UNKNOWN THEN
30755              RETURN( ctmv( NOT lgc ) );
30756            END_IF;
30757          END_IF;
30758        ef_concat_t       :
30759          BEGIN
30760            tpl := [];
30761            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30762              IF 'STRING' IN TYPEOF( vlist[i] ) THEN
30763                tp2 := vlist[i];
30764                tpl := tpl + tp2;
30765                REMOVE( vlist, i );
30766              ELSE
30767                IF SIZEOF( tpl ) <> 0 THEN
30768                  INSERT( vlist, ctmv( tpl ), i );
30769                  tpl := [];
30770                END_IF;
30771              END_IF;
30772            END_REPEAT;
30773            IF SIZEOF( vlist ) = 0 THEN
30774              RETURN( ctmv( tpl ) );
30775            END_IF;
30776            IF SIZEOF( tpl ) <> 0 THEN
30777              INSERT( vlist, ctmv( tpl ), 0 );
30778            END_IF;
30779            IF SIZEOF( vlist ) = 1 THEN
30780              RETURN( vlist[1] );
30781            END_IF;
30782          END;
30783        ef_size_t         :           IF 'LIST' IN TYPEOF( v1 ) THEN
30784            tpl := v1;
30785            RETURN( ctmv( SIZEOF( tpl ) ) );
30786          END_IF;
30787        ef_entuple        :           RETURN( ctmv( vlist ) );
30788        ef_detuple        :           IF 'LIST' IN TYPEOF( v1 ) THEN
30789            tpl := v1;
30790            RETURN( ctmv( tpl[1] ) );
30791          END_IF;
30792        ef_insert         :           IF ( 'LIST' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v3 ) ) THEN
30793            tpl := v1;
30794            k := v3;
30795            INSERT( tpl, v2, k );
30796            RETURN( ctmv( tpl ) );
30797          END_IF;
30798        ef_remove         :           IF ( 'LIST' IN TYPEOF( v1 ) ) AND ( 'INTEGER' IN TYPEOF( v2 ) ) THEN
30799            tpl := v1;
30800            k := v2;
30801            REMOVE( tpl, k );
30802            RETURN( ctmv( tpl ) );
30803          END_IF;
30804        ef_sum_it         :           IF good_t( v1, 'INTEGER' ) THEN
30805            tpl := v1;
30806            j := 0;
30807            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30808              j := j + tpl[i];
30809            END_REPEAT;
30810            RETURN( ctmv( j ) );
30811          END_IF;
30812        ef_product_it     :           IF good_t( v1, 'INTEGER' ) THEN
30813            tpl := v1;
30814            j := 1;
30815            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30816              j := j * tpl[i];
30817            END_REPEAT;
30818            RETURN( ctmv( j ) );
30819          END_IF;
30820        ef_add_it         :
30821          BEGIN
30822            boo := FALSE;
30823            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30824              IF good_t( vlist[i], 'INTEGER' ) THEN
30825                IF NOT boo THEN
30826                  tpl := vlist[i];
30827                  boo := TRUE;
30828                ELSE
30829                  tp2 := vlist[i];
30830                  IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30831                    RETURN( ? );
30832                  END_IF;
30833                  REPEAT l := 1 TO SIZEOF( tpl ) BY 1;
30834                    tpl[j] := tpl[j] + tp2[j];
30835                  END_REPEAT;
30836                END_IF;
30837                REMOVE( vlist, i );
30838              END_IF;
30839            END_REPEAT;
30840            IF SIZEOF( vlist ) = 0 THEN
30841              RETURN( ctmv( tpl ) );
30842            END_IF;
30843            IF boo THEN
30844              INSERT( vlist, ctmv( tpl ), 0 );
30845            END_IF;
30846            IF SIZEOF( vlist ) = 1 THEN
30847              RETURN( vlist[1] );
30848            END_IF;
30849          END;
30850        ef_subtract_it    :           IF good_t( v1, 'INTEGER' ) AND good_t( v2, 'INTEGER' ) THEN
30851            tpl := v1;
30852            tp2 := v2;
30853            IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30854              RETURN( ? );
30855            END_IF;
30856            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30857              tpl[i] := tpl[i] - tp2[i];
30858            END_REPEAT;
30859            RETURN( ctmv( tpl ) );
30860          END_IF;
30861        ef_scalar_mult_it :           IF ( 'INTEGER' IN TYPEOF( v1 ) ) AND good_t( v2, 'INTEGER' ) THEN
30862            j := v1;
30863            tpl := v2;
30864            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30865              tpl[i] := j * tpl[i];
30866            END_REPEAT;
30867            RETURN( ctmv( tpl ) );
30868          END_IF;
30869        ef_dot_prod_it    :           IF good_t( v1, 'INTEGER' ) AND good_t( v2, 'INTEGER' ) THEN
30870            tpl := v1;
30871            tp2 := v2;
30872            j := 0;
30873            IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30874              RETURN( ? );
30875            END_IF;
30876            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30877              j := j + ( tpl[i] * tp2[i] );
30878            END_REPEAT;
30879            RETURN( ctmv( j ) );
30880          END_IF;
30881        ef_sum_rt         :           IF good_t( v1, 'REAL' ) THEN
30882            tpl := v1;
30883            r := 0;
30884            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30885              r := r + tpl[i];
30886            END_REPEAT;
30887            RETURN( ctmv( r ) );
30888          END_IF;
30889        ef_product_rt     :           IF good_t( v1, 'REAL' ) THEN
30890            tpl := v1;
30891            r := 1;
30892            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30893              r := r * tpl[i];
30894            END_REPEAT;
30895            RETURN( ctmv( r ) );
30896          END_IF;
30897        ef_add_rt         :
30898          BEGIN
30899            boo := FALSE;
30900            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30901              IF good_t( vlist[i], 'REAL' ) THEN
30902                IF NOT boo THEN
30903                  tpl := vlist[i];
30904                  boo := TRUE;
30905                ELSE
30906                  tp2 := vlist[i];
30907                  IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30908                    RETURN( ? );
30909                  END_IF;
30910                  REPEAT l := 1 TO SIZEOF( tpl ) BY 1;
30911                    tpl[j] := tpl[j] + tp2[j];
30912                  END_REPEAT;
30913                END_IF;
30914                REMOVE( vlist, i );
30915              END_IF;
30916            END_REPEAT;
30917            IF SIZEOF( vlist ) = 0 THEN
30918              RETURN( ctmv( tpl ) );
30919            END_IF;
30920            IF boo THEN
30921              INSERT( vlist, ctmv( tpl ), 0 );
30922            END_IF;
30923            IF SIZEOF( vlist ) = 1 THEN
30924              RETURN( vlist[1] );
30925            END_IF;
30926          END;
30927        ef_subtract_rt    :           IF good_t( v1, 'REAL' ) AND good_t( v2, 'REAL' ) THEN
30928            tpl := v1;
30929            tp2 := v2;
30930            IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30931              RETURN( ? );
30932            END_IF;
30933            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30934              tpl[i] := tpl[i] - tp2[i];
30935            END_REPEAT;
30936            RETURN( ctmv( tpl ) );
30937          END_IF;
30938        ef_scalar_mult_rt :           IF ( 'REAL' IN TYPEOF( v1 ) ) AND good_t( v2, 'REAL' ) THEN
30939            r := v1;
30940            tpl := v2;
30941            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30942              tpl[i] := r * tpl[i];
30943            END_REPEAT;
30944            RETURN( ctmv( tpl ) );
30945          END_IF;
30946        ef_dot_prod_rt    :           IF good_t( v1, 'REAL' ) AND good_t( v2, 'REAL' ) THEN
30947            tpl := v1;
30948            tp2 := v2;
30949            r := 0;
30950            IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30951              RETURN( ? );
30952            END_IF;
30953            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30954              r := r + ( tpl[i] * tp2[i] );
30955            END_REPEAT;
30956            RETURN( ctmv( r ) );
30957          END_IF;
30958        ef_norm_rt        :           IF good_t( v1, 'REAL' ) THEN
30959            tpl := v1;
30960            r := 0;
30961            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30962              r := r + ( tpl[i] * tpl[i] );
30963            END_REPEAT;
30964            RETURN( ctmv( SQRT( r ) ) );
30965          END_IF;
30966        ef_sum_ct         :           IF good_t( v1, cnlit ) THEN
30967            tpl := v1;
30968            p := 0;
30969            q := 0;
30970            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30971              parts( tpl[i], r, s );
30972              p := p + r;
30973              q := q + s;
30974            END_REPEAT;
30975            RETURN( makec( p, q ) );
30976          END_IF;
30977        ef_product_ct     :           IF good_t( v1, cnlit ) THEN
30978            tpl := v1;
30979            p := 1;
30980            q := 0;
30981            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
30982              parts( tpl[i], r, s );
30983              p := ( p * r ) - ( q * s );
30984              q := ( p * s ) + ( q * r );
30985            END_REPEAT;
30986            RETURN( makec( p, q ) );
30987          END_IF;
30988        ef_add_ct         :
30989          BEGIN
30990            boo := FALSE;
30991            REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
30992              IF good_t( vlist[i], cnlit ) THEN
30993                IF NOT boo THEN
30994                  tpl := vlist[i];
30995                  boo := TRUE;
30996                ELSE
30997                  tp2 := vlist[i];
30998                  IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
30999                    RETURN( ? );
31000                  END_IF;
31001                  REPEAT l := 1 TO SIZEOF( tpl ) BY 1;
31002                    parts( tpl[j], p, q );
31003                    parts( tp2[j], r, s );
31004                    tpl[j] := makec( p + r, q + s );
31005                  END_REPEAT;
31006                END_IF;
31007                REMOVE( vlist, i );
31008              END_IF;
31009            END_REPEAT;
31010            IF SIZEOF( vlist ) = 0 THEN
31011              RETURN( ctmv( tpl ) );
31012            END_IF;
31013            IF boo THEN
31014              INSERT( vlist, ctmv( tpl ), 0 );
31015            END_IF;
31016            IF SIZEOF( vlist ) = 1 THEN
31017              RETURN( vlist[1] );
31018            END_IF;
31019          END;
31020        ef_subtract_ct    :           IF good_t( v1, cnlit ) AND good_t( v2, cnlit ) THEN
31021            tpl := v1;
31022            tp2 := v2;
31023            IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
31024              RETURN( ? );
31025            END_IF;
31026            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
31027              parts( tpl[i], p, q );
31028              parts( tp2[i], r, s );
31029              tpl[i] := makec( p - r, q - s );
31030            END_REPEAT;
31031            RETURN( ctmv( tpl ) );
31032          END_IF;
31033        ef_scalar_mult_ct :           IF ( cnlit IN TYPEOF( v1 ) ) AND good_t( v2, cnlit ) THEN
31034            parts( v1, p, q );
31035            tpl := v2;
31036            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
31037              parts( tpl[i], r, s );
31038              tpl[i] := makec( ( p * r ) - ( q * s ), ( p * s ) + ( q * r ) );
31039            END_REPEAT;
31040            RETURN( ctmv( tpl ) );
31041          END_IF;
31042        ef_dot_prod_ct    :           IF good_t( v1, cnlit ) AND good_t( v2, cnlit ) THEN
31043            tpl := v1;
31044            tp2 := v2;
31045            t := 0;
31046            u := 0;
31047            IF SIZEOF( tpl ) <> SIZEOF( tp2 ) THEN
31048              RETURN( ? );
31049            END_IF;
31050            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
31051              parts( tpl[i], p, q );
31052              parts( tp2[i], r, s );
31053              t := t + ( p * r ) + ( q * s );
31054              u := ( u + ( q * r ) ) - ( p * s );
31055            END_REPEAT;
31056            RETURN( makec( t, u ) );
31057          END_IF;
31058        ef_norm_ct        :           IF good_t( v1, cnlit ) THEN
31059            tpl := v1;
31060            r := 0;
31061            REPEAT i := 1 TO SIZEOF( tpl ) BY 1;
31062              parts( tpl[i], p, q );
31063              r := r + ( p * p ) + ( q * q );
31064            END_REPEAT;
31065            RETURN( ctmv( SQRT( r ) ) );
31066          END_IF;
31067        ef_if             :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31068            lgc := v1;
31069            IF lgc THEN
31070              RETURN( v2 );
31071            ELSE
31072              RETURN( v3 );
31073            END_IF;
31074          END_IF;
31075        ef_if_i           :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31076            lgc := v1;
31077            IF lgc THEN
31078              RETURN( v2 );
31079            ELSE
31080              RETURN( v3 );
31081            END_IF;
31082          END_IF;
31083        ef_if_r           :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31084            lgc := v1;
31085            IF lgc THEN
31086              RETURN( v2 );
31087            ELSE
31088              RETURN( v3 );
31089            END_IF;
31090          END_IF;
31091        ef_if_c           :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31092            lgc := v1;
31093            IF lgc THEN
31094              RETURN( v2 );
31095            ELSE
31096              RETURN( v3 );
31097            END_IF;
31098          END_IF;
31099        ef_if_s           :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31100            lgc := v1;
31101            IF lgc THEN
31102              RETURN( v2 );
31103            ELSE
31104              RETURN( v3 );
31105            END_IF;
31106          END_IF;
31107        ef_if_b           :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31108            lgc := v1;
31109            IF lgc THEN
31110              RETURN( v2 );
31111            ELSE
31112              RETURN( v3 );
31113            END_IF;
31114          END_IF;
31115        ef_if_t           :           IF 'LOGICAL' IN TYPEOF( v1 ) THEN
31116            lgc := v1;
31117            IF lgc THEN
31118              RETURN( v2 );
31119            ELSE
31120              RETURN( v3 );
31121            END_IF;
31122          END_IF;
31123        ef_ensemble       :           RETURN( make_finite_space( mem + vlist ) );
31124        ef_member_of      :           IF ( schema_prefix + 'MATHS_SPACE' ) IN TYPEOF( v2 ) THEN
31125            lgc := member_of( v1, v2 );
31126            IF lgc <> UNKNOWN THEN
31127              RETURN( ctmv( lgc ) );
31128            END_IF;
31129          END_IF;
31130        END_CASE;
31131      RETURN( make_function_application( expr.func, vlist ) );
31132    END_IF;
31133    IF 'ABSTRACTED_EXPRESSION_FUNCTION' IN types THEN
31134      gexpr := substitute( expr.func\abstracted_expression_function.expr, expr.func\quantifier_expression.variables, vlist );
31135      RETURN( simplify_generic_expression( gexpr ) );
31136    END_IF;
31137    IF 'FINITE_FUNCTION' IN types THEN
31138      pairs := expr.func\finite_function.pairs;
31139      REPEAT i := 1 TO SIZEOF( pairs ) BY 1;
31140        IF equal_maths_values( vlist[1], pairs[i][1] ) THEN
31141          RETURN( simplify_maths_value( pairs[i][2] ) );
31142        END_IF;
31143      END_REPEAT;
31144      RETURN( make_function_application( expr.func, vlist ) );
31145    END_IF;
31146    RETURN( expr );
31147
31148  END_FUNCTION;
31149
31150  FUNCTION simplify_generic_expression(
31151               expr : generic_expression
31152           ) : maths_value;
31153
31154    FUNCTION make_number_literal(
31155                 nmb : NUMBER
31156             ) : generic_literal;
31157      IF 'INTEGER' IN TYPEOF( nmb ) THEN
31158        RETURN( make_int_literal( nmb ) );
31159      END_IF;
31160      RETURN( make_real_literal( nmb ) );
31161
31162    END_FUNCTION;
31163
31164    FUNCTION restore_binary(
31165                 expr : binary_generic_expression;
31166                 opd1, opd2 : generic_expression
31167             ) : generic_expression;
31168      expr.operands[1] := opd1;
31169      expr.operands[2] := opd2;
31170      RETURN( expr );
31171
31172    END_FUNCTION;
31173
31174    FUNCTION restore_mulary(
31175                 expr : multiple_arity_generic_expression;
31176                 ops : LIST OF generic_expression
31177             ) : generic_expression;
31178      expr.operands := ops;
31179      RETURN( expr );
31180
31181    END_FUNCTION;
31182
31183    FUNCTION restore_unary(
31184                 expr : unary_generic_expression;
31185                 opnd : generic_expression
31186             ) : generic_expression;
31187      expr.operand := opnd;
31188      RETURN( expr );
31189
31190    END_FUNCTION;
31191
31192    LOCAL
31193      opnds  : LIST [2 : ?] OF generic_expression;
31194      boo    : BOOLEAN;
31195      m      : INTEGER;
31196      n      : INTEGER;
31197      oplist : LIST OF generic_expression := [];
31198      v2     : maths_value;
31199      v1     : maths_value;
31200      vlist  : LIST OF maths_value := [];
31201      op2    : generic_expression;
31202      op1    : generic_expression;
31203      types  : SET OF STRING := stripped_typeof( expr );
31204      finfun : maths_function_select;
31205      nmb    : NUMBER;
31206      str    : STRING;
31207    END_LOCAL;
31208    IF 'INT_LITERAL' IN types THEN
31209      RETURN( convert_to_maths_value( expr\int_literal.the_value ) );
31210    END_IF;
31211    IF 'REAL_LITERAL' IN types THEN
31212      RETURN( convert_to_maths_value( expr\real_literal.the_value ) );
31213    END_IF;
31214    IF 'BOOLEAN_LITERAL' IN types THEN
31215      RETURN( convert_to_maths_value( expr\boolean_literal.the_value ) );
31216    END_IF;
31217    IF 'STRING_LITERAL' IN types THEN
31218      RETURN( convert_to_maths_value( expr\string_literal.the_value ) );
31219    END_IF;
31220    IF 'COMPLEX_NUMBER_LITERAL' IN types THEN
31221      RETURN( expr );
31222    END_IF;
31223    IF 'LOGICAL_LITERAL' IN types THEN
31224      RETURN( convert_to_maths_value( expr\logical_literal.lit_value ) );
31225    END_IF;
31226    IF 'BINARY_LITERAL' IN types THEN
31227      RETURN( convert_to_maths_value( expr\binary_literal.lit_value ) );
31228    END_IF;
31229    IF 'MATHS_ENUM_LITERAL' IN types THEN
31230      RETURN( expr\maths_enum_literal.lit_value );
31231    END_IF;
31232    IF 'REAL_TUPLE_LITERAL' IN types THEN
31233      RETURN( convert_to_maths_value( expr\real_tuple_literal.lit_value ) );
31234    END_IF;
31235    IF 'INTEGER_TUPLE_LITERAL' IN types THEN
31236      RETURN( convert_to_maths_value( expr\integer_tuple_literal.lit_value ) );
31237    END_IF;
31238    IF 'ATOM_BASED_LITERAL' IN types THEN
31239      RETURN( expr\atom_based_literal.lit_value );
31240    END_IF;
31241    IF 'MATHS_TUPLE_LITERAL' IN types THEN
31242      RETURN( convert_to_maths_value( expr\maths_tuple_literal.lit_value ) );
31243    END_IF;
31244    IF 'MATHS_SPACE' IN types THEN
31245      RETURN( simplify_maths_space( expr ) );
31246    END_IF;
31247    IF 'FUNCTION_APPLICATION' IN types THEN
31248      RETURN( simplify_function_application( expr ) );
31249    END_IF;
31250    IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
31251      v1 := simplify_generic_expression( expr\unary_generic_expression.operand );
31252      op1 := convert_to_operand( v1 );
31253    END_IF;
31254    IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
31255      v1 := simplify_generic_expression( expr\binary_generic_expression.operands[1] );
31256      op1 := convert_to_operand( v1 );
31257      v2 := simplify_generic_expression( expr\binary_generic_expression.operands[2] );
31258      op2 := convert_to_operand( v2 );
31259    END_IF;
31260    IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
31261      opnds := expr\multiple_arity_generic_expression.operands;
31262      REPEAT i := 1 TO SIZEOF( opnds ) BY 1;
31263        v1 := simplify_generic_expression( opnds[i] );
31264        INSERT( vlist, v1, i - 1 );
31265        INSERT( oplist, convert_to_operand( v1 ), i - 1 );
31266      END_REPEAT;
31267    END_IF;
31268    IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
31269      v1 := vlist[1];
31270      n := SIZEOF( vlist );
31271      finfun := vlist[n];
31272      REMOVE( vlist, n );
31273      REMOVE( vlist, 1 );
31274      RETURN( make_parallel_composed_function( v1, vlist, finfun ) );
31275    END_IF;
31276    IF ( 'ABS_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31277      RETURN( convert_to_maths_value( ABS( v1 ) ) );
31278    END_IF;
31279    IF ( 'ACOS_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31280      RETURN( convert_to_maths_value( ACOS( v1 ) ) );
31281    END_IF;
31282    IF 'AND_EXPRESSION' IN types THEN
31283      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31284        IF 'BOOLEAN' IN TYPEOF( vlist[i] ) THEN
31285          boo := vlist[i];
31286          IF NOT boo THEN
31287            RETURN( convert_to_maths_value( FALSE ) );
31288          END_IF;
31289          REMOVE( oplist, i );
31290        END_IF;
31291      END_REPEAT;
31292      IF SIZEOF( oplist ) = 0 THEN
31293        RETURN( convert_to_maths_value( TRUE ) );
31294      END_IF;
31295      IF SIZEOF( oplist ) = 1 THEN
31296        RETURN( oplist[1] );
31297      END_IF;
31298    END_IF;
31299    IF ( 'ASIN_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31300      RETURN( convert_to_maths_value( ASIN( v1 ) ) );
31301    END_IF;
31302    IF ( 'ATAN_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31303      RETURN( convert_to_maths_value( ATAN( v1, v2 ) ) );
31304    END_IF;
31305    IF ( 'COMPARISON_EXPRESSION' IN types ) AND ( ( ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) ) OR ( ( 'STRING'
31306        IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) ) OR ( ( 'BOOLEAN' IN TYPEOF( v1 ) ) AND ( 'BOOLEAN' IN TYPEOF( v2 ) ) ) )
31307        THEN
31308      IF 'COMPARISON_EQUAL' IN types THEN
31309        boo := bool( v1 = v2 );
31310      ELSE
31311        IF 'COMPARISON_GREATER' IN types THEN
31312          boo := bool( v1 > v2 );
31313        ELSE
31314          IF 'COMPARISON_GREATER_EQUAL' IN types THEN
31315            boo := bool( v1 >= v2 );
31316          ELSE
31317            IF 'COMPARISON_LESS' IN types THEN
31318              boo := bool( v1 < v2 );
31319            ELSE
31320              IF 'COMPARISON_LESS_EQUAL' IN types THEN
31321                boo := bool( v1 <= v2 );
31322              ELSE
31323                IF 'COMPARISON_NOT_EQUAL' IN types THEN
31324                  boo := bool( v1 <> v2 );
31325                ELSE
31326                  IF 'LIKE_EXPRESSION' IN types THEN
31327                    boo := bool( v1 LIKE v2 );
31328                  ELSE
31329                    RETURN( ? );
31330                  END_IF;
31331                END_IF;
31332              END_IF;
31333            END_IF;
31334          END_IF;
31335        END_IF;
31336      END_IF;
31337      RETURN( convert_to_maths_value( boo ) );
31338    END_IF;
31339    IF 'CONCAT_EXPRESSION' IN types THEN
31340      str := '';
31341      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31342        IF 'STRING' IN TYPEOF( vlist[i] ) THEN
31343          str := vlist[i] + str;
31344          REMOVE( oplist, i );
31345        ELSE
31346          IF LENGTH( str ) > 0 THEN
31347            INSERT( oplist, make_string_literal( str ), i );
31348            str := '';
31349          END_IF;
31350        END_IF;
31351      END_REPEAT;
31352      IF SIZEOF( oplist ) = 0 THEN
31353        RETURN( convert_to_maths_value( str ) );
31354      END_IF;
31355      IF LENGTH( str ) > 0 THEN
31356        INSERT( oplist, make_string_literal( str ), 0 );
31357      END_IF;
31358      IF SIZEOF( oplist ) = 1 THEN
31359        RETURN( oplist[1] );
31360      END_IF;
31361    END_IF;
31362    IF ( 'COS_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31363      RETURN( convert_to_maths_value( COS( v1 ) ) );
31364    END_IF;
31365    IF ( 'DIV_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31366      RETURN( convert_to_maths_value( v1 DIV v2 ) );
31367    END_IF;
31368    IF 'EQUALS_EXPRESSION' IN types THEN
31369      opnds := expr\binary_generic_expression.operands;
31370      RETURN( convert_to_maths_value( opnds[1] :=: opnds[2] ) );
31371    END_IF;
31372    IF ( 'EXP_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31373      RETURN( convert_to_maths_value( EXP( v1 ) ) );
31374    END_IF;
31375    IF ( 'FORMAT_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'STRING' IN TYPEOF( v2 ) ) THEN
31376      RETURN( convert_to_maths_value( FORMAT( v1, v2 ) ) );
31377    END_IF;
31378    IF ( 'INDEX_EXPRESSION' IN types ) AND ( 'STRING' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31379      str := v1;
31380      n := v2;
31381      RETURN( convert_to_maths_value( str[n] ) );
31382    END_IF;
31383    IF ( 'INT_VALUE_EXPRESSION' IN types ) AND ( 'STRING' IN TYPEOF( v1 ) ) THEN
31384      RETURN( convert_to_maths_value( VALUE( v1 ) ) );
31385    END_IF;
31386    IF 'INTERVAL_EXPRESSION' IN types THEN
31387      str := '';
31388      IF 'NUMBER' IN TYPEOF( vlist[1] ) THEN
31389        str := 'NUMBER';
31390      END_IF;
31391      IF 'STRING' IN TYPEOF( vlist[1] ) THEN
31392        str := 'STRING';
31393      END_IF;
31394      IF 'BOOLEAN' IN TYPEOF( vlist[1] ) THEN
31395        str := 'BOOLEAN';
31396      END_IF;
31397      IF ( LENGTH( str ) > 0 ) AND ( str IN TYPEOF( vlist[2] ) ) AND ( str IN TYPEOF( vlist[3] ) ) THEN
31398        RETURN( convert_to_maths_value( ( vlist[1] <= vlist[2] ) AND ( vlist[2] <= vlist[3] ) ) );
31399      END_IF;
31400    END_IF;
31401    IF ( 'LENGTH_EXPRESSION' IN types ) AND ( 'STRING' IN TYPEOF( v1 ) ) THEN
31402      RETURN( convert_to_maths_value( LENGTH( v1 ) ) );
31403    END_IF;
31404    IF ( 'LOG_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31405      RETURN( convert_to_maths_value( LOG( v1 ) ) );
31406    END_IF;
31407    IF ( 'LOG10_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31408      RETURN( convert_to_maths_value( LOG10( v1 ) ) );
31409    END_IF;
31410    IF ( 'LOG2_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31411      RETURN( convert_to_maths_value( LOG2( v1 ) ) );
31412    END_IF;
31413    IF 'MAXIMUM_EXPRESSION' IN types THEN
31414      boo := FALSE;
31415      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31416        IF 'NUMBER' IN TYPEOF( vlist[i] ) THEN
31417          IF boo THEN
31418            IF nmb < vlist[i] THEN
31419              nmb := vlist[i];
31420            END_IF;
31421          ELSE
31422            nmb := vlist[i];
31423            boo := TRUE;
31424          END_IF;
31425          REMOVE( oplist, i );
31426        END_IF;
31427      END_REPEAT;
31428      IF SIZEOF( oplist ) = 0 THEN
31429        RETURN( convert_to_maths_value( nmb ) );
31430      END_IF;
31431      IF boo THEN
31432        INSERT( oplist, make_number_literal( nmb ), 0 );
31433      END_IF;
31434    END_IF;
31435    IF 'MINIMUM_EXPRESSION' IN types THEN
31436      boo := FALSE;
31437      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31438        IF 'NUMBER' IN TYPEOF( vlist[i] ) THEN
31439          IF boo THEN
31440            IF nmb > vlist[i] THEN
31441              nmb := vlist[i];
31442            END_IF;
31443          ELSE
31444            nmb := vlist[i];
31445            boo := TRUE;
31446          END_IF;
31447          REMOVE( oplist, i );
31448        END_IF;
31449      END_REPEAT;
31450      IF SIZEOF( oplist ) = 0 THEN
31451        RETURN( convert_to_maths_value( nmb ) );
31452      END_IF;
31453      IF boo THEN
31454        INSERT( oplist, make_number_literal( nmb ), 0 );
31455      END_IF;
31456    END_IF;
31457    IF ( 'MINUS_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31458      RETURN( convert_to_maths_value( v1 - v2 ) );
31459    END_IF;
31460    IF ( 'MOD_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31461      RETURN( convert_to_maths_value( v1 MOD v2 ) );
31462    END_IF;
31463    IF 'MULT_EXPRESSION' IN types THEN
31464      nmb := 1;
31465      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31466        IF 'NUMBER' IN TYPEOF( vlist[i] ) THEN
31467          nmb := nmb * vlist[i];
31468          REMOVE( oplist, i );
31469        END_IF;
31470      END_REPEAT;
31471      IF SIZEOF( oplist ) = 0 THEN
31472        RETURN( convert_to_maths_value( nmb ) );
31473      END_IF;
31474      IF nmb <> 1 THEN
31475        INSERT( oplist, make_number_literal( nmb ), 0 );
31476      END_IF;
31477      IF SIZEOF( oplist ) = 1 THEN
31478        RETURN( oplist[1] );
31479      END_IF;
31480    END_IF;
31481    IF ( 'NOT_EXPRESSION' IN types ) AND ( 'BOOLEAN' IN TYPEOF( v1 ) ) THEN
31482      boo := v1;
31483      RETURN( convert_to_maths_value( NOT boo ) );
31484    END_IF;
31485    IF ( 'ODD_EXPRESSION' IN types ) AND ( 'INTEGER' IN TYPEOF( v1 ) ) THEN
31486      RETURN( convert_to_maths_value( ODD( v1 ) ) );
31487    END_IF;
31488    IF 'OR_EXPRESSION' IN types THEN
31489      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31490        IF 'BOOLEAN' IN TYPEOF( vlist[i] ) THEN
31491          boo := vlist[i];
31492          IF boo THEN
31493            RETURN( convert_to_maths_value( TRUE ) );
31494          END_IF;
31495          REMOVE( oplist, i );
31496        END_IF;
31497      END_REPEAT;
31498      IF SIZEOF( oplist ) = 0 THEN
31499        RETURN( convert_to_maths_value( FALSE ) );
31500      END_IF;
31501      IF SIZEOF( oplist ) = 1 THEN
31502        RETURN( oplist[1] );
31503      END_IF;
31504    END_IF;
31505    IF 'PLUS_EXPRESSION' IN types THEN
31506      nmb := 0;
31507      REPEAT i := SIZEOF( vlist ) TO 1 BY -1;
31508        IF 'NUMBER' IN TYPEOF( vlist[i] ) THEN
31509          nmb := nmb + vlist[i];
31510          REMOVE( oplist, i );
31511        END_IF;
31512      END_REPEAT;
31513      IF SIZEOF( oplist ) = 0 THEN
31514        RETURN( convert_to_maths_value( nmb ) );
31515      END_IF;
31516      IF nmb <> 0 THEN
31517        INSERT( oplist, make_number_literal( nmb ), 0 );
31518      END_IF;
31519      IF SIZEOF( oplist ) = 1 THEN
31520        RETURN( oplist[1] );
31521      END_IF;
31522    END_IF;
31523    IF ( 'POWER_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31524      RETURN( convert_to_maths_value( v1 ** v2 ) );
31525    END_IF;
31526    IF ( 'SIN_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31527      RETURN( convert_to_maths_value( SIN( v1 ) ) );
31528    END_IF;
31529    IF ( 'SLASH_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) AND ( 'NUMBER' IN TYPEOF( v2 ) ) THEN
31530      RETURN( convert_to_maths_value( v1 DIV v2 ) );
31531    END_IF;
31532    IF ( 'SQUARE_ROOT_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31533      RETURN( convert_to_maths_value( SQRT( v1 ) ) );
31534    END_IF;
31535    IF ( 'SUBSTRING_EXPRESSION' IN types ) AND ( 'STRING' IN TYPEOF( vlist[1] ) ) AND ( 'NUMBER' IN TYPEOF( vlist[2] ) ) AND (
31536        'NUMBER'  IN TYPEOF( vlist[3] ) ) THEN
31537      str := vlist[1];
31538      n := vlist[2];
31539      m := vlist[3];
31540      RETURN( convert_to_maths_value( str[n : m] ) );
31541    END_IF;
31542    IF ( 'TAN_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31543      RETURN( convert_to_maths_value( TAN( v1 ) ) );
31544    END_IF;
31545    IF ( 'UNARY_MINUS_EXPRESSION' IN types ) AND ( 'NUMBER' IN TYPEOF( v1 ) ) THEN
31546      nmb := v1;
31547      RETURN( convert_to_maths_value( -nmb ) );
31548    END_IF;
31549    IF ( 'VALUE_EXPRESSION' IN types ) AND ( 'STRING' IN TYPEOF( v1 ) ) THEN
31550      RETURN( convert_to_maths_value( VALUE( v1 ) ) );
31551    END_IF;
31552    IF ( 'XOR_EXPRESSION' IN types ) AND ( 'BOOLEAN' IN TYPEOF( v1 ) ) AND ( 'BOOLEAN' IN TYPEOF( v2 ) ) THEN
31553      RETURN( convert_to_maths_value( v1 XOR v2 ) );
31554    END_IF;
31555    IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
31556      RETURN( restore_unary( expr, op1 ) );
31557    END_IF;
31558    IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
31559      RETURN( restore_binary( expr, op1, op2 ) );
31560    END_IF;
31561    IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
31562      RETURN( restore_mulary( expr, oplist ) );
31563    END_IF;
31564    RETURN( expr );
31565
31566  END_FUNCTION;
31567
31568  FUNCTION simplify_maths_space(
31569               spc : maths_space
31570           ) : maths_space;
31571
31572    LOCAL
31573      factors  : LIST OF maths_space;
31574      zint     : INTEGER;
31575      zmax     : INTEGER;
31576      sset     : SET OF maths_value;
31577      stypes   : SET OF STRING := stripped_typeof( spc );
31578      zspc     : maths_space;
31579      zfactors : LIST OF maths_space := [];
31580      zmin     : INTEGER;
31581      zallint  : BOOLEAN := TRUE;
31582      zval     : maths_value;
31583      zset     : SET OF maths_value := [];
31584      rspc     : maths_space;
31585    END_LOCAL;
31586    IF 'FINITE_SPACE' IN stypes THEN
31587      sset := spc\finite_space.members;
31588      REPEAT i := 1 TO SIZEOF( sset ) BY 1;
31589        zval := simplify_maths_value( sset[i] );
31590        zset := zset + [zval];
31591        IF zallint AND ( 'INTEGER' IN TYPEOF( zval ) ) THEN
31592          zint := zval;
31593          IF i = 1 THEN
31594            zmin := zint;
31595            zmax := zint;
31596          ELSE
31597            IF zint < zmin THEN
31598              zmin := zint;
31599            END_IF;
31600            IF zint > zmax THEN
31601              zmax := zint;
31602            END_IF;
31603          END_IF;
31604        ELSE
31605          zallint := FALSE;
31606        END_IF;
31607      END_REPEAT;
31608      IF zallint AND ( SIZEOF( zset ) = ( ( zmax - zmin ) + 1 ) ) THEN
31609        RETURN( make_finite_integer_interval( zmin, zmax ) );
31610      END_IF;
31611      RETURN( make_finite_space( zset ) );
31612    END_IF;
31613    IF 'UNIFORM_PRODUCT_SPACE' IN stypes THEN
31614      zspc := simplify_maths_space( spc\uniform_product_space.base );
31615      RETURN( make_uniform_product_space( zspc, spc\uniform_product_space.exponent ) );
31616    END_IF;
31617    IF 'LISTED_PRODUCT_SPACE' IN stypes THEN
31618      factors := spc\listed_product_space.factors;
31619      REPEAT i := 1 TO SIZEOF( factors ) BY 1;
31620        INSERT( zfactors, simplify_maths_space( factors[i] ), i - 1 );
31621      END_REPEAT;
31622      RETURN( make_listed_product_space( zfactors ) );
31623    END_IF;
31624    IF 'EXTENDED_TUPLE_SPACE' IN stypes THEN
31625      zspc := simplify_maths_space( spc\extended_tuple_space.base );
31626      rspc := simplify_maths_space( spc\extended_tuple_space.extender );
31627      RETURN( make_extended_tuple_space( zspc, rspc ) );
31628    END_IF;
31629    IF 'FUNCTION_SPACE' IN stypes THEN
31630      zspc := simplify_maths_space( spc\function_space.domain_argument );
31631      rspc := simplify_maths_space( spc\function_space.range_argument );
31632      RETURN( make_function_space( spc\function_space.domain_constraint, zspc, spc\function_space.range_constraint, rspc ) );
31633    END_IF;
31634    RETURN( spc );
31635
31636  END_FUNCTION;
31637
31638  FUNCTION simplify_maths_value(
31639               val : maths_value
31640           ) : maths_value;
31641
31642    LOCAL
31643      nlist  : LIST OF maths_value := [];
31644      vtypes : SET OF STRING := stripped_typeof( val );
31645      vlist  : LIST OF maths_value;
31646    END_LOCAL;
31647    IF 'GENERIC_EXPRESSION' IN vtypes THEN
31648      RETURN( simplify_generic_expression( val ) );
31649    END_IF;
31650    IF 'LIST' IN vtypes THEN
31651      vlist := val;
31652      REPEAT i := 1 TO SIZEOF( vlist ) BY 1;
31653        INSERT( nlist, simplify_maths_value( vlist[i] ), i - 1 );
31654      END_REPEAT;
31655      RETURN( convert_to_maths_value( nlist ) );
31656    END_IF;
31657    RETURN( val );
31658
31659  END_FUNCTION;
31660
31661  FUNCTION singleton_member_of(
31662               spc : maths_space
31663           ) : maths_value;
31664
31665    LOCAL
31666      types : SET OF STRING := stripped_typeof( spc );
31667    END_LOCAL;
31668    IF 'FINITE_SPACE' IN types THEN
31669      IF SIZEOF( spc\finite_space.members ) = 1 THEN
31670        RETURN( spc\finite_space.members[1] );
31671      END_IF;
31672      RETURN( ? );
31673    END_IF;
31674    IF 'FINITE_INTEGER_INTERVAL' IN types THEN
31675      IF spc\finite_integer_interval.size = 1 THEN
31676        RETURN( spc\finite_integer_interval.min );
31677      END_IF;
31678      RETURN( ? );
31679    END_IF;
31680    RETURN( ? );
31681
31682  END_FUNCTION;
31683
31684  FUNCTION sort_link_associations(
31685               aprr : SET [1 : ?] OF pair_representation_relationship;
31686               one_not_two : BOOLEAN
31687           ) : SET OF kinematic_link_representation;
31688
31689    LOCAL
31690      result : SET OF kinematic_link_representation := [];
31691    END_LOCAL;
31692    IF one_not_two THEN
31693      REPEAT i := 1 TO HIINDEX( aprr ) BY 1;
31694        result := result + aprr[i].rep_1;
31695      END_REPEAT;
31696    ELSE
31697      REPEAT i := 1 TO HIINDEX( aprr ) BY 1;
31698        result := result + aprr[i].rep_2;
31699      END_REPEAT;
31700    END_IF;
31701    RETURN( result );
31702
31703  END_FUNCTION;
31704
31705  FUNCTION space_dimension(
31706               tspace : tuple_space
31707           ) : nonnegative_integer;
31708
31709    LOCAL
31710      types : SET OF STRING := TYPEOF( tspace );
31711    END_LOCAL;
31712    IF ( schema_prefix + 'UNIFORM_PRODUCT_SPACE' ) IN types THEN
31713      RETURN( tspace\uniform_product_space.exponent );
31714    END_IF;
31715    IF ( schema_prefix + 'LISTED_PRODUCT_SPACE' ) IN types THEN
31716      RETURN( SIZEOF( tspace\listed_product_space.factors ) );
31717    END_IF;
31718    IF ( schema_prefix + 'EXTENDED_TUPLE_SPACE' ) IN types THEN
31719      RETURN( space_dimension( tspace\extended_tuple_space.base ) );
31720    END_IF;
31721    RETURN( ? );
31722
31723  END_FUNCTION;
31724
31725  FUNCTION space_is_continuum(
31726               space : maths_space
31727           ) : BOOLEAN;
31728
31729    LOCAL
31730      factors   : LIST OF maths_space;
31731      typenames : SET OF STRING := TYPEOF( space );
31732    END_LOCAL;
31733    IF NOT EXISTS( space ) THEN
31734      RETURN( FALSE );
31735    END_IF;
31736    IF subspace_of_es( space, es_reals ) OR subspace_of_es( space, es_complex_numbers ) THEN
31737      RETURN( TRUE );
31738    END_IF;
31739    IF ( schema_prefix + 'UNIFORM_PRODUCT_SPACE' ) IN typenames THEN
31740      RETURN( space_is_continuum( space\uniform_product_space.base ) );
31741    END_IF;
31742    IF ( schema_prefix + 'LISTED_PRODUCT_SPACE' ) IN typenames THEN
31743      factors := space\listed_product_space.factors;
31744      IF SIZEOF( factors ) = 0 THEN
31745        RETURN( FALSE );
31746      END_IF;
31747      REPEAT i := 1 TO SIZEOF( factors ) BY 1;
31748        IF NOT space_is_continuum( factors[i] ) THEN
31749          RETURN( FALSE );
31750        END_IF;
31751      END_REPEAT;
31752      RETURN( TRUE );
31753    END_IF;
31754    RETURN( FALSE );
31755
31756  END_FUNCTION;
31757
31758  FUNCTION space_is_singleton(
31759               spc : maths_space
31760           ) : BOOLEAN;
31761
31762    LOCAL
31763      types : SET OF STRING := stripped_typeof( spc );
31764    END_LOCAL;
31765    IF 'FINITE_SPACE' IN types THEN
31766      RETURN( bool( SIZEOF( spc\finite_space.members ) = 1 ) );
31767    END_IF;
31768    IF 'FINITE_INTEGER_INTERVAL' IN types THEN
31769      RETURN( bool( spc\finite_integer_interval.size = 1 ) );
31770    END_IF;
31771    RETURN( FALSE );
31772
31773  END_FUNCTION;
31774
31775  FUNCTION stripped_typeof(
31776               arg : GENERIC:g
31777           ) : SET OF STRING;
31778
31779    LOCAL
31780      stypes : SET OF STRING := [];
31781      n      : INTEGER := LENGTH( schema_prefix );
31782      types  : SET OF STRING := TYPEOF( arg );
31783    END_LOCAL;
31784    REPEAT i := 1 TO SIZEOF( types ) BY 1;
31785      IF types[i][1 : n] = schema_prefix THEN
31786        stypes := stypes + types[i][n + 1 : LENGTH( types[i] )];
31787      ELSE
31788        stypes := stypes + types[i];
31789      END_IF;
31790    END_REPEAT;
31791    RETURN( stypes );
31792
31793  END_FUNCTION;
31794
31795  FUNCTION sts_get_general_datum_reference(
31796               input : datum_reference_element
31797           ) : general_datum_reference;
31798
31799    LOCAL
31800      general_datum_reference_bag : BAG OF general_datum_reference := USEDIN( input,
31801                                     'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'  + 'GENERAL_DATUM_REFERENCE.' + 'BASE' );
31802    END_LOCAL;
31803    IF SIZEOF( general_datum_reference_bag ) = 1 THEN
31804      RETURN( general_datum_reference_bag[1] );
31805    ELSE
31806      RETURN( ? );
31807    END_IF;
31808
31809  END_FUNCTION;
31810
31811  FUNCTION sts_get_product_definition_shape(
31812               input : geometric_tolerance_target
31813           ) : product_definition_shape;
31814    CASE TRUE OF
31815      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_LOCATION' IN TYPEOF( input ) :         RETURN( input\
31816            shape_aspect_relationship.relating_shape_aspect\shape_aspect.of_shape );
31817      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DIMENSIONAL_SIZE' IN TYPEOF( input ) :         RETURN( input\
31818            dimensional_size.applies_to\shape_aspect.of_shape );
31819      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_SHAPE' IN TYPEOF( input ) :         RETURN( input );
31820      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF( input ) :         RETURN( input\shape_aspect.
31821            of_shape );
31822      OTHERWISE                            :         RETURN( ? );
31823      END_CASE;
31824
31825  END_FUNCTION;
31826
31827  FUNCTION subspace_of(
31828               space1, space2 : maths_space
31829           ) : LOGICAL;
31830
31831    LOCAL
31832      prgn2  : polar_complex_number_region;
31833      prgn1  : polar_complex_number_region;
31834      spc1   : maths_space := simplify_maths_space( space1 );
31835      spc2   : maths_space := simplify_maths_space( space2 );
31836      es_val : elementary_space_enumerators;
31837      bnd1   : REAL;
31838      bnd2   : REAL;
31839      n      : INTEGER;
31840      sp2    : maths_space;
31841      sp1    : maths_space;
31842      aitv   : finite_real_interval;
31843      cum    : LOGICAL;
31844      lgcl   : LOGICAL;
31845      types2 : SET OF STRING := stripped_typeof( spc2 );
31846      types1 : SET OF STRING := stripped_typeof( spc1 );
31847    END_LOCAL;
31848    IF ( NOT EXISTS( spc1 ) ) OR ( NOT EXISTS( spc2 ) ) THEN
31849      RETURN( FALSE );
31850    END_IF;
31851    IF spc2 = the_generics THEN
31852      RETURN( TRUE );
31853    END_IF;
31854    IF 'ELEMENTARY_SPACE' IN types1 THEN
31855      IF NOT ( 'ELEMENTARY_SPACE' IN types2 ) THEN
31856        RETURN( FALSE );
31857      END_IF;
31858      es_val := spc2\elementary_space.space_id;
31859      IF spc1\elementary_space.space_id = es_val THEN
31860        RETURN( TRUE );
31861      END_IF;
31862      CASE spc1\elementary_space.space_id OF
31863        es_numbers        :           RETURN( FALSE );
31864        es_complex_numbers :           RETURN( es_val = es_numbers );
31865        es_reals          :           RETURN( es_val = es_numbers );
31866        es_integers       :           RETURN( es_val = es_numbers );
31867        es_logicals       :           RETURN( FALSE );
31868        es_booleans       :           RETURN( es_val = es_logicals );
31869        es_strings        :           RETURN( FALSE );
31870        es_binarys        :           RETURN( FALSE );
31871        es_maths_spaces   :           RETURN( FALSE );
31872        es_maths_functions :           RETURN( FALSE );
31873        es_generics       :           RETURN( FALSE );
31874        END_CASE;
31875      RETURN( UNKNOWN );
31876    END_IF;
31877    IF 'FINITE_INTEGER_INTERVAL' IN types1 THEN
31878      cum := TRUE;
31879      REPEAT i := spc1\finite_integer_interval.min TO spc1\finite_integer_interval.max BY 1;
31880        cum := cum AND member_of( i, spc2 );
31881        IF cum = FALSE THEN
31882          RETURN( FALSE );
31883        END_IF;
31884      END_REPEAT;
31885      RETURN( cum );
31886    END_IF;
31887    IF 'INTEGER_INTERVAL_FROM_MIN' IN types1 THEN
31888      IF 'ELEMENTARY_SPACE' IN types2 THEN
31889        es_val := spc2\elementary_space.space_id;
31890        RETURN( ( es_val = es_numbers ) OR ( es_val = es_integers ) );
31891      END_IF;
31892      IF 'INTEGER_INTERVAL_FROM_MIN' IN types2 THEN
31893        RETURN( spc1\integer_interval_from_min.min >= spc2\integer_interval_from_min.min );
31894      END_IF;
31895      RETURN( FALSE );
31896    END_IF;
31897    IF 'INTEGER_INTERVAL_TO_MAX' IN types1 THEN
31898      IF 'ELEMENTARY_SPACE' IN types2 THEN
31899        es_val := spc2\elementary_space.space_id;
31900        RETURN( ( es_val = es_numbers ) OR ( es_val = es_integers ) );
31901      END_IF;
31902      IF 'INTEGER_INTERVAL_TO_MAX' IN types2 THEN
31903        RETURN( spc1\integer_interval_to_max.max <= spc2\integer_interval_to_max.max );
31904      END_IF;
31905      RETURN( FALSE );
31906    END_IF;
31907    IF 'FINITE_REAL_INTERVAL' IN types1 THEN
31908      IF 'ELEMENTARY_SPACE' IN types2 THEN
31909        es_val := spc2\elementary_space.space_id;
31910        RETURN( ( es_val = es_numbers ) OR ( es_val = es_reals ) );
31911      END_IF;
31912      IF ( 'FINITE_REAL_INTERVAL' IN types2 ) OR ( 'REAL_INTERVAL_FROM_MIN' IN types2 ) OR ( 'REAL_INTERVAL_TO_MAX' IN types2 )
31913          THEN
31914        IF min_exists( spc2 ) THEN
31915          bnd1 := spc1\finite_real_interval.min;
31916          bnd2 := real_min( spc2 );
31917          IF ( bnd1 < bnd2 ) OR ( ( bnd1 = bnd2 ) AND min_included( spc1 ) AND ( NOT min_included( spc2 ) ) ) THEN
31918            RETURN( FALSE );
31919          END_IF;
31920        END_IF;
31921        IF max_exists( spc2 ) THEN
31922          bnd1 := spc1\finite_real_interval.max;
31923          bnd2 := real_max( spc2 );
31924          IF ( bnd1 > bnd2 ) OR ( ( bnd1 = bnd2 ) AND max_included( spc1 ) AND ( NOT max_included( spc2 ) ) ) THEN
31925            RETURN( FALSE );
31926          END_IF;
31927        END_IF;
31928        RETURN( TRUE );
31929      END_IF;
31930      RETURN( FALSE );
31931    END_IF;
31932    IF 'REAL_INTERVAL_FROM_MIN' IN types1 THEN
31933      IF 'ELEMENTARY_SPACE' IN types2 THEN
31934        es_val := spc2\elementary_space.space_id;
31935        RETURN( ( es_val = es_numbers ) OR ( es_val = es_reals ) );
31936      END_IF;
31937      IF 'REAL_INTERVAL_FROM_MIN' IN types2 THEN
31938        bnd1 := spc1\real_interval_from_min.min;
31939        bnd2 := spc2\real_interval_from_min.min;
31940        RETURN( ( bnd2 < bnd1 ) OR ( ( bnd2 = bnd1 ) AND ( min_included( spc2 ) OR ( NOT min_included( spc1 ) ) ) ) );
31941      END_IF;
31942      RETURN( FALSE );
31943    END_IF;
31944    IF 'REAL_INTERVAL_TO_MAX' IN types1 THEN
31945      IF 'ELEMENTARY_SPACE' IN types2 THEN
31946        es_val := spc2\elementary_space.space_id;
31947        RETURN( ( es_val = es_numbers ) OR ( es_val = es_reals ) );
31948      END_IF;
31949      IF 'REAL_INTERVAL_TO_MAX' IN types2 THEN
31950        bnd1 := spc1\real_interval_to_max.max;
31951        bnd2 := spc2\real_interval_to_max.max;
31952        RETURN( ( bnd2 > bnd1 ) OR ( ( bnd2 = bnd1 ) AND ( max_included( spc2 ) OR ( NOT max_included( spc1 ) ) ) ) );
31953      END_IF;
31954      RETURN( FALSE );
31955    END_IF;
31956    IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types1 THEN
31957      IF 'ELEMENTARY_SPACE' IN types2 THEN
31958        es_val := spc2\elementary_space.space_id;
31959        RETURN( ( es_val = es_numbers ) OR ( es_val = es_complex_numbers ) );
31960      END_IF;
31961      IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 THEN
31962        RETURN( subspace_of( spc1\cartesian_complex_number_region.real_constraint, spc2\cartesian_complex_number_region.
31963            real_constraint ) AND subspace_of( spc1\cartesian_complex_number_region.imag_constraint, spc2\
31964            cartesian_complex_number_region.imag_constraint ) );
31965      END_IF;
31966      IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2 THEN
31967        RETURN( subspace_of( enclose_cregion_in_pregion( spc1, spc2\polar_complex_number_region.centre ), spc2 ) );
31968      END_IF;
31969      RETURN( FALSE );
31970    END_IF;
31971    IF 'POLAR_COMPLEX_NUMBER_REGION' IN types1 THEN
31972      IF 'ELEMENTARY_SPACE' IN types2 THEN
31973        es_val := spc2\elementary_space.space_id;
31974        RETURN( ( es_val = es_numbers ) OR ( es_val = es_complex_numbers ) );
31975      END_IF;
31976      IF 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types2 THEN
31977        RETURN( subspace_of( enclose_pregion_in_cregion( spc1 ), spc2 ) );
31978      END_IF;
31979      IF 'POLAR_COMPLEX_NUMBER_REGION' IN types2 THEN
31980        prgn1 := spc1;
31981        prgn2 := spc2;
31982        IF prgn1.centre = prgn2.centre THEN
31983          IF prgn2.direction_constraint.max > PI THEN
31984            aitv := make_finite_real_interval( -PI, open, prgn2.direction_constraint.max - ( 2 * PI ), prgn2.direction_constraint
31985                .max_closure );
31986            RETURN( subspace_of( prgn1.distance_constraint, prgn2.distance_constraint ) AND ( subspace_of( prgn1.
31987                direction_constraint, prgn2.direction_constraint ) OR subspace_of( prgn1.direction_constraint, aitv ) ) );
31988          ELSE
31989            RETURN( subspace_of( prgn1.distance_constraint, prgn2.distance_constraint ) AND subspace_of( prgn1.
31990                direction_constraint, prgn2.direction_constraint ) );
31991          END_IF;
31992        END_IF;
31993        RETURN( subspace_of( enclose_pregion_in_pregion( prgn1, prgn2.centre ), prgn2 ) );
31994      END_IF;
31995      RETURN( FALSE );
31996    END_IF;
31997    IF 'FINITE_SPACE' IN types1 THEN
31998      cum := TRUE;
31999      REPEAT i := 1 TO SIZEOF( spc1\finite_space.members ) BY 1;
32000        cum := cum AND member_of( spc1\finite_space.members[i], spc2 );
32001        IF cum = FALSE THEN
32002          RETURN( FALSE );
32003        END_IF;
32004      END_REPEAT;
32005      RETURN( cum );
32006    END_IF;
32007    IF 'PRODUCT_SPACE' IN types1 THEN
32008      IF 'PRODUCT_SPACE' IN types2 THEN
32009        IF space_dimension( spc1 ) = space_dimension( spc2 ) THEN
32010          cum := TRUE;
32011          REPEAT i := 1 TO space_dimension( spc1 ) BY 1;
32012            cum := cum AND subspace_of( factor_space( spc1, i ), factor_space( spc2, i ) );
32013            IF cum = FALSE THEN
32014              RETURN( FALSE );
32015            END_IF;
32016          END_REPEAT;
32017          RETURN( cum );
32018        END_IF;
32019      END_IF;
32020      IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
32021        IF space_dimension( spc1 ) >= space_dimension( spc2 ) THEN
32022          cum := TRUE;
32023          REPEAT i := 1 TO space_dimension( spc1 ) BY 1;
32024            cum := cum AND subspace_of( factor_space( spc1, i ), factor_space( spc2, i ) );
32025            IF cum = FALSE THEN
32026              RETURN( FALSE );
32027            END_IF;
32028          END_REPEAT;
32029          RETURN( cum );
32030        END_IF;
32031      END_IF;
32032      RETURN( FALSE );
32033    END_IF;
32034    IF 'EXTENDED_TUPLE_SPACE' IN types1 THEN
32035      IF 'EXTENDED_TUPLE_SPACE' IN types2 THEN
32036        n := space_dimension( spc1 );
32037        IF n < space_dimension( spc2 ) THEN
32038          n := space_dimension( spc2 );
32039        END_IF;
32040        cum := TRUE;
32041        REPEAT i := 1 TO n + 1 BY 1;
32042          cum := cum AND subspace_of( factor_space( spc1, i ), factor_space( spc2, i ) );
32043          IF cum = FALSE THEN
32044            RETURN( FALSE );
32045          END_IF;
32046        END_REPEAT;
32047        RETURN( cum );
32048      END_IF;
32049      RETURN( FALSE );
32050    END_IF;
32051    IF 'FUNCTION_SPACE' IN types1 THEN
32052      IF 'ELEMENTARY_SPACE' IN types2 THEN
32053        RETURN( spc2\elementary_space.space_id = es_maths_functions );
32054      END_IF;
32055      IF 'FUNCTION_SPACE' IN types2 THEN
32056        cum := TRUE;
32057        sp1 := spc1\function_space.domain_argument;
32058        sp2 := spc2\function_space.domain_argument;
32059        CASE spc1\function_space.domain_constraint OF
32060          sc_equal   :
32061            BEGIN
32062              CASE spc2\function_space.domain_constraint OF
32063                sc_equal   :                   cum := cum AND equal_maths_spaces( sp1, sp2 );
32064                sc_subspace :                   cum := cum AND subspace_of( sp1, sp2 );
32065                sc_member  :                   cum := cum AND member_of( sp1, sp2 );
32066                END_CASE;
32067            END;
32068          sc_subspace :
32069            BEGIN
32070              CASE spc2\function_space.domain_constraint OF
32071                sc_equal   :                   RETURN( FALSE );
32072                sc_subspace :                   cum := cum AND subspace_of( sp1, sp2 );
32073                sc_member  :
32074                  BEGIN
32075                    IF NOT member_of( sp1, sp2 ) THEN
32076                      RETURN( FALSE );
32077                    END_IF;
32078                    cum := UNKNOWN;
32079                  END;
32080                END_CASE;
32081            END;
32082          sc_member  :
32083            BEGIN
32084              CASE spc2\function_space.domain_constraint OF
32085                sc_equal   :                   cum := cum AND space_is_singleton( sp1 ) AND equal_maths_spaces(
32086                      singleton_member_of( sp1 ), sp2 );
32087                sc_subspace :
32088                  BEGIN
32089                    IF NOT member_of( sp2, sp1 ) THEN
32090                      RETURN( FALSE );
32091                    END_IF;
32092                    cum := UNKNOWN;
32093                  END;
32094                sc_member  :                   cum := cum AND subspace_of( sp1, sp2 );
32095                END_CASE;
32096            END;
32097          END_CASE;
32098        IF cum = FALSE THEN
32099          RETURN( FALSE );
32100        END_IF;
32101        sp1 := spc1\function_space.range_argument;
32102        sp2 := spc2\function_space.range_argument;
32103        CASE spc1\function_space.range_constraint OF
32104          sc_equal   :
32105            BEGIN
32106              CASE spc2\function_space.range_constraint OF
32107                sc_equal   :                   cum := cum AND equal_maths_spaces( sp1, sp2 );
32108                sc_subspace :                   cum := cum AND subspace_of( sp1, sp2 );
32109                sc_member  :                   cum := cum AND member_of( sp1, sp2 );
32110                END_CASE;
32111            END;
32112          sc_subspace :
32113            BEGIN
32114              CASE spc2\function_space.domain_constraint OF
32115                sc_equal   :                   RETURN( FALSE );
32116                sc_subspace :                   cum := cum AND subspace_of( sp1, sp2 );
32117                sc_member  :
32118                  BEGIN
32119                    IF NOT member_of( sp1, sp2 ) THEN
32120                      RETURN( FALSE );
32121                    END_IF;
32122                    cum := UNKNOWN;
32123                  END;
32124                END_CASE;
32125            END;
32126          sc_member  :
32127            BEGIN
32128              CASE spc2\function_space.domain_constraint OF
32129                sc_equal   :                   cum := cum AND space_is_singleton( sp1 ) AND equal_maths_spaces(
32130                      singleton_member_of( sp1 ), sp2 );
32131                sc_subspace :
32132                  BEGIN
32133                    IF NOT member_of( sp2, sp1 ) THEN
32134                      RETURN( FALSE );
32135                    END_IF;
32136                    cum := UNKNOWN;
32137                  END;
32138                sc_member  :                   cum := cum AND subspace_of( sp1, sp2 );
32139                END_CASE;
32140            END;
32141          END_CASE;
32142        RETURN( cum );
32143      END_IF;
32144      RETURN( FALSE );
32145    END_IF;
32146    RETURN( UNKNOWN );
32147
32148  END_FUNCTION;
32149
32150  FUNCTION subspace_of_es(
32151               spc : maths_space;
32152               es : elementary_space_enumerators
32153           ) : LOGICAL;
32154
32155    LOCAL
32156      types : SET OF STRING := stripped_typeof( spc );
32157    END_LOCAL;
32158    IF ( NOT EXISTS( spc ) ) OR ( NOT EXISTS( es ) ) THEN
32159      RETURN( FALSE );
32160    END_IF;
32161    IF 'ELEMENTARY_SPACE' IN types THEN
32162      RETURN( es_subspace_of_es( spc\elementary_space.space_id, es ) );
32163    END_IF;
32164    IF 'FINITE_SPACE' IN types THEN
32165      RETURN( all_members_of_es( spc\finite_space.members, es ) );
32166    END_IF;
32167    CASE es OF
32168      es_numbers        :         RETURN( ( 'FINITE_INTEGER_INTERVAL' IN types ) OR ( 'INTEGER_INTERVAL_FROM_MIN' IN types ) OR
32169            ( 'INTEGER_INTERVAL_TO_MAX' IN types ) OR ( 'FINITE_REAL_INTERVAL' IN types ) OR ( 'REAL_INTERVAL_FROM_MIN' IN types )
32170            OR ( 'REAL_INTERVAL_TO_MAX' IN types ) OR ( 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types ) OR (
32171            'POLAR_COMPLEX_NUMBER_REGION'  IN types ) );
32172      es_complex_numbers :         RETURN( ( 'CARTESIAN_COMPLEX_NUMBER_REGION' IN types ) OR ( 'POLAR_COMPLEX_NUMBER_REGION' IN
32173            types ) );
32174      es_reals          :         RETURN( ( 'FINITE_REAL_INTERVAL' IN types ) OR ( 'REAL_INTERVAL_FROM_MIN' IN types ) OR (
32175            'REAL_INTERVAL_TO_MAX'  IN types ) );
32176      es_integers       :         RETURN( ( 'FINITE_INTEGER_INTERVAL' IN types ) OR ( 'INTEGER_INTERVAL_FROM_MIN' IN types ) OR
32177            ( 'INTEGER_INTERVAL_TO_MAX' IN types ) );
32178      es_logicals       :         RETURN( FALSE );
32179      es_booleans       :         RETURN( FALSE );
32180      es_strings        :         RETURN( FALSE );
32181      es_binarys        :         RETURN( FALSE );
32182      es_maths_spaces   :         RETURN( FALSE );
32183      es_maths_functions :         RETURN( 'FUNCTION_SPACE' IN types );
32184      es_generics       :         RETURN( TRUE );
32185      END_CASE;
32186    RETURN( UNKNOWN );
32187
32188  END_FUNCTION;
32189
32190  FUNCTION substitute(
32191               expr : generic_expression;
32192               vars : LIST [1 : ?] OF generic_variable;
32193               vals : LIST [1 : ?] OF maths_value
32194           ) : generic_expression;
32195
32196    LOCAL
32197      opnds  : LIST OF generic_expression;
32198      srcdom : maths_space_or_function;
32199      op2    : generic_expression;
32200      op1    : generic_expression;
32201      prpfun : LIST [1 : ?] OF maths_function;
32202      types  : SET OF STRING := stripped_typeof( expr );
32203      finfun : maths_function_select;
32204      qvars  : LIST OF generic_variable;
32205    END_LOCAL;
32206    IF SIZEOF( vars ) <> SIZEOF( vals ) THEN
32207      RETURN( ? );
32208    END_IF;
32209    IF 'GENERIC_LITERAL' IN types THEN
32210      RETURN( expr );
32211    END_IF;
32212    IF 'GENERIC_VARIABLE' IN types THEN
32213      REPEAT i := 1 TO SIZEOF( vars ) BY 1;
32214        IF expr :=: vars[i] THEN
32215          RETURN( vals[i] );
32216        END_IF;
32217      END_REPEAT;
32218      RETURN( expr );
32219    END_IF;
32220    IF 'QUANTIFIER_EXPRESSION' IN types THEN
32221      qvars := expr\quantifier_expression.variables;
32222      REPEAT i := SIZEOF( vars ) TO 1 BY -1;
32223        IF vars[i] IN qvars THEN
32224          REMOVE( vars, i );
32225          REMOVE( vals, i );
32226        END_IF;
32227      END_REPEAT;
32228      opnds := expr\multiple_arity_generic_expression.operands;
32229      REPEAT i := 1 TO SIZEOF( opnds ) BY 1;
32230        IF NOT ( opnds[i] IN qvars ) THEN
32231          expr\multiple_arity_generic_expression.operands[i] := substitute( opnds[i], vars, vals );
32232        END_IF;
32233      END_REPEAT;
32234      RETURN( expr );
32235    END_IF;
32236    IF 'UNARY_GENERIC_EXPRESSION' IN types THEN
32237      op1 := expr\unary_generic_expression.operand;
32238      expr\unary_generic_expression.operand := substitute( op1, vars, vals );
32239    END_IF;
32240    IF 'BINARY_GENERIC_EXPRESSION' IN types THEN
32241      op1 := expr\binary_generic_expression.operands[1];
32242      expr\binary_generic_expression.operands[1] := substitute( op1, vars, vals );
32243      op2 := expr\binary_generic_expression.operands[2];
32244      expr\binary_generic_expression.operands[2] := substitute( op2, vars, vals );
32245    END_IF;
32246    IF 'PARALLEL_COMPOSED_FUNCTION' IN types THEN
32247      srcdom := expr\parallel_composed_function.source_of_domain;
32248      prpfun := expr\parallel_composed_function.prep_functions;
32249      finfun := expr\parallel_composed_function.final_function;
32250      srcdom := substitute( srcdom, vars, vals );
32251      REPEAT i := 1 TO SIZEOF( prpfun ) BY 1;
32252        prpfun[i] := substitute( prpfun[i], vars, vals );
32253      END_REPEAT;
32254      IF 'MATHS_FUNCTION' IN stripped_typeof( finfun ) THEN
32255        finfun := substitute( finfun, vars, vals );
32256      END_IF;
32257      RETURN( make_parallel_composed_function( srcdom, prpfun, finfun ) );
32258    END_IF;
32259    IF 'MULTIPLE_ARITY_GENERIC_EXPRESSION' IN types THEN
32260      opnds := expr\multiple_arity_generic_expression.operands;
32261      REPEAT i := 1 TO SIZEOF( opnds ) BY 1;
32262        expr\multiple_arity_generic_expression.operands[i] := substitute( opnds[i], vars, vals );
32263      END_REPEAT;
32264    END_IF;
32265    RETURN( expr );
32266
32267  END_FUNCTION;
32268
32269  FUNCTION surface_condition_correlation(
32270               pd : property_definition;
32271               rep : representation
32272           ) : LOGICAL;
32273    CASE pd.name OF
32274      'visual appearance' :         RETURN( pd.name = rep.name );
32275      'tactile appearance' :         RETURN( pd.name = rep.name );
32276      'contact ratio' :         RETURN( pd.name = rep.name );
32277      'hardness'     :         RETURN( pd.name = rep.name );
32278      'treatment result' :         RETURN( pd.name = rep.name );
32279      'surface texture' :         RETURN( pd.name = rep.name );
32280      OTHERWISE      :         RETURN( UNKNOWN );
32281      END_CASE;
32282
32283  END_FUNCTION;
32284
32285  FUNCTION surface_weights_positive(
32286               b : rational_b_spline_surface
32287           ) : BOOLEAN;
32288
32289    LOCAL
32290      result : BOOLEAN := TRUE;
32291    END_LOCAL;
32292    REPEAT i := 0 TO b.u_upper BY 1;
32293      REPEAT j := 0 TO b.v_upper BY 1;
32294        IF b.weights[i][j] <= 0 THEN
32295          result := FALSE;
32296          RETURN( result );
32297        END_IF;
32298      END_REPEAT;
32299    END_REPEAT;
32300    RETURN( result );
32301
32302  END_FUNCTION;
32303
32304  FUNCTION topology_reversed(
32305               an_item : reversible_topology
32306           ) : reversible_topology;
32307    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.EDGE' IN TYPEOF( an_item ) THEN
32308      RETURN( edge_reversed( an_item ) );
32309    END_IF;
32310    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PATH' IN TYPEOF( an_item ) THEN
32311      RETURN( path_reversed( an_item ) );
32312    END_IF;
32313    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE_BOUND' IN TYPEOF( an_item ) THEN
32314      RETURN( face_bound_reversed( an_item ) );
32315    END_IF;
32316    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FACE' IN TYPEOF( an_item ) THEN
32317      RETURN( face_reversed( an_item ) );
32318    END_IF;
32319    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHELL' IN TYPEOF( an_item ) THEN
32320      RETURN( shell_reversed( an_item ) );
32321    END_IF;
32322    IF 'SET' IN TYPEOF( an_item ) THEN
32323      RETURN( set_of_topology_reversed( an_item ) );
32324    END_IF;
32325    IF 'LIST' IN TYPEOF( an_item ) THEN
32326      RETURN( list_of_topology_reversed( an_item ) );
32327    END_IF;
32328    RETURN( ? );
32329
32330  END_FUNCTION;
32331
32332  FUNCTION type_check_function(
32333               the_type : GENERIC;
32334               sub_names : SET OF STRING;
32335               criterion : INTEGER
32336           ) : LOGICAL;
32337    IF ( NOT EXISTS( the_type ) ) OR ( SIZEOF( sub_names ) = 0 ) THEN
32338      RETURN( UNKNOWN );
32339    ELSE
32340      CASE criterion OF
32341        0        :           RETURN( SIZEOF( sub_names * TYPEOF( the_type ) ) > 0 );
32342        1        :           RETURN( SIZEOF( sub_names * TYPEOF( the_type ) ) = 0 );
32343        2        :           RETURN( SIZEOF( sub_names * TYPEOF( the_type ) ) = 1 );
32344        3        :           RETURN( SIZEOF( sub_names * TYPEOF( the_type ) ) <= 1 );
32345        OTHERWISE  :           RETURN( UNKNOWN );
32346        END_CASE;
32347    END_IF;
32348
32349  END_FUNCTION;
32350
32351  FUNCTION unambiguously_specified_multi_level_reference_designator(
32352               links : LIST [1 : ?] OF next_assembly_usage_occurrence
32353           ) : BOOLEAN;
32354    REPEAT i := 1 TO SIZEOF( links ) - 1 BY 1;
32355      CASE TRUE OF
32356        ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF( links[i]\
32357            product_definition_relationship.relating_product_definition ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32358            + 'PRODUCT_DEFINITION'  IN TYPEOF( links[i]\product_definition_relationship.related_product_definition ) ) AND (
32359            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION'  IN TYPEOF( links[i + 1]\
32360            product_definition_relationship.relating_product_definition ) ) :
32361          BEGIN
32362            IF NOT ( ( links[i]\product_definition_relationship.related_product_definition :=: links[i + 1]\
32363                product_definition_relationship.relating_product_definition ) OR ( ( SIZEOF( QUERY ( pdr <* USEDIN( links[i]\
32364                product_definition_relationship.related_product_definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32365                + 'PRODUCT_DEFINITION_RELATIONSHIP.'  + 'RELATED_PRODUCT_DEFINITION' ) | ( pdr\product_definition_relationship.
32366                relating_product_definition :=: links[i + 1]\product_definition_relationship.relating_product_definition ) ) ) = 1 )
32367                AND ( links[i]\product_definition_relationship.related_product_definition\product_definition.formation\
32368                product_definition_formation.of_product :=: links[i + 1]\product_definition_relationship.
32369                relating_product_definition\product_definition.formation\product_definition_formation.of_product ) ) ) THEN
32370              RETURN( FALSE );
32371            END_IF;
32372          END;
32373        ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN TYPEOF( links[i]\
32374            product_definition_relationship.related_product_definition ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32375            + 'PRODUCT_DEFINITION_REFERENCE'  IN TYPEOF( links[i + 1]\product_definition_relationship.relating_product_definition ) ) :
32376          BEGIN
32377            IF NOT ( ( links[i]\product_definition_relationship.related_product_definition :=: links[i + 1]\
32378                product_definition_relationship.relating_product_definition ) OR ( ( SIZEOF( QUERY ( pdr <* USEDIN( links[i]\
32379                product_definition_relationship.related_product_definition, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32380                + 'PRODUCT_DEFINITION_RELATIONSHIP.'  + 'RELATED_PRODUCT_DEFINITION' ) | ( pdr\product_definition_relationship.
32381                relating_product_definition :=: links[i + 1]\product_definition_relationship.relating_product_definition ) ) ) = 1 )
32382                AND ( links[i]\product_definition_relationship.related_product_definition\product_definition_reference.product_id
32383                = links[i + 1]\product_definition_relationship.relating_product_definition\product_definition_reference.product_id )
32384                AND ( links[i]\product_definition_relationship.related_product_definition\product_definition_reference.
32385                id_owning_organization_name = links[i + 1]\product_definition_relationship.relating_product_definition\
32386                product_definition_reference.id_owning_organization_name ) AND ( links[i]\product_definition_relationship.
32387                related_product_definition\product_definition_reference.product_definition_id <> links[i + 1]\
32388                product_definition_relationship.relating_product_definition\product_definition_reference.product_definition_id ) ) )
32389                THEN
32390              RETURN( FALSE );
32391            END_IF;
32392          END;
32393        ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION_REFERENCE' IN TYPEOF( links[i]\
32394            product_definition_relationship.relating_product_definition ) ) AND ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32395            + 'PRODUCT_DEFINITION'  IN TYPEOF( links[i]\product_definition_relationship.related_product_definition ) ) :           RETURN
32396              ( FALSE );
32397        OTHERWISE                          :           RETURN( FALSE );
32398        END_CASE;
32399    END_REPEAT;
32400    RETURN( TRUE );
32401
32402  END_FUNCTION;
32403
32404  FUNCTION unique_in_product_definition(
32405               item : representative_shape_representation
32406           ) : BOOLEAN;
32407
32408    LOCAL
32409      local_p_d : SET OF product_definition := [];
32410      i         : INTEGER;
32411      j         : INTEGER;
32412      local_s_r : SET OF shape_representation := [];
32413    END_LOCAL;
32414    local_p_d := using_product_definition_of_shape_representation( item );
32415    IF SIZEOF( local_p_d ) <> 1 THEN
32416      RETURN( FALSE );
32417    ELSE
32418      REPEAT i := 1 TO HIINDEX( local_p_d ) BY 1;
32419        local_s_r := find_shape_representation_of_product_definition( local_p_d[i] );
32420        REPEAT j := 1 TO HIINDEX( local_s_r ) BY 1;
32421          IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF( local_s_r[j] ) )
32422              AND ( local_s_r[j] :<>: item ) THEN
32423            RETURN( FALSE );
32424          END_IF;
32425        END_REPEAT;
32426      END_REPEAT;
32427    END_IF;
32428    RETURN( TRUE );
32429
32430  END_FUNCTION;
32431
32432  FUNCTION unique_in_shape_aspect(
32433               item : representative_shape_representation
32434           ) : BOOLEAN;
32435
32436    LOCAL
32437      i         : INTEGER;
32438      j         : INTEGER;
32439      local_s_r : SET OF shape_representation := [];
32440      local_s_a : SET OF shape_aspect := [];
32441    END_LOCAL;
32442    local_s_a := using_shape_aspect_of_shape_representation( item );
32443    IF SIZEOF( local_s_a ) <> 1 THEN
32444      RETURN( FALSE );
32445    ELSE
32446      REPEAT i := 1 TO HIINDEX( local_s_a ) BY 1;
32447        local_s_r := find_shape_representation_of_shape_aspect( local_s_a[i] );
32448        REPEAT j := 1 TO HIINDEX( local_s_r ) BY 1;
32449          IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATIVE_SHAPE_REPRESENTATION' IN TYPEOF( local_s_r[j] ) )
32450              AND ( local_s_r[j] :<>: item ) THEN
32451            RETURN( FALSE );
32452          END_IF;
32453        END_REPEAT;
32454      END_REPEAT;
32455    END_IF;
32456    RETURN( TRUE );
32457
32458  END_FUNCTION;
32459
32460  FUNCTION used_variables(
32461               arg : generic_expression
32462           ) : SET OF generic_variable;
32463
32464    LOCAL
32465      result : SET OF generic_variable := [];
32466    END_LOCAL;
32467    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.GENERIC_VARIABLE' IN TYPEOF( arg ) THEN
32468      RETURN( [arg] );
32469    END_IF;
32470    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.UNARY_GENERIC_EXPRESSION' IN TYPEOF( arg ) THEN
32471      RETURN( used_variables( arg\unary_generic_expression.operand ) );
32472    END_IF;
32473    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BINARY_GENERIC_EXPRESSION' IN TYPEOF( arg ) THEN
32474      RETURN( used_variables( arg\binary_generic_expression.operands[1] ) + used_variables( arg\binary_generic_expression.
32475          operands[2] ) );
32476    END_IF;
32477    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MULTIPLE_ARITY_GENERIC_EXPRESSION' IN TYPEOF( arg ) THEN
32478      REPEAT i := 1 TO SIZEOF( arg\multiple_arity_generic_expression.operands ) BY 1;
32479        result := result + used_variables( arg\multiple_arity_generic_expression.operands[i] );
32480      END_REPEAT;
32481      RETURN( result );
32482    END_IF;
32483    RETURN( [] );
32484
32485  END_FUNCTION;
32486
32487  FUNCTION using_items(
32488               item : founded_item_select;
32489               checked_items : SET OF founded_item_select
32490           ) : SET OF founded_item_select;
32491
32492    LOCAL
32493      next_items      : SET OF founded_item_select;
32494      result_items    : SET OF founded_item_select;
32495      new_check_items : SET OF founded_item_select;
32496    END_LOCAL;
32497    result_items := [];
32498    new_check_items := checked_items + item;
32499    next_items := QUERY ( z <* bag_to_set( USEDIN( item, '' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32500        + 'REPRESENTATION_ITEM'  IN TYPEOF( z ) ) OR ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FOUNDED_ITEM' IN TYPEOF(
32501        z ) ) ) );
32502    IF SIZEOF( next_items ) > 0 THEN
32503      REPEAT i := 1 TO HIINDEX( next_items ) BY 1;
32504        IF NOT ( next_items[i] IN new_check_items ) THEN
32505          result_items := result_items + next_items[i] + using_items( next_items[i], new_check_items );
32506        END_IF;
32507      END_REPEAT;
32508    END_IF;
32509    RETURN( result_items );
32510
32511  END_FUNCTION;
32512
32513  FUNCTION using_product_definition_of_shape_aspect(
32514               item : shape_aspect
32515           ) : product_definition;
32516    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF( item.of_shape.definition ) THEN
32517      RETURN( item.of_shape.definition );
32518    ELSE
32519      RETURN( ? );
32520    END_IF;
32521
32522  END_FUNCTION;
32523
32524  FUNCTION using_product_definition_of_shape_representation(
32525               item : shape_representation
32526           ) : SET OF product_definition;
32527
32528    LOCAL
32529      local_p_d   : SET OF product_definition := [];
32530      i           : INTEGER;
32531      local_s_d_r : SET OF shape_definition_representation := [];
32532    END_LOCAL;
32533    local_s_d_r := QUERY ( i1 <* bag_to_set( USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
32534        'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'  ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
32535        'SHAPE_DEFINITION_REPRESENTATION'  ) IN TYPEOF( i1 ) ) );
32536    REPEAT i := 1 TO HIINDEX( local_s_d_r ) BY 1;
32537      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION' IN TYPEOF( local_s_d_r[i]\
32538          property_definition_representation.definition ) THEN
32539        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRODUCT_DEFINITION' IN TYPEOF( local_s_d_r[i]\
32540            property_definition_representation.definition\property_definition.definition ) THEN
32541          local_p_d := local_p_d + local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
32542        END_IF;
32543      END_IF;
32544    END_REPEAT;
32545    RETURN( local_p_d );
32546
32547  END_FUNCTION;
32548
32549  FUNCTION using_representation_with_mapping(
32550               item : representation_item
32551           ) : SET OF representation;
32552
32553    LOCAL
32554      results                  : SET OF representation := [];
32555      intermediate_items       : SET OF representation_item := [];
32556      i                        : INTEGER;
32557      j                        : INTEGER;
32558      local_results            : SET OF representation := [];
32559      local_representation_map : SET OF representation_map := [];
32560    END_LOCAL;
32561    local_results := QUERY ( z <* using_representations( item ) | ( SIZEOF( USEDIN( z,
32562        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.'  + 'MAPPED_REPRESENTATION' ) ) > 0 ) );
32563    IF SIZEOF( local_results ) = 0 THEN
32564      RETURN( [] );
32565    ELSE
32566      REPEAT i := 1 TO HIINDEX( local_results ) BY 1;
32567        local_representation_map := local_representation_map + bag_to_set( USEDIN( local_results[i],
32568            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION_MAP.MAPPED_REPRESENTATION'  ) );
32569      END_REPEAT;
32570      REPEAT i := 1 TO HIINDEX( local_representation_map ) BY 1;
32571        intermediate_items := intermediate_items + bag_to_set( USEDIN( local_representation_map[i],
32572            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAPPED_ITEM.MAPPING_SOURCE'  ) );
32573      END_REPEAT;
32574      REPEAT j := 1 TO HIINDEX( intermediate_items ) BY 1;
32575        results := results + bag_to_set( using_representation_with_mapping( intermediate_items[j] ) );
32576      END_REPEAT;
32577    END_IF;
32578    RETURN( results );
32579
32580  END_FUNCTION;
32581
32582  FUNCTION using_representations(
32583               item : founded_item_select
32584           ) : SET OF representation;
32585
32586    LOCAL
32587      results            : SET OF representation;
32588      intermediate_items : SET OF founded_item_select;
32589      result_bag         : BAG OF representation;
32590    END_LOCAL;
32591    results := [];
32592    result_bag := USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' );
32593    IF SIZEOF( result_bag ) > 0 THEN
32594      REPEAT i := 1 TO HIINDEX( result_bag ) BY 1;
32595        results := results + result_bag[i];
32596      END_REPEAT;
32597    END_IF;
32598    intermediate_items := using_items( item, [] );
32599    IF SIZEOF( intermediate_items ) > 0 THEN
32600      REPEAT i := 1 TO HIINDEX( intermediate_items ) BY 1;
32601        result_bag := USEDIN( intermediate_items[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.REPRESENTATION.ITEMS' );
32602        IF SIZEOF( result_bag ) > 0 THEN
32603          REPEAT j := 1 TO HIINDEX( result_bag ) BY 1;
32604            results := results + result_bag[j];
32605          END_REPEAT;
32606        END_IF;
32607      END_REPEAT;
32608    END_IF;
32609    RETURN( results );
32610
32611  END_FUNCTION;
32612
32613  FUNCTION using_shape_aspect_of_shape_representation(
32614               item : shape_representation
32615           ) : SET OF shape_aspect;
32616
32617    LOCAL
32618      local_s_d_r2 : BAG OF shape_definition_representation := [];
32619      i            : INTEGER;
32620      local_s_d_r  : SET OF shape_definition_representation := [];
32621      local_s_a    : SET OF shape_aspect := [];
32622    END_LOCAL;
32623    local_s_d_r2 := local_s_d_r2 + QUERY ( pdr <* USEDIN( item, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32624        + 'PROPERTY_DEFINITION_REPRESENTATION.USED_REPRESENTATION'  ) | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32625        + 'SHAPE_DEFINITION_REPRESENTATION'  IN TYPEOF( pdr ) ) );
32626    local_s_d_r := bag_to_set( local_s_d_r2 );
32627    REPEAT i := 1 TO HIINDEX( local_s_d_r ) BY 1;
32628      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SHAPE_ASPECT' IN TYPEOF( local_s_d_r[i]\
32629          property_definition_representation.definition\property_definition.definition ) THEN
32630        local_s_a := local_s_a + local_s_d_r[i]\property_definition_representation.definition\property_definition.definition;
32631      END_IF;
32632    END_REPEAT;
32633    RETURN( local_s_a );
32634
32635  END_FUNCTION;
32636
32637  FUNCTION valid_basis_curve_in_2d_wireframe(
32638               crv : curve
32639           ) : BOOLEAN;
32640    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32641        + 'B_SPLINE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
32642        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' ] * TYPEOF( crv ) ) = 1 THEN
32643      RETURN( TRUE );
32644    ELSE
32645      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF( crv ) THEN
32646        IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32647            + 'PARABOLA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HYPERBOLA'] * TYPEOF( crv\trimmed_curve.basis_curve ) )
32648            = 1 THEN
32649          RETURN( TRUE );
32650        ELSE
32651          RETURN( valid_basis_curve_in_2d_wireframe( crv\trimmed_curve.basis_curve ) );
32652        END_IF;
32653      ELSE
32654        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_2D' IN TYPEOF( crv ) THEN
32655          RETURN( valid_basis_curve_in_2d_wireframe( crv\offset_curve_2d.basis_curve ) );
32656        ELSE
32657          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( crv ) THEN
32658            RETURN( valid_basis_curve_in_2d_wireframe( crv\curve_replica.parent_curve ) );
32659          ELSE
32660            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF( crv ) THEN
32661              RETURN( SIZEOF( QUERY ( ccs <* crv\composite_curve.segments | ( NOT valid_basis_curve_in_2d_wireframe( ccs.
32662                  parent_curve ) ) ) ) = 0 );
32663            END_IF;
32664          END_IF;
32665        END_IF;
32666      END_IF;
32667    END_IF;
32668    RETURN( FALSE );
32669
32670  END_FUNCTION;
32671
32672  FUNCTION valid_calendar_date(
32673               date : calendar_date
32674           ) : LOGICAL;
32675    CASE date.month_component OF
32676      1 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32677      2 :
32678        BEGIN
32679          IF leap_year( date.year_component ) THEN
32680            RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 29 ) );
32681          ELSE
32682            RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 28 ) );
32683          END_IF;
32684        END;
32685      3 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32686      4 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 30 ) );
32687      5 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32688      6 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 30 ) );
32689      7 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32690      8 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32691      9 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 30 ) );
32692      10 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32693      11 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 30 ) );
32694      12 :         RETURN( ( 1 <= date.day_component ) AND ( date.day_component <= 31 ) );
32695      END_CASE;
32696    RETURN( FALSE );
32697
32698  END_FUNCTION;
32699
32700  FUNCTION valid_csg_2d_primitives(
32701               input : csg_solid_2d
32702           ) : BOOLEAN;
32703    CASE TRUE OF
32704      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D' IN TYPEOF( input\csg_solid_2d.tree_root_expression ) :
32705        BEGIN
32706          IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCULAR_AREA',
32707              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPLEX_AREA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32708              + 'ELLIPTIC_AREA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYGONAL_AREA',
32709              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRIMITIVE_2D_WITH_INNER_BOUNDARY' ,
32710              'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RECTANGULAR_AREA' ] * TYPEOF( input\csg_solid_2d.
32711              tree_root_expression ) ) > 0 THEN
32712            RETURN( TRUE );
32713          ELSE
32714            RETURN( FALSE );
32715          END_IF;
32716        END;
32717      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.BOOLEAN_RESULT_2D' IN TYPEOF( input\csg_solid_2d.tree_root_expression ) :         RETURN
32718            ( valid_csg_2d_primitives( input\csg_solid_2d.tree_root_expression\boolean_result_2d.first_operand ) AND
32719            valid_csg_2d_primitives( input\csg_solid_2d.tree_root_expression\boolean_result_2d.second_operand ) );
32720      'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HALF_SPACE_2D' IN TYPEOF( input\csg_solid_2d.tree_root_expression ) :         RETURN
32721            ( TRUE );
32722      OTHERWISE                            :         RETURN( FALSE );
32723      END_CASE;
32724
32725  END_FUNCTION;
32726
32727  FUNCTION valid_datum_target_parameters(
32728               pdf : placed_datum_target_feature
32729           ) : BOOLEAN;
32730
32731    LOCAL
32732      parameter_representations : SET OF representation;
32733      rep_set                   : SET OF representation := [];
32734    END_LOCAL;
32735    REPEAT i := 1 TO HIINDEX( pdf.representation_associations ) BY 1;
32736      rep_set := rep_set + pdf.representation_associations[i].used_representation;
32737    END_REPEAT;
32738    parameter_representations := QUERY ( rep <* rep_set | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32739        + 'SHAPE_REPRESENTATION_WITH_PARAMETERS'  IN TYPEOF( rep ) ) );
32740    IF SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( QUERY ( i <* srwp.items | ( ( i.name = 'orientation' ) AND
32741        ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLACEMENT' IN TYPEOF( i ) ) ) ) ) = 1 ) ) ) <> 1 THEN
32742      RETURN( FALSE );
32743    END_IF;
32744    CASE pdf\shape_aspect.description OF
32745      'point'       :         RETURN( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( srwp.items ) = 1 ) ) ) = 1 );
32746      'circle'      :         RETURN( ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( srwp.items ) = 2 ) ) ) = 1 )
32747            AND ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( QUERY ( i <* srwp.items | ( ( i.name =
32748            'target diameter'  ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
32749            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) =
32750            1 ) );
32751      'circular curve' :         RETURN( ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( srwp.items ) = 2 ) ) ) =
32752            1 ) AND ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( QUERY ( i <* srwp.items | ( ( i.name =
32753            'target diameter'  ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
32754            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) =
32755            1 ) );
32756      'line'        :         RETURN( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( QUERY ( i <* srwp.items | (
32757            ( i.name = 'target length' ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32758            + 'MEASURE_REPRESENTATION_ITEM' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT'] *
32759            TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) = 1 );
32760      'rectangle'   :         RETURN( ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( srwp.items ) = 3 ) ) ) = 1 )
32761            AND ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( QUERY ( i <* srwp.items | ( ( i.name =
32762            'target length'  ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
32763            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) =
32764            1 ) AND ( SIZEOF( QUERY ( srwp <* parameter_representations | ( SIZEOF( QUERY ( i <* srwp.items | ( ( i.name =
32765            'target width'  ) AND ( SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM',
32766            'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE_WITH_UNIT' ] * TYPEOF( i ) ) = 2 ) ) ) ) = 1 ) ) ) =
32767            1 ) );
32768      OTHERWISE     :         RETURN( FALSE );
32769      END_CASE;
32770
32771  END_FUNCTION;
32772
32773  FUNCTION valid_geometrically_bounded_wf_curve(
32774               crv : curve
32775           ) : BOOLEAN;
32776    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POLYLINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32777        + 'B_SPLINE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELLIPSE',
32778        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CIRCLE' ] * TYPEOF( crv ) ) = 1 THEN
32779      RETURN( TRUE );
32780    ELSE
32781      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TRIMMED_CURVE' IN TYPEOF( crv ) THEN
32782        IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32783            + 'PARABOLA' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.HYPERBOLA'] * TYPEOF( crv\trimmed_curve.basis_curve ) )
32784            = 1 THEN
32785          RETURN( TRUE );
32786        ELSE
32787          RETURN( valid_geometrically_bounded_wf_curve( crv\trimmed_curve.basis_curve ) );
32788        END_IF;
32789      ELSE
32790        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF( crv ) THEN
32791          RETURN( valid_geometrically_bounded_wf_curve( crv\offset_curve_3d.basis_curve ) );
32792        ELSE
32793          IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( crv ) THEN
32794            RETURN( valid_geometrically_bounded_wf_curve( crv\curve_replica.parent_curve ) );
32795          ELSE
32796            IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.COMPOSITE_CURVE' IN TYPEOF( crv ) THEN
32797              RETURN( SIZEOF( QUERY ( ccs <* crv\composite_curve.segments | ( NOT valid_geometrically_bounded_wf_curve( ccs.
32798                  parent_curve ) ) ) ) = 0 );
32799            END_IF;
32800          END_IF;
32801        END_IF;
32802      END_IF;
32803    END_IF;
32804    RETURN( FALSE );
32805
32806  END_FUNCTION;
32807
32808  FUNCTION valid_geometrically_bounded_wf_point(
32809               pnt : point
32810           ) : BOOLEAN;
32811    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( pnt ) THEN
32812      RETURN( TRUE );
32813    ELSE
32814      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_ON_CURVE' IN TYPEOF( pnt ) THEN
32815        RETURN( valid_geometrically_bounded_wf_curve( pnt\point_on_curve.basis_curve ) );
32816      ELSE
32817        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA' IN TYPEOF( pnt ) THEN
32818          RETURN( valid_geometrically_bounded_wf_point( pnt\point_replica.parent_pt ) );
32819        END_IF;
32820      END_IF;
32821    END_IF;
32822    RETURN( FALSE );
32823
32824  END_FUNCTION;
32825
32826  FUNCTION valid_measure_value(
32827               m : measure_value
32828           ) : BOOLEAN;
32829    IF 'REAL' IN TYPEOF( m ) THEN
32830      RETURN( m > 0 );
32831    ELSE
32832      IF 'INTEGER' IN TYPEOF( m ) THEN
32833        RETURN( m > 0 );
32834      ELSE
32835        RETURN( TRUE );
32836      END_IF;
32837    END_IF;
32838
32839  END_FUNCTION;
32840
32841  FUNCTION valid_selected_instance_representation(
32842               pd : product_definition_or_assembly_relationship
32843           ) : LOGICAL;
32844
32845    LOCAL
32846      properties                          : SET OF property_definition := bag_to_set( QUERY ( prd <* USEDIN( pd,
32847                                             'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PROPERTY_DEFINITION.DEFINITION'  )
32848                                             | ( prd.name = 'occurrence selection' ) ) );
32849      selected_representation             : representation;
32850      property_definition_representations : SET OF property_definition_representation := bag_to_set( QUERY ( pdr <* USEDIN(
32851                                             properties[1], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32852                                             + 'PROPERTY_DEFINITION_REPRESENTATION.DEFINITION'  ) | ( pdr.used_representation.
32853                                             name = 'selection criteria' ) ) );
32854    END_LOCAL;
32855    IF SIZEOF( properties ) <> 1 THEN
32856      RETURN( FALSE );
32857    END_IF;
32858    IF SIZEOF( property_definition_representations ) <> 1 THEN
32859      RETURN( FALSE );
32860    END_IF;
32861    selected_representation := property_definition_representations[1]\property_definition_representation.used_representation;
32862    IF ( SIZEOF( selected_representation\representation.items ) < 1 ) OR ( SIZEOF( selected_representation\representation.items )
32863        > 2 ) THEN
32864      RETURN( FALSE );
32865    END_IF;
32866    IF SIZEOF( QUERY ( i <* selected_representation\representation.items | ( ( SIZEOF( [
32867        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' ,
32868        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE' ] * TYPEOF( i ) ) = 1 ) AND ( i.name = 'selection quantity' ) ) ) )
32869        <> 1 THEN
32870      RETURN( FALSE );
32871    END_IF;
32872    IF SIZEOF( QUERY ( i <* selected_representation\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32873        + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) AND ( i.name = 'selection control' ) ) ) ) > 1 THEN
32874      RETURN( FALSE );
32875    END_IF;
32876    IF ( SIZEOF( QUERY ( i <* selected_representation\representation.items | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
32877        + 'DESCRIPTIVE_REPRESENTATION_ITEM'  IN TYPEOF( i ) ) AND ( i.name = 'selection control' ) ) ) ) = 0 ) AND ( SIZEOF(
32878        QUERY ( i <* selected_representation\representation.items | ( ( i.name = 'selection quantity' ) AND ( SIZEOF( [
32879        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.QUALIFIED_REPRESENTATION_ITEM' ,
32880        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_RANGE' ] * TYPEOF( i ) ) = 0 ) ) ) ) > 0 ) THEN
32881      RETURN( FALSE );
32882    END_IF;
32883    RETURN( TRUE );
32884
32885  END_FUNCTION;
32886
32887  FUNCTION valid_time(
32888               time : local_time
32889           ) : BOOLEAN;
32890    IF EXISTS( time.second_component ) THEN
32891      RETURN( EXISTS( time.minute_component ) );
32892    ELSE
32893      RETURN( TRUE );
32894    END_IF;
32895
32896  END_FUNCTION;
32897
32898  FUNCTION valid_units(
32899               m : measure_with_unit
32900           ) : BOOLEAN;
32901    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LENGTH_MEASURE' IN TYPEOF( m.value_component ) THEN
32902      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 1, 0, 0, 0, 0, 0, 0 ) THEN
32903        RETURN( FALSE );
32904      END_IF;
32905    END_IF;
32906    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MASS_MEASURE' IN TYPEOF( m.value_component ) THEN
32907      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 1, 0, 0, 0, 0, 0 ) THEN
32908        RETURN( FALSE );
32909      END_IF;
32910    END_IF;
32911    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.TIME_MEASURE' IN TYPEOF( m.value_component ) THEN
32912      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 1, 0, 0, 0, 0 ) THEN
32913        RETURN( FALSE );
32914      END_IF;
32915    END_IF;
32916    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CURRENT_MEASURE' IN TYPEOF( m.value_component ) THEN
32917      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 1, 0, 0, 0 ) THEN
32918        RETURN( FALSE );
32919      END_IF;
32920    END_IF;
32921    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.THERMODYNAMIC_TEMPERATURE_MEASURE' IN TYPEOF( m.value_component ) THEN
32922      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 1, 0, 0 ) THEN
32923        RETURN( FALSE );
32924      END_IF;
32925    END_IF;
32926    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CELSIUS_TEMPERATURE_MEASURE' IN TYPEOF( m.value_component ) THEN
32927      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 1, 0, 0 ) THEN
32928        RETURN( FALSE );
32929      END_IF;
32930    END_IF;
32931    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AMOUNT_OF_SUBSTANCE_MEASURE' IN TYPEOF( m.value_component ) THEN
32932      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 1, 0 ) THEN
32933        RETURN( FALSE );
32934      END_IF;
32935    END_IF;
32936    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_INTENSITY_MEASURE' IN TYPEOF( m.value_component ) THEN
32937      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 0, 1 ) THEN
32938        RETURN( FALSE );
32939      END_IF;
32940    END_IF;
32941    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PLANE_ANGLE_MEASURE' IN TYPEOF( m.value_component ) THEN
32942      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 ) THEN
32943        RETURN( FALSE );
32944      END_IF;
32945    END_IF;
32946    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.SOLID_ANGLE_MEASURE' IN TYPEOF( m.value_component ) THEN
32947      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 ) THEN
32948        RETURN( FALSE );
32949      END_IF;
32950    END_IF;
32951    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.AREA_MEASURE' IN TYPEOF( m.value_component ) THEN
32952      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 0, 0, 0, 0, 0, 0 ) THEN
32953        RETURN( FALSE );
32954      END_IF;
32955    END_IF;
32956    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VOLUME_MEASURE' IN TYPEOF( m.value_component ) THEN
32957      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 3, 0, 0, 0, 0, 0, 0 ) THEN
32958        RETURN( FALSE );
32959      END_IF;
32960    END_IF;
32961    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RATIO_MEASURE' IN TYPEOF( m.value_component ) THEN
32962      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 ) THEN
32963        RETURN( FALSE );
32964      END_IF;
32965    END_IF;
32966    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_LENGTH_MEASURE' IN TYPEOF( m.value_component ) THEN
32967      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 1, 0, 0, 0, 0, 0, 0 ) THEN
32968        RETURN( FALSE );
32969      END_IF;
32970    END_IF;
32971    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POSITIVE_PLANE_ANGLE_MEASURE' IN TYPEOF( m.value_component ) THEN
32972      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 0, 0 ) THEN
32973        RETURN( FALSE );
32974      END_IF;
32975    END_IF;
32976    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ACCELERATION_MEASURE' IN TYPEOF( m.value_component ) THEN
32977      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 1, 0, -2, 0, 0, 0, 0 ) THEN
32978        RETURN( FALSE );
32979      END_IF;
32980    END_IF;
32981    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CAPACITANCE_MEASURE' IN TYPEOF( m.value_component ) THEN
32982      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( -2, -1, 4, 2, 0, 0, 0 ) THEN
32983        RETURN( FALSE );
32984      END_IF;
32985    END_IF;
32986    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_CHARGE_MEASURE' IN TYPEOF( m.value_component ) THEN
32987      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 1, 1, 0, 0, 0 ) THEN
32988        RETURN( FALSE );
32989      END_IF;
32990    END_IF;
32991    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONDUCTANCE_MEASURE' IN TYPEOF( m.value_component ) THEN
32992      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( -2, -1, 3, 2, 0, 0, 0 ) THEN
32993        RETURN( FALSE );
32994      END_IF;
32995    END_IF;
32996    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ELECTRIC_POTENTIAL_MEASURE' IN TYPEOF( m.value_component ) THEN
32997      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 1, -3, -1, 0, 0, 0 ) THEN
32998        RETURN( FALSE );
32999      END_IF;
33000    END_IF;
33001    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ENERGY_MEASURE' IN TYPEOF( m.value_component ) THEN
33002      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 1, -2, 0, 0, 0, 0 ) THEN
33003        RETURN( FALSE );
33004      END_IF;
33005    END_IF;
33006    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FORCE_MEASURE' IN TYPEOF( m.value_component ) THEN
33007      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 1, 1, -2, 0, 0, 0, 0 ) THEN
33008        RETURN( FALSE );
33009      END_IF;
33010    END_IF;
33011    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.FREQUENCY_MEASURE' IN TYPEOF( m.value_component ) THEN
33012      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, -1, 0, 0, 0, 0 ) THEN
33013        RETURN( FALSE );
33014      END_IF;
33015    END_IF;
33016    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ILLUMINANCE_MEASURE' IN TYPEOF( m.value_component ) THEN
33017      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( -2, 0, 0, 0, 0, 0, 1 ) THEN
33018        RETURN( FALSE );
33019      END_IF;
33020    END_IF;
33021    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.INDUCTANCE_MEASURE' IN TYPEOF( m.value_component ) THEN
33022      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 1, -2, -2, 0, 0, 0 ) THEN
33023        RETURN( FALSE );
33024      END_IF;
33025    END_IF;
33026    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LUMINOUS_FLUX_MEASURE' IN TYPEOF( m.value_component ) THEN
33027      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, 0, 0, 0, 0, 1 ) THEN
33028        RETURN( FALSE );
33029      END_IF;
33030    END_IF;
33031    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_MEASURE' IN TYPEOF( m.value_component ) THEN
33032      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 1, -2, -1, 0, 0, 0 ) THEN
33033        RETURN( FALSE );
33034      END_IF;
33035    END_IF;
33036    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MAGNETIC_FLUX_DENSITY_MEASURE' IN TYPEOF( m.value_component ) THEN
33037      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 1, -2, -1, 0, 0, 0 ) THEN
33038        RETURN( FALSE );
33039      END_IF;
33040    END_IF;
33041    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POWER_MEASURE' IN TYPEOF( m.value_component ) THEN
33042      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 1, -3, 0, 0, 0, 0 ) THEN
33043        RETURN( FALSE );
33044      END_IF;
33045    END_IF;
33046    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.PRESSURE_MEASURE' IN TYPEOF( m.value_component ) THEN
33047      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( -1, 1, -2, 0, 0, 0, 0 ) THEN
33048        RETURN( FALSE );
33049      END_IF;
33050    END_IF;
33051    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RESISTANCE_MEASURE' IN TYPEOF( m.value_component ) THEN
33052      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 1, -3, -2, 0, 0, 0 ) THEN
33053        RETURN( FALSE );
33054      END_IF;
33055    END_IF;
33056    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VELOCITY_MEASURE' IN TYPEOF( m.value_component ) THEN
33057      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 1, 0, -1, 0, 0, 0, 0 ) THEN
33058        RETURN( FALSE );
33059      END_IF;
33060    END_IF;
33061    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.RADIOACTIVITY_MEASURE' IN TYPEOF( m.value_component ) THEN
33062      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 0, 0, -1, 0, 0, 0, 0 ) THEN
33063        RETURN( FALSE );
33064      END_IF;
33065    END_IF;
33066    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.ABSORBED_DOSE_MEASURE' IN TYPEOF( m.value_component ) THEN
33067      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 0, -2, 0, 0, 0, 0 ) THEN
33068        RETURN( FALSE );
33069      END_IF;
33070    END_IF;
33071    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.DOSE_EQUIVALENT_MEASURE' IN TYPEOF( m.value_component ) THEN
33072      IF derive_dimensional_exponents( m.unit_component ) <> dimensional_exponents( 2, 0, -2, 0, 0, 0, 0 ) THEN
33073        RETURN( FALSE );
33074      END_IF;
33075    END_IF;
33076    RETURN( TRUE );
33077
33078  END_FUNCTION;
33079
33080  FUNCTION valid_wireframe_edge_curve(
33081               crv : curve
33082           ) : BOOLEAN;
33083    IF SIZEOF( [ 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.LINE', 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CONIC',
33084        'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.B_SPLINE_CURVE' , 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
33085        + 'POLYLINE' ] * TYPEOF( crv ) ) = 1 THEN
33086      RETURN( TRUE );
33087    ELSE
33088      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CURVE_REPLICA' IN TYPEOF( crv ) THEN
33089        RETURN( valid_wireframe_edge_curve( crv\curve_replica.parent_curve ) );
33090      ELSE
33091        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.OFFSET_CURVE_3D' IN TYPEOF( crv ) THEN
33092          RETURN( valid_wireframe_edge_curve( crv\offset_curve_3d.basis_curve ) );
33093        END_IF;
33094      END_IF;
33095    END_IF;
33096    RETURN( FALSE );
33097
33098  END_FUNCTION;
33099
33100  FUNCTION valid_wireframe_vertex_point(
33101               pnt : point
33102           ) : BOOLEAN;
33103    IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.CARTESIAN_POINT' IN TYPEOF( pnt ) THEN
33104      RETURN( TRUE );
33105    ELSE
33106      IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.POINT_REPLICA' IN TYPEOF( pnt ) THEN
33107        RETURN( valid_wireframe_vertex_point( pnt\point_replica.parent_pt ) );
33108      END_IF;
33109    END_IF;
33110    RETURN( FALSE );
33111
33112  END_FUNCTION;
33113
33114  FUNCTION validate_accuracy_types(
33115               ei : shape_data_quality_criterion;
33116               type_list : BAG OF STRING
33117           ) : LOGICAL;
33118
33119    LOCAL
33120      scraa   : BAG OF shape_inspection_result_accuracy_association := [];
33121      sdqca   : BAG OF shape_data_quality_criterion_and_accuracy_association := [];
33122      sdqir   : SET OF shape_data_quality_inspection_result := [];
33123      sma     : BAG OF shape_measurement_accuracy := [];
33124      t_logic : BOOLEAN;
33125    END_LOCAL;
33126    sdqca := USEDIN( ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33127        'SHAPE_DATA_QUALITY_CRITERION_AND_ACCURACY_ASSOCIATION.'  + 'SHAPE_DATA_QUALITY_CRITERION' );
33128    IF SIZEOF( sdqca ) <> 0 THEN
33129      REPEAT i := 1 TO SIZEOF( sdqca ) BY 1;
33130        sma := sma + sdqca[i].required_specific_accuracy;
33131      END_REPEAT;
33132      IF SIZEOF( type_list ) < SIZEOF( sma ) THEN
33133        RETURN( FALSE );
33134      END_IF;
33135      REPEAT i := 1 TO SIZEOF( sma ) BY 1;
33136        t_logic := FALSE;
33137        REPEAT j := 1 TO SIZEOF( type_list ) BY 1;
33138          IF type_list[j] IN value_limit_type( sma[i].range ) THEN
33139            t_logic := TRUE;
33140            ESCAPE;
33141          END_IF;
33142        END_REPEAT;
33143        IF NOT t_logic THEN
33144          RETURN( FALSE );
33145        END_IF;
33146      END_REPEAT;
33147    END_IF;
33148    sdqir := QUERY ( q <* bag_to_set( USEDIN( ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33149        'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33150        'SHAPE_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( q ) ) );
33151    IF SIZEOF( sdqir ) = 0 THEN
33152      RETURN( TRUE );
33153    END_IF;
33154    REPEAT i := 1 TO SIZEOF( sdqir ) BY 1;
33155      scraa := USEDIN( sdqir[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33156          'SHAPE_INSPECTION_RESULT_ACCURACY_ASSOCIATION.'  + 'SHAPE_DATA_QUALITY_RESULT' );
33157      IF SIZEOF( scraa ) <> 0 THEN
33158        sma := [];
33159        REPEAT j := 1 TO SIZEOF( scraa ) BY 1;
33160          sma := sma + scraa[j].applied_specific_accuracy;
33161        END_REPEAT;
33162        IF SIZEOF( type_list ) < SIZEOF( sma ) THEN
33163          RETURN( FALSE );
33164        END_IF;
33165        REPEAT j := 1 TO SIZEOF( sma ) BY 1;
33166          t_logic := FALSE;
33167          REPEAT k := 1 TO SIZEOF( type_list ) BY 1;
33168            IF type_list[k] IN value_limit_type( sma[j].range ) THEN
33169              t_logic := TRUE;
33170              ESCAPE;
33171            END_IF;
33172          END_REPEAT;
33173          IF NOT t_logic THEN
33174            RETURN( FALSE );
33175          END_IF;
33176        END_REPEAT;
33177      END_IF;
33178    END_REPEAT;
33179    RETURN( TRUE );
33180
33181  END_FUNCTION;
33182
33183  FUNCTION validate_attribute_id(
33184               attid : attribute_identifier
33185           ) : BOOLEAN;
33186
33187    CONSTANT
33188      letters     : SET [52 : 52] OF STRING :=
33189                     [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v' ,
33190                       'w' , 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
33191                       'R' , 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
33192      numbers_etc : SET [15 : 15] OF STRING :=
33193                     [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '_', '[', ']', '.', '\'];
33194      valid_chars : SET [67 : 67] OF STRING :=
33195                     letters + numbers_etc;
33196    END_CONSTANT;
33197
33198    LOCAL
33199      id_valid  : BOOLEAN := TRUE;
33200      i         : INTEGER;
33201      id_length : INTEGER := LENGTH( attid );
33202    END_LOCAL;
33203    IF NOT ( attid[1] IN letters ) THEN
33204      id_valid := FALSE;
33205    END_IF;
33206    REPEAT i := 2 TO id_length BY 1 WHILE id_valid = TRUE;
33207      IF NOT ( attid[i] IN valid_chars ) THEN
33208        id_valid := FALSE;
33209      END_IF;
33210    END_REPEAT;
33211    RETURN( id_valid );
33212
33213  END_FUNCTION;
33214
33215  FUNCTION validate_countersink_radii(
33216               cskhole : solid_with_stepped_round_hole_and_conical_transitions
33217           ) : BOOLEAN;
33218
33219    LOCAL
33220      i       : INTEGER;
33221      j       : INTEGER;
33222      n       : INTEGER := 1 + cskhole\solid_with_stepped_round_hole.segments;
33223      smaller : positive_length_measure;
33224      larger  : positive_length_measure;
33225    END_LOCAL;
33226    REPEAT i := 1 TO SIZEOF( cskhole.conical_transitions ) BY 1;
33227      IF ( ( cskhole.conical_transitions[i].transition_number = 1 ) AND ( cskhole.conical_transitions[i].cone_apex_angle < 0 ) )
33228          XOR ( ( cskhole.conical_transitions[i].transition_number = n ) AND ( cskhole.conical_transitions[i].cone_apex_angle > 0 ) )
33229          THEN
33230        RETURN( FALSE );
33231      ELSE
33232        IF ( cskhole.conical_transitions[i].transition_number <> 1 ) AND ( cskhole.conical_transitions[i].transition_number <> n )
33233            THEN
33234
33235          BEGIN
33236            j := cskhole.conical_transitions[i].transition_number;
33237            IF cskhole\solid_with_stepped_round_hole.segment_radii[j] > cskhole\solid_with_stepped_round_hole.segment_radii[j - 1]
33238                THEN
33239
33240              BEGIN
33241                IF cskhole.conical_transitions[i].cone_apex_angle > 0 THEN
33242                  RETURN( FALSE );
33243                END_IF;
33244                larger := cskhole\solid_with_stepped_round_hole.segment_radii[j];
33245                smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j - 1];
33246              END;
33247            ELSE
33248
33249              BEGIN
33250                IF cskhole.conical_transitions[i].cone_apex_angle < 0 THEN
33251                  RETURN( FALSE );
33252                END_IF;
33253                larger := cskhole\solid_with_stepped_round_hole.segment_radii[j - 1];
33254                smaller := cskhole\solid_with_stepped_round_hole.segment_radii[j];
33255              END;
33256            END_IF;
33257            IF ( cskhole.conical_transitions[i].cone_base_radius > larger ) OR ( cskhole.conical_transitions[i].cone_base_radius
33258                < smaller ) THEN
33259              RETURN( FALSE );
33260            END_IF;
33261          END;
33262        END_IF;
33263      END_IF;
33264    END_REPEAT;
33265    RETURN( TRUE );
33266
33267  END_FUNCTION;
33268
33269  FUNCTION validate_ecdq_inspected_elements_type(
33270               ei : externally_conditioned_data_quality_criterion;
33271               type_list : BAG OF STRING
33272           ) : LOGICAL;
33273
33274    LOCAL
33275      t_type_list : BAG OF STRING := [];
33276      sdiri       : SET OF externally_conditioned_data_quality_inspection_instance_report_item := [];
33277      dir         : SET OF data_quality_inspection_instance_report := [];
33278      sdqir       : SET OF externally_conditioned_data_quality_inspection_result := [];
33279    END_LOCAL;
33280    sdqir := QUERY ( q <* bag_to_set( USEDIN( ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33281        'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33282        'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( q ) ) );
33283    IF SIZEOF( sdqir ) = 0 THEN
33284      RETURN( TRUE );
33285    END_IF;
33286    REPEAT i := 1 TO SIZEOF( sdqir ) BY 1;
33287      dir := dir + QUERY ( q <* bag_to_set( USEDIN( sdqir[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33288          'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33289          'DATA_QUALITY_INSPECTION_INSTANCE_REPORT' ) IN TYPEOF( q ) ) );
33290    END_REPEAT;
33291    IF SIZEOF( dir ) = 0 THEN
33292      RETURN( TRUE );
33293    END_IF;
33294    REPEAT i := 1 TO SIZEOF( dir ) BY 1;
33295      sdiri := sdiri + QUERY ( q <* dir[i].inspected_instances | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33296          'EXTERNALLY_CONDITIONED_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM'  ) IN TYPEOF( q ) ) );
33297    END_REPEAT;
33298    IF SIZEOF( sdiri ) = 0 THEN
33299      RETURN( TRUE );
33300    END_IF;
33301    REPEAT i := 1 TO SIZEOF( sdiri ) BY 1;
33302      IF SIZEOF( sdiri[i].inspected_elements ) <> SIZEOF( type_list ) THEN
33303        RETURN( FALSE );
33304      END_IF;
33305      t_type_list := type_list;
33306      REPEAT j := 1 TO SIZEOF( sdiri[i].inspected_elements ) BY 1;
33307        REPEAT k := 1 TO SIZEOF( t_type_list ) BY 1;
33308          IF t_type_list[k] IN TYPEOF( sdiri[i].inspected_elements[j] ) THEN
33309            t_type_list := t_type_list - t_type_list[k];
33310            ESCAPE;
33311          END_IF;
33312        END_REPEAT;
33313      END_REPEAT;
33314      IF SIZEOF( t_type_list ) > 0 THEN
33315        RETURN( FALSE );
33316      END_IF;
33317    END_REPEAT;
33318    RETURN( TRUE );
33319
33320  END_FUNCTION;
33321
33322  FUNCTION validate_inspected_elements_type(
33323               ei : shape_data_quality_criterion;
33324               type_list : BAG OF STRING
33325           ) : LOGICAL;
33326
33327    LOCAL
33328      t_type_list : BAG OF STRING := [];
33329      sdiri       : SET OF shape_data_quality_inspection_instance_report_item := [];
33330      sdqir       : SET OF shape_data_quality_inspection_result := [];
33331      sdir        : SET OF shape_data_quality_inspection_instance_report := [];
33332    END_LOCAL;
33333    sdqir := QUERY ( q <* bag_to_set( USEDIN( ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33334        'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33335        'SHAPE_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( q ) ) );
33336    IF SIZEOF( sdqir ) = 0 THEN
33337      RETURN( TRUE );
33338    END_IF;
33339    REPEAT i := 1 TO SIZEOF( sdqir ) BY 1;
33340      sdir := sdir + QUERY ( q <* bag_to_set( USEDIN( sdqir[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33341          'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33342          'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' ) IN TYPEOF( q ) ) );
33343    END_REPEAT;
33344    IF SIZEOF( sdir ) = 0 THEN
33345      RETURN( TRUE );
33346    END_IF;
33347    REPEAT i := 1 TO SIZEOF( sdir ) BY 1;
33348      sdiri := sdiri + QUERY ( q <* sdir[i].inspected_instances | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33349          'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM'  ) IN TYPEOF( q ) ) );
33350    END_REPEAT;
33351    IF SIZEOF( sdiri ) = 0 THEN
33352      RETURN( TRUE );
33353    END_IF;
33354    REPEAT i := 1 TO SIZEOF( sdiri ) BY 1;
33355      IF SIZEOF( sdiri[i].inspected_elements ) <> SIZEOF( type_list ) THEN
33356        RETURN( FALSE );
33357      END_IF;
33358      t_type_list := type_list;
33359      REPEAT j := 1 TO SIZEOF( sdiri[i].inspected_elements ) BY 1;
33360        REPEAT k := 1 TO SIZEOF( t_type_list ) BY 1;
33361          IF t_type_list[k] IN TYPEOF( sdiri[i].inspected_elements[j] ) THEN
33362            t_type_list := t_type_list - t_type_list[k];
33363            ESCAPE;
33364          END_IF;
33365        END_REPEAT;
33366      END_REPEAT;
33367      IF SIZEOF( t_type_list ) > 0 THEN
33368        RETURN( FALSE );
33369      END_IF;
33370    END_REPEAT;
33371    RETURN( TRUE );
33372
33373  END_FUNCTION;
33374
33375  FUNCTION validate_locations_of_extreme_value_type(
33376               ei : shape_data_quality_criterion;
33377               type_list : BAG OF STRING
33378           ) : LOGICAL;
33379
33380    LOCAL
33381      t_type_list : BAG OF STRING := [];
33382      sdei        : SET OF instance_report_item_with_extreme_instances := [];
33383      sdqir       : SET OF shape_data_quality_inspection_result := [];
33384      sdir        : SET OF shape_data_quality_inspection_instance_report := [];
33385    END_LOCAL;
33386    sdqir := QUERY ( q <* bag_to_set( USEDIN( ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33387        'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33388        'SHAPE_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( q ) ) );
33389    IF SIZEOF( sdqir ) = 0 THEN
33390      RETURN( TRUE );
33391    END_IF;
33392    REPEAT i := 1 TO SIZEOF( sdqir ) BY 1;
33393      sdir := sdir + QUERY ( q <* bag_to_set( USEDIN( sdqir[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33394          'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33395          'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' ) IN TYPEOF( q ) ) );
33396    END_REPEAT;
33397    REPEAT i := 1 TO SIZEOF( sdir ) BY 1;
33398      sdei := sdei + QUERY ( q <* sdir[i].inspected_instances | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33399          'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES'  ) IN TYPEOF( q ) ) );
33400    END_REPEAT;
33401    IF SIZEOF( sdei ) = 0 THEN
33402      RETURN( TRUE );
33403    END_IF;
33404    IF ( SIZEOF( type_list ) = 0 ) AND ( SIZEOF( sdei ) <> 0 ) THEN
33405      RETURN( FALSE );
33406    END_IF;
33407    REPEAT i := 1 TO SIZEOF( sdei ) BY 1;
33408      REPEAT j := 1 TO SIZEOF( sdei[i].extreme_instances ) BY 1;
33409        IF SIZEOF( sdei[i].extreme_instances[j].locations_of_extreme_value ) <> SIZEOF( type_list ) THEN
33410          RETURN( FALSE );
33411        END_IF;
33412        t_type_list := type_list;
33413        REPEAT k := 1 TO SIZEOF( sdei[i].extreme_instances[j].locations_of_extreme_value ) BY 1;
33414          REPEAT l := 1 TO SIZEOF( t_type_list ) BY 1;
33415            IF t_type_list[l] IN TYPEOF( sdei[i].extreme_instances[j].locations_of_extreme_value[k] ) THEN
33416              t_type_list := t_type_list - t_type_list[l];
33417              ESCAPE;
33418            END_IF;
33419          END_REPEAT;
33420        END_REPEAT;
33421        IF SIZEOF( t_type_list ) > 0 THEN
33422          RETURN( FALSE );
33423        END_IF;
33424      END_REPEAT;
33425    END_REPEAT;
33426    RETURN( TRUE );
33427
33428  END_FUNCTION;
33429
33430  FUNCTION validate_measured_data_type(
33431               ei : shape_data_quality_criterion;
33432               type_string : STRING
33433           ) : LOGICAL;
33434
33435    LOCAL
33436      sdcr  : SET OF shape_data_quality_inspection_criterion_report := [];
33437      sdei  : BAG OF instance_report_item_with_extreme_instances := [];
33438      sdqir : SET OF shape_data_quality_inspection_result := [];
33439      sdii  : SET OF shape_data_quality_inspection_instance_report_item := [];
33440      sdir  : SET OF shape_data_quality_inspection_instance_report := [];
33441    END_LOCAL;
33442    sdqir := QUERY ( q <* bag_to_set( USEDIN( ei, 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33443        'DATA_QUALITY_INSPECTION_RESULT.'  + 'CRITERION_INSPECTED' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33444        'SHAPE_DATA_QUALITY_INSPECTION_RESULT' ) IN TYPEOF( q ) ) );
33445    IF SIZEOF( sdqir ) = 0 THEN
33446      RETURN( TRUE );
33447    END_IF;
33448    REPEAT i := 1 TO SIZEOF( sdqir ) BY 1;
33449      sdcr := sdcr + QUERY ( q <* bag_to_set( USEDIN( sdqir[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33450          'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33451          'SHAPE_DATA_QUALITY_INSPECTION_CRITERION_REPORT' ) IN TYPEOF( q ) ) );
33452    END_REPEAT;
33453    REPEAT i := 1 TO SIZEOF( sdqir ) BY 1;
33454      sdir := sdir + QUERY ( q <* bag_to_set( USEDIN( sdqir[i], 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33455          'DATA_QUALITY_INSPECTION_REPORT.'  + 'INSPECTION_RESULT' ) ) | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33456          'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT' ) IN TYPEOF( q ) ) );
33457    END_REPEAT;
33458    IF ( SIZEOF( sdcr ) = 0 ) AND ( SIZEOF( sdir ) = 0 ) THEN
33459      RETURN( TRUE );
33460    END_IF;
33461    REPEAT i := 1 TO SIZEOF( sdir ) BY 1;
33462      sdii := sdii + QUERY ( q <* sdir[i].inspected_instances | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33463          'SHAPE_DATA_QUALITY_INSPECTION_INSTANCE_REPORT_ITEM'  ) IN TYPEOF( q ) ) );
33464    END_REPEAT;
33465    REPEAT i := 1 TO SIZEOF( sdir ) BY 1;
33466      sdei := sdei + QUERY ( q <* sdir[i].inspected_instances | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' +
33467          'INSTANCE_REPORT_ITEM_WITH_EXTREME_INSTANCES'  ) IN TYPEOF( q ) ) );
33468    END_REPEAT;
33469    REPEAT i := 1 TO SIZEOF( sdcr ) BY 1;
33470      IF NOT ( type_string IN TYPEOF( sdcr[i].representative_measured_value ) ) THEN
33471        RETURN( FALSE );
33472      END_IF;
33473    END_REPEAT;
33474    REPEAT i := 1 TO SIZEOF( sdii ) BY 1;
33475      IF NOT ( type_string IN TYPEOF( sdii[i].measured_value ) ) THEN
33476        RETURN( FALSE );
33477      END_IF;
33478    END_REPEAT;
33479    REPEAT i := 1 TO SIZEOF( sdei ) BY 1;
33480      REPEAT j := 1 TO SIZEOF( sdei[i].extreme_instances ) BY 1;
33481        IF NOT ( type_string IN TYPEOF( sdei[i].extreme_instances[j].measured_value ) ) THEN
33482          RETURN( FALSE );
33483        END_IF;
33484      END_REPEAT;
33485    END_REPEAT;
33486    RETURN( TRUE );
33487
33488  END_FUNCTION;
33489
33490  FUNCTION value_limit_type(
33491               iv : shape_data_quality_value_limit_type_select
33492           ) : SET OF STRING;
33493
33494    LOCAL
33495      retval : SET OF STRING := [];
33496    END_LOCAL;
33497    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_VALUE_RANGE' ) IN TYPEOF( iv ) THEN
33498      retval := TYPEOF( iv\compound_representation_item.item_element[1].value_component );
33499    END_IF;
33500    IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'SHAPE_DATA_QUALITY_VALUE_LIMIT' ) IN TYPEOF( iv ) THEN
33501      IF ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'MEASURE_WITH_UNIT' ) IN TYPEOF( iv ) THEN
33502        retval := TYPEOF( iv\measure_with_unit.value_component );
33503      END_IF;
33504    END_IF;
33505    RETURN( retval );
33506
33507  END_FUNCTION;
33508
33509  FUNCTION value_range_aggregate_rep_item(
33510               agg : AGGREGATE OF representation_item
33511           ) : BOOLEAN;
33512
33513    BEGIN
33514      IF SIZEOF( QUERY ( i1 <* agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.' + 'MEASURE_REPRESENTATION_ITEM' ) IN
33515          TYPEOF( i1 ) ) ) ) = 6 THEN
33516        RETURN( TRUE );
33517      ELSE
33518        RETURN( FALSE );
33519      END_IF;
33520    END;
33521
33522  END_FUNCTION;
33523
33524  FUNCTION value_range_wr1(
33525               agg : compound_item_definition
33526           ) : BOOLEAN;
33527
33528    BEGIN
33529      IF ( SIZEOF( agg ) = 2 ) AND ( ( SIZEOF( QUERY ( i1 <* agg | ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
33530          + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i1 ) ) ) ) = 2 ) OR ( SIZEOF( QUERY ( i2 <* agg | (
33531          'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VALUE_REPRESENTATION_ITEM'  IN TYPEOF( i2 ) ) ) ) = 2 ) ) THEN
33532        RETURN( TRUE );
33533      ELSE
33534        RETURN( FALSE );
33535      END_IF;
33536    END;
33537
33538  END_FUNCTION;
33539
33540  FUNCTION value_range_wr2(
33541               agg : compound_item_definition
33542           ) : BOOLEAN;
33543
33544    BEGIN
33545      IF ( SIZEOF( QUERY ( i <* agg | ( i\representation_item.name = 'upper limit' ) ) ) = 1 ) AND ( SIZEOF( QUERY ( i <* agg |
33546          ( i\representation_item.name = 'lower limit' ) ) ) = 1 ) THEN
33547        RETURN( TRUE );
33548      ELSE
33549        RETURN( FALSE );
33550      END_IF;
33551    END;
33552
33553  END_FUNCTION;
33554
33555  FUNCTION value_range_wr3(
33556               agg : compound_item_definition
33557           ) : BOOLEAN;
33558
33559    BEGIN
33560      IF SIZEOF( QUERY ( i1 <* agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.MEASURE_REPRESENTATION_ITEM' IN
33561          TYPEOF( i1 ) ) AND ( SIZEOF( QUERY ( i2 <* agg | ( ( 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.'
33562          + 'MEASURE_REPRESENTATION_ITEM'  IN TYPEOF( i2 ) ) AND ( i1 :<>: i2 ) AND ( i1\measure_with_unit.unit_component :=: i2\
33563          measure_with_unit.unit_component ) ) ) ) = 1 ) ) ) ) = 2 THEN
33564        RETURN( TRUE );
33565      ELSE
33566        RETURN( FALSE );
33567      END_IF;
33568    END;
33569
33570  END_FUNCTION;
33571
33572  FUNCTION values_space_of(
33573               expr : generic_expression
33574           ) : maths_space;
33575
33576    LOCAL
33577      typenames : SET OF STRING := TYPEOF( expr );
33578      e_prefix  : STRING := 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.';
33579    END_LOCAL;
33580    IF ( schema_prefix + 'MATHS_VARIABLE' ) IN typenames THEN
33581      RETURN( expr\maths_variable.values_space );
33582    END_IF;
33583    IF ( e_prefix + 'EXPRESSION' ) IN typenames THEN
33584      IF ( e_prefix + 'NUMERIC_EXPRESSION' ) IN typenames THEN
33585        IF expr\numeric_expression.is_int THEN
33586          IF ( e_prefix + 'INT_LITERAL' ) IN typenames THEN
33587            RETURN( make_finite_space( [expr\int_literal.the_value] ) );
33588          ELSE
33589            RETURN( the_integers );
33590          END_IF;
33591        ELSE
33592          IF ( e_prefix + 'REAL_LITERAL' ) IN typenames THEN
33593            RETURN( make_finite_space( [expr\real_literal.the_value] ) );
33594          ELSE
33595            RETURN( the_reals );
33596          END_IF;
33597        END_IF;
33598      END_IF;
33599      IF ( e_prefix + 'BOOLEAN_EXPRESSION' ) IN typenames THEN
33600        IF ( e_prefix + 'BOOLEAN_LITERAL' ) IN typenames THEN
33601          RETURN( make_finite_space( [expr\boolean_literal.the_value] ) );
33602        ELSE
33603          RETURN( the_booleans );
33604        END_IF;
33605      END_IF;
33606      IF ( e_prefix + 'STRING_EXPRESSION' ) IN typenames THEN
33607        IF ( e_prefix + 'STRING_LITERAL' ) IN typenames THEN
33608          RETURN( make_finite_space( [expr\string_literal.the_value] ) );
33609        ELSE
33610          RETURN( the_strings );
33611        END_IF;
33612      END_IF;
33613      RETURN( ? );
33614    END_IF;
33615    IF ( schema_prefix + 'MATHS_FUNCTION' ) IN typenames THEN
33616      IF expression_is_constant( expr ) THEN
33617        RETURN( make_finite_space( [expr] ) );
33618      ELSE
33619        RETURN( make_function_space( sc_equal, expr\maths_function.domain, sc_equal, expr\maths_function.range ) );
33620      END_IF;
33621    END_IF;
33622    IF ( schema_prefix + 'FUNCTION_APPLICATION' ) IN typenames THEN
33623      RETURN( expr\function_application.func.range );
33624    END_IF;
33625    IF ( schema_prefix + 'MATHS_SPACE' ) IN typenames THEN
33626      IF expression_is_constant( expr ) THEN
33627        RETURN( make_finite_space( [expr] ) );
33628      ELSE
33629        RETURN( make_elementary_space( es_maths_spaces ) );
33630      END_IF;
33631    END_IF;
33632    IF ( schema_prefix + 'DEPENDENT_VARIABLE_DEFINITION' ) IN typenames THEN
33633      RETURN( values_space_of( expr\unary_generic_expression.operand ) );
33634    END_IF;
33635    IF ( schema_prefix + 'COMPLEX_NUMBER_LITERAL' ) IN typenames THEN
33636      RETURN( make_finite_space( [expr] ) );
33637    END_IF;
33638    IF ( schema_prefix + 'LOGICAL_LITERAL' ) IN typenames THEN
33639      RETURN( make_finite_space( [expr\logical_literal.lit_value] ) );
33640    END_IF;
33641    IF ( schema_prefix + 'BINARY_LITERAL' ) IN typenames THEN
33642      RETURN( make_finite_space( [expr\binary_literal.lit_value] ) );
33643    END_IF;
33644    IF ( schema_prefix + 'MATHS_ENUM_LITERAL' ) IN typenames THEN
33645      RETURN( make_finite_space( [expr\maths_enum_literal.lit_value] ) );
33646    END_IF;
33647    IF ( schema_prefix + 'REAL_TUPLE_LITERAL' ) IN typenames THEN
33648      RETURN( make_finite_space( [expr\real_tuple_literal.lit_value] ) );
33649    END_IF;
33650    IF ( schema_prefix + 'INTEGER_TUPLE_LITERAL' ) IN typenames THEN
33651      RETURN( make_finite_space( [expr\integer_tuple_literal.lit_value] ) );
33652    END_IF;
33653    IF ( schema_prefix + 'ATOM_BASED_LITERAL' ) IN typenames THEN
33654      RETURN( make_finite_space( [expr\atom_based_literal.lit_value] ) );
33655    END_IF;
33656    IF ( schema_prefix + 'MATHS_TUPLE_LITERAL' ) IN typenames THEN
33657      RETURN( make_finite_space( [expr\maths_tuple_literal.lit_value] ) );
33658    END_IF;
33659    IF ( schema_prefix + 'PARTIAL_DERIVATIVE_EXPRESSION' ) IN typenames THEN
33660      RETURN( drop_numeric_constraints( values_space_of( expr\partial_derivative_expression.derivand ) ) );
33661    END_IF;
33662    IF ( schema_prefix + 'DEFINITE_INTEGRAL_EXPRESSION' ) IN typenames THEN
33663      RETURN( drop_numeric_constraints( values_space_of( expr\definite_integral_expression.integrand ) ) );
33664    END_IF;
33665    RETURN( ? );
33666
33667  END_FUNCTION;
33668
33669  FUNCTION vector_difference(
33670               arg1, arg2 : vector_or_direction
33671           ) : vector;
33672
33673    LOCAL
33674      ndim   : INTEGER;
33675      mag2   : REAL;
33676      mag1   : REAL;
33677      mag    : REAL;
33678      res    : direction;
33679      vec1   : direction;
33680      vec2   : direction;
33681      result : vector;
33682    END_LOCAL;
33683    IF ( NOT EXISTS( arg1 ) ) OR ( NOT EXISTS( arg2 ) ) OR ( arg1.dim <> arg2.dim ) THEN
33684      RETURN( ? );
33685    ELSE
33686
33687      BEGIN
33688        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF( arg1 ) THEN
33689          mag1 := arg1\vector.magnitude;
33690          vec1 := arg1\vector.orientation;
33691        ELSE
33692          mag1 := 1;
33693          vec1 := arg1;
33694        END_IF;
33695        IF 'AP242_MANAGED_MODEL_BASED_3D_ENGINEERING_MIM_LF.VECTOR' IN TYPEOF( arg2 ) THEN
33696          mag2 := arg2\vector.magnitude;
33697          vec2 := arg2\vector.orientation;
33698        ELSE
33699          mag2 := 1;
33700          vec2 := arg2;
33701        END_IF;
33702        vec1 := normalise( vec1 );
33703        vec2 := normalise( vec2 );
33704        ndim := SIZEOF( vec1.direction_ratios );
33705        mag := 0;
33706        res := dummy_gri || direction( vec1.direction_ratios );
33707        REPEAT i := 1 TO ndim BY 1;
33708          res.direction_ratios[i] := ( mag1 * vec1.direction_ratios[i] ) - ( mag2 * vec2.direction_ratios[i] );
33709          mag := mag + ( res.direction_ratios[i] * res.direction_ratios[i] );
33710        END_REPEAT;
33711        IF mag > 0 THEN
33712          result := dummy_gri || vector( res, SQRT( mag ) );
33713        ELSE
33714          result := dummy_gri || vector( vec1, 0 );
33715        END_IF;
33716      END;
33717    END_IF;
33718    RETURN( result );
33719
33720  END_FUNCTION;
33721
33722  FUNCTION ypr_index(
33723               ypr : ypr_enumeration
33724           ) : INTEGER;
33725    CASE ypr OF
33726      yaw  :         RETURN( 1 );
33727      pitch :         RETURN( 2 );
33728      roll :         RETURN( 3 );
33729      END_CASE;
33730    RETURN( ? );
33731
33732  END_FUNCTION;
33733
33734END_SCHEMA;
33735